DQL操作
-
语法格式
SELECT [ALL|DISTINCT] <目标列的表达式1> [别名], <目标列的表达式2> [别名]…… FROM <表名或视图名> [别名], <表名或视图名> [别名]…… [WHERE<条件表达式>] [GROUP BY <列名> [HAVING <条件表达式>]] [ORDER BY <列名> [asc|desc]] [limit <数字或者列表>];
-
简化版语法
SELECT *| 列名 FROM 表 WHERE 条件
-
运算符
-
算数运算符
算数运算符 说明 + 加法运算 - 减法运算 * 乘法运算 / 或 DIV 除法运算,返回商 % 或MOD 求余运算,返回余数 -
比较运算符
比较运算符 说明 = 等于 (<) 和 (<=) 小于和小于等于 (>) 和 (>=) 大于和大于等于 <=> 完全的等于,两个操作码均为NULL时,其所得值为1;而当一个操作码为NULL时,其所得值为0 <> 或 != 不等于 IS NULL 或 ISNULL 判断一个值是否为NULL IS NOT NULL 判断一个值是否不为NULL LEAST 当有两个或多个参数时,返回最小值,如果有一个值为NULL,结果为NULL GEREATEST 当有两个或多个参数时,返回最大值,如果有一个值为NULL,结果为NULL BETWEEN AND 判断一个值是否落在两个值之间 IN 判断一个值是IN列表中的任意一个值 NOT IN 判断一个值不是IN列表中的任意一个值 LIKE 通配符匹配 REGEXP 正则表达式匹配 LIKE模糊查询的标识含义
标识 含义 % 标识零个或多个字符的任意字符串 _ (下划线)表示任何单个字符 [] 表示指定范围或集合中的任何单个字符 [^] 不属于指定范围或集合的任何单个字符 * 它同于DOS命令中的通配符,代表多个字符 ? 同于DOS命令中的?通配符,代表单个字符 # 代表单个数字 [!] 排除,它只代表单个字符 -
逻辑运算符
逻辑运算符 说明 NOT 或 ! 逻辑非 AND 或 && 逻辑与 OR 或 || 逻辑或 XOR 逻辑异或 -
位运算符
位运算符 说明 | 按位或 & 按位与 ^ 按位异或 (<<) 按位左移 (>>) 按位右移 ~ 按位取反,反转所有比特 位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。
-
-
排序查询
-
介绍
如果我们需要对读取的数据进行排序,我们就可以使用MySQL的order by子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。
-
语法
SELECT 字段名1, 字段名2, …… FROM 表名 ORDER BY 字段名1 [asc|desc], 字段名2[asc|desc]……
-
特点
-
asc代表升序, desc代表降序,如果不写默认升序
-
order by用于子句中可以支持单个字段,多个字段,表达式,函数,别名
-
order by子句,放在查询语句的最后面。LIMIT子句除外
-
-
-
聚合查询
-
介绍
之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个单一的值;另外聚合函数会忽略空值。
聚合函数 作用 count() 统计指定列不为NULL的记录行数 sum() 计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0 max() 计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算 min() 计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算 avg() 计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0 -
NULL值的处理
-
count函数对NULL值的处理:
如果count函数的参数为星号(*), 则统计所有记录的个数。而如果参数为某字段,不统计含NULL值的记录个数。
-
sum和avg函数对NULL值的处理;
这两个函数忽略NULL值的存在,就好像该记录不存在一样。
-
max和min函数对NULL值的处理:
max和min两个函数同样忽略NULL值的存在。
-
-
-
分组查询
-
介绍
分组查询是指使用group by字句对查询信息进行分组。
-
语法
SELECT 字段1, 字段2…… FROM 表名 GROUP BY 分组字段 HAVING 分组条件;
如果要进行分组的话,则SELECT子句之后,只能出现分组的字段和统计函数,其他的字段不能出现。
-
条件筛选——having
-
分组之后对统计结果进行筛选的话必须使用HAVING,不能使用WHERE
-
WHERE子句用来筛选FROM子句中指定的操作所产生的行
-
GROUP BY子句用来分组WHERE子句的输出
-
HAVING子句用来从分组的觉果中筛选行
-
-
-
分页查询
-
介绍
分页查询在项目开发中常见,由于数据量很大,显示屏长度有限,因此对数据需要采取分页显示方式。
-
语法
-- 方式1 显示前n条 SELECT 字段1, 字段2…… FROM 表名 LIMIT n -- 方式2 分页显示 SELECT 字段1, 字段2…… FROM 表名 LIMIT m, n m:整数,表示从第几条索引开始,计算方式(当前页-1)* 每页显示条数 n:整数,表示查询多少条数据
-
-
INSERT INTO SELECT语句
-
介绍
将一张表的数据导入到另一张表中,可以使用INSERT INTO SELECT语句。
-
语法
INSERT INTO Table2(field1, field2, ……) SELECT value1, value2, …… FROM Table1 或者: INSERT INTO Table2 SELECT * FROM Table1
要求目标表Table2必须存在
-
-
正则表达式
-
介绍
正则表达式(regular expression)表述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常用来检索、替换那些符合某个规则的文本
MySQL通过REGEXP关键字支持正则表达式进行字符串匹配。
-
格式
模式 描述 . 匹配任意单个字符 ^ 匹配字符串的开头 $ 匹配字符的末尾 * 匹配前一个元字符0到多次 + 匹配前一个元字符1到多次 ? 匹配前一个元字符0到1次 {m} 匹配前一个字符m次 {m,} 匹配前一个字符m次到多次 {m, n} 匹配前一个字符m到n次 {m, n}? 匹配前一个字符m到n次,并且取尽可能少的情况 \ \ 对特殊字符进行转义 [] 一个字符的集合,可匹配其中任意一个字符 | 逻辑表达式”或者“,比如a|b代表可匹配a或者b (...) 被括起来的表达式作为一个元组。findall()在有组的情况下只显示组的内容
-