![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库SQL
文章平均质量分 70
我愿成为你头顶的云
学无止境,尽量减少自己的无知。
展开
-
mysql中替换字段的部分内容
如果想替换表中所有记录的某一个字段的指定字符串内容,可以使用mysql提供的replace()函数来实现。表记录如下:我想将address字段的湖北这部分内容替换成拼音hubei,那么sql语句如下:update user set address = replace(address,'湖北','hubei');执行后的结果:可以看到替换是成功的。再将email字段的qq邮箱全部替换为163邮箱,那么同理,sql语句:update user set email = replace(email,原创 2021-06-20 16:07:15 · 4432 阅读 · 0 评论 -
物理删除和逻辑删除
物理删除和逻辑删除1、物理删除2、逻辑删除以前一直就以为数据库中的删除就是指delete语句(纯小白的认知),现在知道数据库中的删除主要有物理删除和逻辑删除,物理删除是从数据表中真的将记录剔除掉,不会再保留,无法再查询到,也就是通过delete语句删除。而逻辑删除并不会真的从表中剔除数据,而是使用一个标记字段,进行逻辑删除时只需更新这个标记字段的值就行了,查询时附带这个字段值作为限制就可以达到删除的目的。1、物理删除delete from people where id = 13;执行后的表:原创 2021-06-14 18:34:29 · 4168 阅读 · 2 评论 -
MySQL中int和date的相互转换
int和date的互转1、业务场景2、Date转int(添加 / 修改时)3、int转Date(查询时)4、小结1、业务场景因为我的实体类中有个Date类型的属性,但是数据表中对应字段的类型却是int类型的,所以才会有这么一个需求,要求添加或修改记录的时候将Date类型转换成Int存进表,查询的时候将int转换为Date类型展示出来,如果不转换的话,进行增删或查询的时候一定会报错。2、Date转int(添加 / 修改时)需要借助MySQL提供的UNIX_TIMESTAMP()函数来转换。代码如下:原创 2021-06-14 17:45:58 · 5653 阅读 · 0 评论 -
MySQL中的随机查询
MySQL中的随机查询1、单表随机查询2、多表随机查询1、单表随机查询这个以前不知道,也是最近遇到的,需要从数据记录中随机取出指定条目的数据,于是上网查了一下,才知道还有这个用法,记录一下。需要查询的表如下:现在表中一共有8条数据,我只想取5条,且要求每次是随机取5条,没有固定顺序。SQL语句如下:SELECT * FROMUSER ORDER BY rand() LIMIT 5;执行查询语句3次,结果如下:可以看到,3次取的结果是随机的,并没有什么固定顺序,是完全随机原创 2021-06-14 17:18:43 · 1158 阅读 · 0 评论 -
MySQL中查询和删除重复行
关于MySQL中的重复行1、重复行的定义2、单字段重复2.1、查询重复记录2.2、删除多余行3、多字段重复3.1、查询重复记录3.2、删除多余行4、小结1、重复行的定义在不同的业务场景中,可能我们对重复行的定义不一样,比如以下的表记录:在某些场景下,我们把name字段重复的记录称为重复行,而在另一些场景下,我们把name和address都重复的记录称为重复行,或者把name,sex,birth,address这4个字段都重复的记录称为重复行,具体可区分为两大类:单字段重复和多字段重复,无论是哪一种,原创 2021-06-14 16:58:39 · 6327 阅读 · 1 评论 -
MySQL基础
MySQL基础原创 2021-03-22 23:55:30 · 195 阅读 · 0 评论 -
Oracle数据库相关
Oracle数据库相关1、数据库系统2、数据库2.1、数据库的结构2.2、数据库种类3、SQL语言4、Oracle数据库4.1、下载及安装4.2、服务的开启4.3、GUI工具4.4、用户的创建4.5、表空间4.5.1、概念4.5.2、表空间的作用4.5.3、创建表空间4.5.3、删除表空间4.6、数据库表4.6.1、相关说明4.6.2、数据表的创建4.6.3、数据表的查询4.6.4、数据表的修改4.6.5、数据表的删除4.7、数据约束4.7.1、数据约束的目的4.7.2、主键约束4.7.3、外键约束4.7.原创 2021-02-04 20:09:56 · 1051 阅读 · 0 评论 -
oracle中的行列转置
前言以前接触过通用SQL中的行列转置,行转列使用聚合函数sum | max 然后结合case when then else end 语句就可以实现,而列转行使用union或union all来实现。这样做其实有点麻烦,而在oracle数据中,专门提供了这样的函数来实现行列转置功能。通用SQL行列转置1、行转列先准备好数据表stu_score,表中数据如下:现在想要实现以下的效果:通用的SQL如下:SELECT NAME 姓名, max( CASE SUBJECT WHEN '语文' T原创 2020-08-20 10:37:09 · 4834 阅读 · 0 评论 -
SQL中的行列转置
前言在实际的开发过程中,我们可能会遇到这样的需求:需要将一行数据按照列拆分为多行,或者是需要将多行数据通过扩展列的形式合并为一行。这在SQL上一般称为行列转置,也就是将行转为列,列转为多行。下面我们一起来看看行列转置是如何实现的。行列转置1、行转列行转列实际上是将多行数据按照某个相同的值通过扩展列的形式合并为一行数据。以下通过一个实例来说明。事先准备好3张表:student5表、score5表、subject5表。student5表数据如下:score5表数据如下:由于表中数据过多,所以这原创 2020-08-19 22:45:33 · 18217 阅读 · 4 评论 -
集合查询
前言我们在学习数学的时候,接触过集合的概念,数学中集合的运算有交集、并集、差集。同样的,在SQL中这个概念也是适用的,值得注意的是,MySQL中只支持并集union、union all,对于交集和差集并不能很好的支持,但是可以采用其他的操作来实现,只是比较麻烦一点,这里就不做介绍了。而oracle能直接提供语法来支持并集、交集、差集操作,使用起来比较方便,下面将逐一介绍。集合运算图在介绍之前,我们先看一下并集、交集、差集的运算图,概念就不说了。并集并集有重叠的部分,运算时会去除掉重复的部分。交原创 2020-08-19 13:36:41 · 3174 阅读 · 0 评论 -
表连接查询
前言我们在写SQL语句查询的时候,常常需要将多张表进行连接, 而连接也分几种:left join(左连接)、right join(右连接)、inner join(内连接)、full join(全连接)。不同的连接方式会导致不同的查询结果。下面,我们来看看以上几种连接的区别。连接查询准备两张数据表aaa和bbb。aaa表如下:一共8条数据。bbb表如下:一共7条数据。1、左连接使用left join on。以左表为准,左表中的所有数据一定会显示出来,左表中有而右表中没有的数据右表会置为nu原创 2020-08-19 08:30:15 · 1293 阅读 · 0 评论 -
join语句的执行顺序
前言通常我们写的一个完整的SQL语句都可以拆分成多个子句,子句的执行过程通常会产生虚拟表。什么是虚拟表呢?虚拟表,英文为virtual table,简称为vt。顾名思义,就是实际上并不存在,至少在物理上是不存在的,但是在逻辑上却是存在的表。在MySQL中,有三种虚拟表:临时表、内存表和视图,这里不作详细的介绍,有兴趣的话可以自行查阅资料。回到正题,一条完整的SQL语句在执行的过程中会被拆分为多个SQL子句,每个子句执行时都会产生虚拟表vt,但是最终结果只会返回最后一个虚拟表。从这个思路入手,来理解一下jo原创 2020-08-19 06:54:56 · 6329 阅读 · 0 评论 -
left join连接条件放在on和放在where后面的区别
前言在SQL的查询中,我们经常会使用到left join左连接进行多表连接查询,使用的时候,根据条件的筛选,我们有的时候是将筛选条件放在on后面用and连起来,有时候是将筛选条件写在where的过滤中,那么这两种方式的写法有什么区别吗?查询后的结果是怎样的?下面让我们一起来看一下。我们事先准备好两张数据表样,第一张表中的数据如下:第二张表的数据如下:下面分别将筛选条件放在on后面和放在where后面进行试验。1、条件放在on的后面写一条SQL语句进行查询,这里的筛选条件为左表的id值为1,S原创 2020-08-18 06:30:48 · 2453 阅读 · 0 评论 -
MySQL中删除重复行
1、重复行的定义在数据库的表中,往往会有重复的数据行,什么是重复的数据行,这个要根据具体业务而定。如下表:这里将name和address都相同的定义为相同的数据行,现在想要去掉重复的数据行,只保留一条数据行,去掉其余相同的行。比如name为陆小凤address为藏剑山庄的有3条相同记录,想要删掉其余2条重复的,注意,这里用的数据库是MySQL,下面将演示如何去掉重复数据。2、找出重复数据行我们可以先找出重复的数据行,SQL如下:select name,addressfrom d8group原创 2020-08-17 21:53:12 · 6074 阅读 · 0 评论 -
数据库的三大范式
什么是范式?首先我们要了解什么是范式,可以简单的理解为规范。正式一点的概念是:**范式是符合某一设计要求的总结,要想设计出一个结构合理的关系型数据库,就必须要满足一定的范式。**我们为了建立冗余较小、结构合理的数据库,所以在数据库设计时必须遵循一定的规则,而我们把在关系型数据库中的这种规则称为范式。注意,范式只适用于关系型数据库。关系型数据库中的三大范式在实际开发的过程中,我们用的比较多的是三大范式,当然还有反三范式,这里不做讨论。三大范式的概念如下:第一范式(1NF):每列具有原子性,即不可分割。原创 2020-08-17 09:01:05 · 143 阅读 · 0 评论