DQL数据查询语言
SELECT书写顺序:SELECT->DISTINCT->FROM->JOIN->ON->WHERE->GROUP BY->HAVING->ORSER BY
SELECT执行顺序:FROM->ON->JOIN->WHERE->GROUP BY->HAVING->SELECT->ORSER BY
简单查询
-- 查询全部数据
SELECT * FROM TableName;
-- 查询指定列的数据
SELECT 列名 FROM TableName;
条件查询WHERE
SELECT * FROM TableName WHERE 条件;
-- > < = != >= <= IS NULL IS NOT NULL等
-- 例如:等值查询
SELECT * FROM TableName WHERE 列名 = '特定值';
LIKE模糊查询
-- %可以代替不定长的位数,而_只能对应一位
SELECT * FROM TableName WHERE 列名 LIKE '%特定值%';
SELECT * FROM TableName WHERE 列名 LIKE '_特定值_';
分组查询GROUP BY
-- 待查数据中一般会操作分组列数据
-- WHERE写在GROUP BY前, HAVING写在GROUP BY后,且HAVING不能单独使用,必须与GROUP BY一同使用
SELECT 待查数据 FROM TableName GROUP BY 列名;
连接查询
左连接
左表的记录会全部显示出来,而右表只会显示符合匹配条件的记录,匹配不到的显示为NULL
SELECT * FROM A LEFT JOIN B ON A.列名 = B.列名 WHERE 条件;
右连接
右表的记录会全部显示出来,而左表只会显示符合匹配条件的记录,匹配不到的显示为NULL
SELECT * FROM A RIGHT JOIN B ON A.列名 = B.列名 WHERE 条件;
内连接
显示左表和右表符合匹配条件的记录
SELECT * FROM A INNER JOIN B ON A.列名 = B.列名 WHERE 条件;
排序ODER BY
-- ASC 升序 DESC 降序 一般默认升序,升序可不写
SELECT * FROM TableName ORDER BY 列名 ASC/DESC;
分页LIMIT
-- LIMIT(startPage,pageSize) startPage为起始条数(从0开始计数),pageSize为展示条数
SELECT * FROM TableName LIMIT startPage,pageSize;
子查询
-- 常用写法
SELECT * FROM A, B WHERE A.列名 = B.列名 AND 其他条件;
SELECT * FROM A WHERE 列名1 IN (SELECT 列名1 FROM B WHERE 条件);
去重DISTINCT
-- 只展示不重复的数据
SELECT DISTINCT * FROM TableName;
范围查询BETWEEN AND
-- 当查询条件的数值在一个范围内或者日期在一范围内时可以使用BETWEEN AND,是闭区间
SELECT * FROM TableName WHERE 列名 BETWEEN 值1 AND 值2;
范围查询IN
-- 当待查询的条件在一个集合中时选择用IN,当待查询的条件只需等于某一个值时用=
SELECT * FROM TableName WHERE 列名 IN ('', ''[,……]);
-- 或在子查询中也常使用,避免出错;可嵌套使用
SELECT * FROM TableName1 WHERE 列名1 IN (SELECT 列名1 FROM TableName2 WHERE 条件);