SELECT selection_list /*要查询的列名称*/
FROM table_list /*要查询的表名称*/
WHERE condition /*行条件*/
GROUP BY grouping_columns /*对结果分组*/
HAVING condition /*分组后的行条件*/
ORDER BY sorting_columns /*对结果排序*/
LIMIT offset_start, row_count/*结果限定*/
#查询表的所有列
SELECT * FROM stu;
#查询部分列
SELECT sid,sname FROM stu;
#查询性别为女,并且年龄65的记录 [AND]
SELECT *FROM stu WHERE age=65 AND gender='female';
#查询学号为S_1001,或者姓名为liSi的记录 [OR]
SELECT * FROM stu WHERE sid='s_1001' OR sname='lisi';
#查询学号为S_1001,S_1002,S_1003的记录 [IN]
SELECT * FROM stu WHERE sid IN ('s_1001','s_1002','s_1003');
#查询学号不是S_1001,S_1002,S_1003的记录 [NOT IN]
SELECT * FROM stu WHERE sid NOT IN ('s_1001','s_1002','s_1003');
#查询年龄为null的记录 [IS NULL]
SELECT * FROM stu WHERE age IS NULL;
#查询年龄在20到40之间的学生记录 [BETWEEN AND]
SELECT * FROM stu WHERE age>=20 AND age<=40;
SELECT * FROM stu WHERE age BETWEEN 20 AND 40;
#查询性别非男的学生记录 [!= <>]
SELECT * FROM stu WHERE gender!='male';
SELECT * FROM stu WHERE gender<>'male';
SELECT * FROM stu WHERE NOT gender='male';
#查询年龄不为null的学生记录
SELECT * FROM stu WHERE age IS NOT NULL;
SELECT * FROM stu WHERE NOT age IS NULL;
#查询姓名由5个字母构成的学生记录
SELECT * FROM stu WHERE sname LIKE '_____';
#查询姓名由5个字母构成,并且第5个字母为"i"的学生记录
SELECT * FROM stu WHERE sname LIKE '____i';
#查询姓名以"z"开头的学生记录
SELECT * FROM stu WHERE sname LIKE 'z%';
#查询姓名中第2个字母为"i"的学生记录
SELECT * FROM stu WHERE sname LIKE '_i%';
#查询姓名中包含"a"字母的学生记录
SELECT * FROM stu WHERE sname LIKE '%a%';
#去除工资相同的 [DISTINCT]
SELECT DISTINCT sal FROM emp;
#查看雇员的月薪与佣金之和 [AS]
SELECT *,sal+comm FROM emp;#在没有NULL值的时候可以使用
SELECT *,sal+IFNULL(comm,0) FROM emp;#将NULL值替换为0
#给列名添加别名
SELECT *,sal+IFNULL(comm,0) AS 'total' FROM emp;
SELECT ename '员工姓名',job '职务',sal '月薪' FROM emp;
#查询所有学生记录,按年龄升序排序
SELECT * FROM stu ORDER BY age;
#查询所有学生记录,按年龄降序排序
SELECT * FROM stu ORDER BY age DESC;
#查询所有雇员,按月薪降序排序,如果月薪相同时,按编号降序排序
SELECT * FROM emp ORDER BY sal,empno DESC;