MySQL基础查询
查询表中所有记录
去除重复项:
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 条件;