MySQL
- 一、基本查询
- 对列中的数据进行运算
- 列的别名
- 查询结果去重
- 二、排序查询
- 三、条件查询
- 值判断
- 逻辑判断(and、or、not)
- 区间判断(between and)
- NULL值判断(IS NULL、IS NOT NULL)
一、基本查询
语法:SELECT 列名1,列名2,列名3 FROM 表名
#查询t_employees表中所有员工的所有信息
SELECT * FROM t_employees;
SELECT 所有的列名 FROM t_employees;
经验:生产环境下,优先使用列名查询。*的方式虽然看起来便捷,但实际上需要转换成全列名,效率低,可读性差
对列中的数据进行运算
语法:SELECT 列名+2,列名*5,列名/13 FROM 表名
没有%,%在数据库里代表的是占位符。
列的别名
语法:列名 AS ‘想叫的列名’
#查询员工表中所有员工的编号、姓名、日薪(列的运算 / 22),列名均为中文
SELECT EMPLOYEE_ID AS '编号',FIRST_NAME AS '姓',LAST_NAME AS '名',SALARY / 22 AS'日薪' FROM t_employees;
#起别名,没有对原表的列名发生影响
查询结果去重
语法:distinct 列名
#查询员工表中,所有经理的ID编号
SELECT DISTINCT MANAGER_ID AS '经理编号' FROM t_employees;
#查询员工表中,所有的工资 (去掉重复的)
SELECT DISTINCT SALARY FROM t_employees;
二、排序查询
SELECT 列名 FROM 表名 ORDER BY 排序列名 [排序规则]
#查询员工的编号,名字,薪资,按照工资进行升序排序
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees ORDER BY salary ASC;
#查询员工的编号,名字,薪资,按照姓名进行升序排序
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees ORDER BY FIRST_NAME;
#查询员工的编号,名字,薪资,按照工资进行降序排序
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees ORDER BY salary DESC;
经验:当进行升序排序时,排序规则可以不显示声明。默认为升序排序规则
三、条件查询
语法: SELECT 列名 FROM 表名 WHERE 条件
值判断
#查询工资为2500的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees WHERE salary = 2500;
#查询姓为Steven的
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees WHERE FIRST_NAME='Steven';
#查询员工工资大于6000的员工的信息
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees
WHERE salary>=6000;
#查询员工工资不等于2500的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees
WHERE salary<>2500;(!=同理)
逻辑判断(and、or、not)
#查询员工工资在6000~10000的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees
WHERE salary>=6000 AND salary<=10000;
#查询工资是10000的或者是9000的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees
WHERE salary =10000 OR salary = 9000;
#查询除了工资是10000的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees
WHERE NOT salary =10000;
区间判断(between and)
#区间判断 包含区间边界的两个值
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees
WHERE salary BETWEEN 6000 AND 10000;
注意:between and要遵循 between 小值 and 大值;
NULL值判断(IS NULL、IS NOT NULL)
#查询出 没有经理编号的员工 IS NULL
SELECT EMPLOYEE_ID,FIRST_NAME,MANAGER_ID FROM t_employees
WHERE MANAGER_ID IS NULL;
#查询出 没有经理编号以外的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,MANAGER_ID FROM t_employees
WHERE MANAGER_ID IS NOT NULL;
#查询出 没有经理编号以外的员工信息(此处NOT为取反。两个结果)
SELECT EMPLOYEE_ID,FIRST_NAME,MANAGER_ID FROM t_employees
WHERE NOT MANAGER_ID IS NULL;