简单查询语句
(1) 只查询特定的列
语法:SELECT 列名1, 列名2,.. FROM 表名;
示例:查询所有的员工姓名及其工资
SELECT ename, salary FROM emp;
(2) 查询所有的列
语法:SELECT * FROM 表名;
提示:* 指代“所有列”
(3) 给列取别名,以简化或者更好的说明
语法(2种方式):
SELECT 列名 AS 别名, 列名 AS 别名 FROM 表名;
SELECT 列名 别名, 列名 别名 FROM 表名;
示例:查询所有的员工birthday(生日)、salary(月薪)、ename(姓名)
SELECT birthday AS 生日, salary AS 月薪, ename 姓名 FROM emp;
SELECT birthday AS '生日' FROM emp;
(4) 只显示列上不同的值(即合并相同的值)
语法:SELECT DISTINCT 列名 FROM 表名;
示例:查看哪些部门有员工
SELECT DISTINCT dept_id FROM emp;
(5) 按照指定列上的值排序
语法:
SELECT ... FROM ... ORDER BY 列名 [ASC]; #默认是按升序排列
SELECT ... FROM ... ORDER BY 列名 DESC; #DESC是降序排列
示例:查询员工的所有信息,记录行按照工资由小到大排序
SELECT * FROM emp ORDER BY salary;
SELECT * FROM emp ORDER BY salary DESC;
查询员工的所有信息,按照员工部门编号升序排序;若部门编号相同,再按生日降序排序
SELECT * FROM emp ORDER BY dept_id ASC, birthday DESC;
(6) 查询时进行运算
示例:查询每个员工的姓名及其年薪
SELECT ename, salary*12 AS 年薪 FROM emp;
练习:公司给每人加薪500,查询出每个员工姓名、月薪、年薪
SELECT ename, salary+500 AS 月薪, (salary+500)*12 AS 年薪 FROM emp;
(7) 查询出满足特定条件的记录行 —— 重要
语法:SELECT ... FROM ... WHERE 条件;
其中的“条件”可以是多种表达式,如:
= > < >= <= !=
示例:查询出30号部门的员工的所有信息
SELECT * FROM emp WHERE dept_id=30;
练习:查询出工资在18000及以上的员工的所有信息
SELECT * FROM emp WHERE salary>=18000;
查询出在1990-10-5日以前出生的员工所有信息
SELECT * FROM emp WHERE birthday < '1990-10-5' ORDER BY birthday;
查询出不在20号部门的员工的所有信息
SELECT * FROM emp WHERE dept_id != 20;
SELECT * FROM emp WHERE dept_id <> 20;
其中的“条件”还可以是多种表达式的组合,如
AND(并且) OR(或者) NOT(非)
示例:查询出工资在10000~20000的员工的所有信息
SELECT * FROM emp WHERE (salary<=20000) AND (salary>=10000);
练习:查询出1990年10月出生的员工;
SELECT * FROM emp WHERE (birthday>='1990-10-1') AND (birthday<='1990-10-31');
SELECT * FROM emp WHERE birthday BETWEEN '1990-10-1' AND '1990-10-31';
查询出20和30号部门的员工的所有信息
SELECT * FROM emp WHERE (dept_id=20) OR (dept_id=30);
查询出20、30、40、80号部门的员工的所有信息
SELECT * FROM emp WHERE (dept_id=20) OR (dept_id=30) OR (dept_id=40) OR (dept_id=80);
SELECT * FROM emp WHERE dept_id IN (20, 30, 40, 80);
查询出部门不在20、30、40、80范围的员工的所有信息
SELECT * FROM emp WHERE (dept_id!=20) AND (dept_id!=30) AND (dept_id!=40) AND (dept_id!=80);
SELECT * FROM emp WHERE dept_id NOT IN (20, 30, 40, 80);
补充小知识: 如何查询部门编号为NULL的员工所有信息
NULL不能用=和!=进行判定!
SELECT * FROM emp WHERE dept_id=NULL; //错误
SELECT * FROM emp WHERE dept_id IS NOT NULL;
分页查询 —— LIMIT
语法: SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT start, count;
start: 表示从满足条件的哪一行记录开始读取,第一行称为0
count:此次最多读取多少行记录
假设每一页显示5条记录:
第1页: ... LIMIT 0, 5;
第2页: ... LIMIT 5, 5;
第3页: ... LIMIT 10, 5;
第4页: ... LIMIT 15, 5;
第5页: ... LIMIT 20, 5;
...
第N页:... LIMIT (N-1)*5, 5;
练习:分页查询出所有的员工信息,只要第1页
SELECT * FROM emp LIMIT 0, 5;
分页查询出所有的员工信息,只要第2页
SELECT * FROM emp LIMIT 5, 5;
分页查询出所有的员工信息,只要第3页
SELECT * FROM emp LIMIT 10, 5; //3
分页查询出所有的员工信息,只要第4页
SELECT * FROM emp LIMIT 15, 5; //0
分页查询出10部门所有的员工信息,只要第1页
SELECT * FROM emp WHERE dept_id=10 LIMIT 0, 5;
分页查询出10部门所有的员工信息,只要第2页
SELECT * FROM emp WHERE dept_id=10 LIMIT 5, 5;
(9 )模糊查询 —— LIKE
示例:查询出姓名包含字母e的所有员工信息
SELECT * FROM emp WHERE ename='e'; //错误
SELECT * FROM emp WHERE ename='%e%'; //错误
SELECT * FROM emp WHERE ename LIKE '%e%'; //正确
SQL查询中, % 代表任意多个任意字符; _ 代表任意一个字符
练习:查询出姓名中以m结尾的员工的所有信息
SELECT * FROM emp WHERE ename LIKE '%m';
查询出姓名中倒数第二个字符是i的员工的所有信息
SELECT * FROM emp WHERE ename LIKE '%i_';
(1) 只查询特定的列
语法:SELECT 列名1, 列名2,.. FROM 表名;
示例:查询所有的员工姓名及其工资
SELECT ename, salary FROM emp;
(2) 查询所有的列
语法:SELECT * FROM 表名;
提示:* 指代“所有列”
(3) 给列取别名,以简化或者更好的说明
语法(2种方式):
SELECT 列名 AS 别名, 列名 AS 别名 FROM 表名;
SELECT 列名 别名, 列名 别名 FROM 表名;
示例:查询所有的员工birthday(生日)、salary(月薪)、ename(姓名)
SELECT birthday AS 生日, salary AS 月薪, ename 姓名 FROM emp;
SELECT birthday AS '生日' FROM emp;
(4) 只显示列上不同的值(即合并相同的值)
语法:SELECT DISTINCT 列名 FROM 表名;
示例:查看哪些部门有员工
SELECT DISTINCT dept_id FROM emp;
(5) 按照指定列上的值排序
语法:
SELECT ... FROM ... ORDER BY 列名 [ASC]; #默认是按升序排列
SELECT ... FROM ... ORDER BY 列名 DESC; #DESC是降序排列
示例:查询员工的所有信息,记录行按照工资由小到大排序
SELECT * FROM emp ORDER BY salary;
SELECT * FROM emp ORDER BY salary DESC;
查询员工的所有信息,按照员工部门编号升序排序;若部门编号相同,再按生日降序排序
SELECT * FROM emp ORDER BY dept_id ASC, birthday DESC;
(6) 查询时进行运算
示例:查询每个员工的姓名及其年薪
SELECT ename, salary*12 AS 年薪 FROM emp;
练习:公司给每人加薪500,查询出每个员工姓名、月薪、年薪
SELECT ename, salary+500 AS 月薪, (salary+500)*12 AS 年薪 FROM emp;
(7) 查询出满足特定条件的记录行 —— 重要
语法:SELECT ... FROM ... WHERE 条件;
其中的“条件”可以是多种表达式,如:
= > < >= <= !=
示例:查询出30号部门的员工的所有信息
SELECT * FROM emp WHERE dept_id=30;
练习:查询出工资在18000及以上的员工的所有信息
SELECT * FROM emp WHERE salary>=18000;
查询出在1990-10-5日以前出生的员工所有信息
SELECT * FROM emp WHERE birthday < '1990-10-5' ORDER BY birthday;
查询出不在20号部门的员工的所有信息
SELECT * FROM emp WHERE dept_id != 20;
SELECT * FROM emp WHERE dept_id <> 20;
其中的“条件”还可以是多种表达式的组合,如
AND(并且) OR(或者) NOT(非)
示例:查询出工资在10000~20000的员工的所有信息
SELECT * FROM emp WHERE (salary<=20000) AND (salary>=10000);
练习:查询出1990年10月出生的员工;
SELECT * FROM emp WHERE (birthday>='1990-10-1') AND (birthday<='1990-10-31');
SELECT * FROM emp WHERE birthday BETWEEN '1990-10-1' AND '1990-10-31';
查询出20和30号部门的员工的所有信息
SELECT * FROM emp WHERE (dept_id=20) OR (dept_id=30);
查询出20、30、40、80号部门的员工的所有信息
SELECT * FROM emp WHERE (dept_id=20) OR (dept_id=30) OR (dept_id=40) OR (dept_id=80);
SELECT * FROM emp WHERE dept_id IN (20, 30, 40, 80);
查询出部门不在20、30、40、80范围的员工的所有信息
SELECT * FROM emp WHERE (dept_id!=20) AND (dept_id!=30) AND (dept_id!=40) AND (dept_id!=80);
SELECT * FROM emp WHERE dept_id NOT IN (20, 30, 40, 80);
补充小知识: 如何查询部门编号为NULL的员工所有信息
NULL不能用=和!=进行判定!
SELECT * FROM emp WHERE dept_id=NULL; //错误
SELECT * FROM emp WHERE dept_id IS NULL; //正确
如何查询部门编号不为NULL的员工所有信息SELECT * FROM emp WHERE dept_id IS NOT NULL;
分页查询 —— LIMIT
语法: SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT start, count;
start: 表示从满足条件的哪一行记录开始读取,第一行称为0
count:此次最多读取多少行记录
假设每一页显示5条记录:
第1页: ... LIMIT 0, 5;
第2页: ... LIMIT 5, 5;
第3页: ... LIMIT 10, 5;
第4页: ... LIMIT 15, 5;
第5页: ... LIMIT 20, 5;
...
第N页:... LIMIT (N-1)*5, 5;
练习:分页查询出所有的员工信息,只要第1页
SELECT * FROM emp LIMIT 0, 5;
分页查询出所有的员工信息,只要第2页
SELECT * FROM emp LIMIT 5, 5;
分页查询出所有的员工信息,只要第3页
SELECT * FROM emp LIMIT 10, 5; //3
分页查询出所有的员工信息,只要第4页
SELECT * FROM emp LIMIT 15, 5; //0
分页查询出10部门所有的员工信息,只要第1页
SELECT * FROM emp WHERE dept_id=10 LIMIT 0, 5;
分页查询出10部门所有的员工信息,只要第2页
SELECT * FROM emp WHERE dept_id=10 LIMIT 5, 5;
(9 )模糊查询 —— LIKE
示例:查询出姓名包含字母e的所有员工信息
SELECT * FROM emp WHERE ename='e'; //错误
SELECT * FROM emp WHERE ename='%e%'; //错误
SELECT * FROM emp WHERE ename LIKE '%e%'; //正确
SQL查询中, % 代表任意多个任意字符; _ 代表任意一个字符
练习:查询出姓名中以m结尾的员工的所有信息
SELECT * FROM emp WHERE ename LIKE '%m';
查询出姓名中倒数第二个字符是i的员工的所有信息
SELECT * FROM emp WHERE ename LIKE '%i_';
版权声明:本文为tianqingmuyu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。