DQL(Data Query Language
):数据查询语言
一、基础查询
1、查询表中的单个字段
SELECT last_name FROM employee;
2、查询表中的多个字段
SELECT last_name, salary, email FROM emploees;
3、查询表中的所有字段
SELECT * FROM employees;
# 4. 查询函数
SELECT VERSION();
# 5. 起别名
/*
1⃣️、便于理解
2⃣️、AS 可以省略
*/
SELECT 100%98 AS 结果;
SELECT last_name AS 姓, first_name AS 名 FROM employees;
# 6. 去重
# 栗子:查询员工表中涉及到的所有的部门编号
SELECT DISTINCT department_id FROM employees;
# 7. + 号的作用
/*
java 中 + 号:
1⃣️ 运算符,两个操作数都为数值型
2⃣️ 连接符,只要有一个操作数为字符串
mysql 中的 + 号:仅仅只有一个功能:运算符
// 当两个数都为数值型,则做加法运算
SELECT 100 + 90;
// 当其中一方为数值型,试图将字符型数值转换数值型
// 如果转换成功,则继续做加法,否则将字符型数值转换为 0
SELECT '123' + 90;
SELECT 'john' + 90;
// 只要有一方为 null ,则结果一定为 null
SELECT null + 10;
*/
# 栗子:查询员工名和姓连接成一个字段,并显示为姓名
SELECT
CONCAT(last_name, first_name) AS 姓名
FROM
employees;
二、条件查询
2.1、按条件表达式筛选
条件运算符:> < = != <> >= <=
# 栗子:查询工资 > 12000 的员工信息
SELECT
*
FROM
employees
WHERE
salary > 12000;
# 栗子:查询部门编号不等于 90 号的员工名和部门编号
SELECT
last_name,
department_id
FROM
employees
WHERE
department_id <> 90;
2.2、按逻辑表达式筛选
逻辑运算符:and or not
# 栗子:查询工资在 10000 到 20000 之间的员工名、工资以及奖金
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE
salary >= 10000
AND
salary <= 20000;
# 栗子:查询部门编号不是在 90 到 110 之间,或者工资高于 15000 的员工信息
SELECT
*
FROM
employees
WHERE
department_id < 90 OR department_id > 110 OR salary > 15000;
# NOT(department_id >= 90 AND department_id <= 110) OR salary > 15000;
三、模糊查询
like
关键字:
特点:
一般和通配符搭配使用:
%
:任意多个字符
_
:任意单个字符
# 栗子:查询员工名中包含字符 a 的员工信息
SELECT
*
FROM
employees
WHERE
last_name LIKE '%a%';
# 栗子:查询员工名中第三个字符为 e, 第五个字符为 a 的员工名和工资
SELECT
last_name,
salary
FROM
employees
WHERE
last_name LIKE '__e_a%';
# 栗子:查询员工名中第二个字符为 _ 的员工名
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_\_%';
between and
关键字:
注意事项:
1、包含临界值
2、两个临界值不要调换顺序
栗子:查询员工编号在 100 到 200 之间的员工信息
SELECT
*
FROM
emplyees
WHERE
employee_id BETWEEN 100 AND 200;
in
关键字:
# 栗子:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES 中的其中一个的员工名
SELECT
last_name
FROM
employees
WHERE
job_id in (`IT_PROG`,`AD_VP`,`AD_PRES`);
is null
关键字
/*
= 或 <> 不能用于判断 null 值
is null 或 is not null 可以判断 null 值
*/
# 栗子:查询没有奖金的员工名和奖金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NULL;
# commission_pct IS NOT NUll;
四、排序查询
语法:
SELECT
查询列表
FROM
表
ORDER BY 排序列表 [ASC|DESC]
/*
特点:asc 代表的是升序,desc 代表的是降序;如果不写,默认是升序
*/
栗子:
# 查询员工信息,要求工资从高到底排序(降序)
SELECT * FROM employees ORDER BY salary DESC;
# 查询员工信息,要求工资从低到高排序(升序)
SELECT * FROM employees ORDER BY salary ASC;
# 查询员工信息,要求先按工资升序,再按员工编号将序(按多个字段排序)
SELECT
*
FROM
employees
ORDER BY salary ASC, employee_id DESC;