查询表中所有记录
去除重复项:
SELECT DISTINCT 关键字 FROM TBL_NAME;
查找某一列
SELECT ColName1, ColName2 FROM tbl_name;
条件查找
SELECT * FROM WHERE Table_Name Val1='需要的查找数据'; #条件查询VAL加上LIKE '%需要查找的数据'
排序
SELECT * FROM tbl_name ORDER BY Val1 DESC大->小/ASC小->大; #多个字段排序使用逗号分隔val1 desc,val2 asc;
查询结果分组:#可以使用where先把数据筛选一次在分组
按照字段名分组
SELECT * FROM tbl_name GROUP BY 字段名;
配合GROUP_CONCAT()得到分组详情 #按照writer字段分组并显示bookname的详细
SELECT ID,WRITER,GROUP_CONCAT(BOOKNAME)
FROM PERSON
GROUP BY WRITER;
聚合函数:
COUNT(字段名); #统计字段数据的个数,数据为null时不统计
MAX(字段名); #统计最大值
MIN(字段名); #统计最小值
AVG(字段名); #统计平均值
SUM(字段名) ; #统计总和
分组后在统计:
WITH ROLLUP; #使用时跟在GROUP BY后
HAVING 字段+比较运算符号
显示指定行数:sql查询 limit 数字 #数字可以是3,5 表示从第3行显示,显示5行
给字段起别名
SELECT ID AS "编号", BookName AS "书名" FROM 表名; #使用测试表2017/10/21 -1
给表起别名
SELECT ID,BookName FROM table_name AS 别名;
左联结
SELECT B.ID ,A.NAME ,B.BOOKNAME
FROM WRITER A LEFT JOIN PERSON B ON A.NAME=B.WRITER; #使用测试A表2018/02/23 -2,B表2018/02/03 -1
数学运算
优先顺序 |
运算子 |
说明 |
范例 |
运算结果 |
1 |
% |
余数 |
7%2 |
1 |
1 |
MOD |
余数 |
7 MOD 2 |
1 |
1 |
* |
乘 |
7 * 3 |
21 |
1 |
/ |
除 |
7/3 |
2.333 |
1 |
DIV |
除(整数) |
7 DIV 3 |
2 |
2 |
+ |
加 |
7+3 |
10 |
2 |
减 |
7-3 |
4 |
逻辑运算子注:范例使用表2017/10/21 -1
优先顺序 |
运算子 |
说明 |
范例 |
1 |
NOT |
非 |
SELECT * FROM person WHERE NOT ID = 2; |
2 |
&& |
而且 |
SELECT * FROM person WHERE Price=40.5 && ID=8; |
2 |
AND |
而且 |
SELECT * FROM person WHERE Price=40.5 && ID=8; |
3 |
|| |
或 |
SELECT * FROM person WHERE Price=40.5 || ID=9; |
3 |
OR |
或 |
SELECT * FROM person WHERE Price=40.5 OR ID=8; |
3 |
XOR |
互斥 |
|
其它条件运算子注:范例使用表2017/10/21 -1
写法 |
说明 |
范例 |
BETWEEN……AND……; |
范围比较 |
SELECT * FROM person WHERE Price BETWEEN 40 AND 60; |
IN(……);反not in() |
成员比较 |
SELECT * FROM person WHERE Remarks IN('网络','同学'); |
IS; |
是 |
|
LINK; |
像…… |
SELECT * FROM test2 WHERE NAME LINK '%a%' name中有a; % 匹配多个字符,_单个字符 |
正则表达式:注:范例使用表2018/02/23 -1
模式 |
模式匹配的对象 |
范例 |
^ |
字符串开始的位置 |
|
$ |
字符串结尾的位置 |
|
[] |
括号之间的字符 |
|
^[] |
非括号之间的字符 |
|
p1|p2|p3 |
交替匹配模式1,模式2 |
|
多表查询
select 字段名列表 from 表1,表2 where 条件;
连接查询:
左连接查询:以左表为主
select 字段名列表 from 表1 left join 表2 on 条件;
右连接查询:以右表为主
select 字段名列表 from 表1 right join 表2 on 条件;