数据库(MySQL)——Day2(数据库的查询操作)

这篇博客主要介绍了MySQL数据库的查询操作,包括查询语句的逻辑执行顺序、FROM和WHERE部分的用法,如逻辑运算符(=,BETWEEN AND,IN,ISNULL等)、投影规则(SELECT *和指定字段)、排序(ORDER BY)以及分片(LIMIT和OFFSET)。还强调了DISTINCT关键字用于消除重复行,以及在排序和分页中的应用。

一、数据库的查询

 

1. 查询语句语法和逻辑执行顺序

2. from部分

注意1:

 3. where部分

(1)mysql中的逻辑运算符

 A. = 和<=>

a. <=> :就是逻辑运算符中的全等,能够进行NULL 和 NULL之间的比较,视为true(1)

b. = :判断是否相等,不能进行NULL和NULL之间的比较。

B. BETWEEN AND :注意:这里是闭区间

a. 用法

 b. 实例

C. IN :

a. 用法:

b. 实例

D. 关于NULL的理解来分析ISNULL和ISNOTNULL

a. 

注意:第三条是在进行布尔运算的时候才能看作是false

b. 关于null和其他值的比较,不能简单的使用 = 或者! =。单使用这两种只会得到null。需要使用is null或者is not null。或者是使用<=>逻辑相等

E. 关于字符串的模式匹配:like

a. 通配符

b. 一些例子

c. sql中的select实例 

 

 (2)与非

A. AND运算符的优先级高于OR运算符的

B. 支持扩号,扩号的优先级最高

(3)where部分小结

4. select部分

(1)select逻辑上,表示对记录进行了投影,实际上就是选定了展示哪些列

注意:由于上面的解释,因此有下列注意

 (2)投影规则:

A. 直接写个*,代表所有字段都展示,并且展示的顺序按照建表的顺序来,select*不太建议使

B.  给出字段名称,字段与字段之间用逗号分割

注意:这里的字段名称可以写为全名称(表名称+字段名称或者是库名+表名+字段名), 因此可以出现下列例子

 C. 有字段或者常数参与的表达式

例如:

 

 注意:表达式是一行记录一行记录的运算,例如上面的total + current 是一行一行计算的

 D. 投影出来的字段,可以起别名

 E. 字段也支持函数运算,这里不一一例举了。(实践中不建议使用mysql函数,性能很差)

下面写几个例子

 F. select distinct 字段或者表达式(不能是*)

a. 规则:注意,这里的相同的记录指的是字段或者表达式相同的记录

 b. 例子:上面是每家distinct,下面是加了distinct

c. 注意:有了distinct + 字段,就不能有其他的字段了。因为如果出现其他字段,那么根据不同的字段投影出的行数都不一样,那么就会造成冲突,例如下列报错例子。

 G. 投影小结

 5. 检索排序,order by

(1)如果没有指定排序规则,则认为检测出来的顺序是无序的。

(2)order by其中的order 是排序的意思,by是以什么作为依据进行排序

A. 语法

order by + 字段1 + 升降序(如果不写,默认为升序;升序为asc,降序为desc),字段2 + 升降序...;

从左到右依次根据字段和升降序进行多次排序,每次排序的规则由逗号分开

(3)当根据字符串字段进行排序,和字符集的排序规则相关(建库时候选定的排序规则)

(4)如果用来排序的字段,存在多条该字段相同的记录的情况,那么这些记录之间的顺序依旧是处于无序

A.  例子如下:

 B. 为了解决这个问题,就需要二次排序,甚至是多次排序

以上面的例子来说,这三个根据total来排序,则这三个记录的相对顺序是无序的,那么可以根据bid再次排序,则这三个记录的相对顺序就确定了,例如下面的例子。

 

 (5)order by 可以对表达式进行排序

 6. 分片

(1)分片规则:

A. 必须在已经有序的结果上才有确定的结果

B. offset和limit:

a. offset表示偏移量,其实就是记录的起点,也就是从哪条记录开始取(记录的起点是从0开始的)。

b. limit表示最多取得记录的条数(如果不够则不展示)。

(2)语法

 (3)利用分片实现分页

 7. 基本查询总结

 注意:from和select的时候可以起别名,别名只能在当前语句生效。从from的时候起的别名,其他地方都能用,因为逻辑上数据源最开始。在select中起的别名只能在排序和分片中使用,也是根据逻辑上

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值