文章目录
SQL语法之DQL
DQL:Data Query Language,数据查询语言,算是SQL的入门级语言,也是最常用到的SQL语言。
基础查询
语法
SELECT
查询列表
FROM
表名;
特点
- 查询列表可以是:表中的字段、常量值、表达式、函数。
- 查询结果是一个虚拟的表格。
实战
# 选择要操作的表
USE myemployees;
1.查询表中的单个字段
SELECT
last_name
FROM
employees;
2.查询表中的多个字段
SELECT
`last_name`,
#``着重号,作用区分字段与关键字
email,
salary
FROM
employees;
3.查询表中的所有字段
SELECT
*
FROM
employees;
4.查询常量值(SQL是不区分字符和字符串)
SELECT
100;
SELECT
'tom';
说明: 字符型和日期类型的常量值必须用单引号引起来。
5.查询表达式
SELECT
100 % 98;
6.查询函数
SELECT
VERSION();
7.起别名
起别名的好处:
- 便于理解。
- 如果要查询的字段有重名情况,使用别名可以区分开来。
说明:AS可有可无。
#方式一:
SELECT
last_name AS 姓,
first_name AS 名
FROM
employees;
#方式二:
SELECT
last_name 姓,
first_name 名
FROM
employees;
注意: 别名中包含空格、关键字、特殊字符时需要使用单引号或双引号。
#案例:查询salary,显示结果为out put
SELECT
salary AS "out put"
FROM
employees;
8.去重(DISTINCT)
#案例:查询员工表中涉及到的所有的部门编号
SELECT DISTINCT
department_id
FROM
employees;
9.“+”的作用
- 在SQL中只能当作运算符,不能当作连接符。
- 两个操作数都为数值型,则作加法运算,如
SELECT 100 + 90; - 其中一方为字符型,试图将字符型数值转换成数值型,如果转换成功则继续作加法运算,如
SELECT '100' + 90; - 如果转换失败则将字符型数值转换为0,再进行加法运算,如
SELECT 'tomato' + 90; - 只要其中一方为null,则结果比为null,如
SELECT null + 90;
10.字符串的拼接(CONCAT(字符1,字符2,…)函数)
#案例:查询员工名和姓连接成一个字段,并显示为 姓名
SELECT
CONCAT(last_name, " ", first_name) AS 姓名
FROM
employees;
注意: 拼接字段时,有一个字段值为NULL,结果即为NULL。因此,我们需要引入IFNULL(字符,指定的值)函数解决这一问题。
SELECT
CONCAT(
employee_id,
",",
first_name,
",",
email,
",",
IFNULL(commission_pct, 0)
) AS "out put"
FROM
employees;
补充: ISNULL(字符)函数,判断某字段或表达式是否为null,如果是返回1,否则返回0。
条件查询
语法
SELECT 3
查询列表
FROM 1
表名
WHERE 2
筛选条件;
补充: SQL语句的执行顺序并不一定是按照从上到下依次执行的。
分类
1. 按条件表达式筛选
条件运算符:>、<、=、!=/<>(两种符号都标识不等于,推荐使用后者,后者为SQL标准符号)、>=、<=、<=>(安全等于)
2. 按逻辑表达式筛选
作用:用于连接条件表达式
逻辑运算符:&&/AND、||/OR、!/NOT,(斜杠前后的符号含义完全相同,但均推荐后者,原因同上,不再赘述。)
3. 模糊查询(也属于条件表达式)
模糊查询的运算符:LIKE、BETWEEN AND、IN、IS NULL、IS NOT NULL
实战
1. 按条件表达式筛选
- 案例1:查询工资大于12000的员工信息
SELECT
*
FROM
employees
WHERE
salary > 12000;
- 案例2:查询部门编号不等于90的员工名和部门编号
SELECT
last_name,
department_id
FROM
employees
WHERE
department_id <> 90;
- 案例3:查询工资为12000的员工信息
SELECT
*
FROM
employees
WHERE
salary <=> 12000;
2.按逻辑表达式筛选
- 案例1:查询工资在10000到20000之间的员工名、工资以及奖金
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE
salary >= 10000
AND salary <= 20000;
- 案例2:查询部门编号不在90到110之间的,或者工资高于15000的员工信息
SELECT
*
FROM
employees
WHERE
department_id < 90
OR department_id > 110
OR salary > 15000;
SELECT
*
FROM
employees
WHERE
NOT (
department_id >= 90
AND department_id <= 110
)
OR salary > 15000;
3.模糊查询(也属于条件表达式)
LIKE
特点:一般和通配符搭配使用,不仅限于字符型,也适用于数值类型。
通配符说明:
% 任意多个字符,包含0个字符。
_ 任意单个字符。
- 案例1:查询员工名中包含字符a的员工信息
SELECT
*
FROM
employees
WHERE
last_name LIKE "%a%";
- 案例2:查询员工名中第三个字符为c,第五个字符为h的员工名和工资
SELECT
last_name,
salary
FROM
employees
WHERE
last_name LIKE "__c_h%";
- 案例3:查询员工名中第二个字符为_的员工名
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_\_%';
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_$_%' ESCAPE '$';
说明: 当SQL语句中需要使用特殊字符时,可以使用“\”进行转义;也可以使用自定义符号配合ESCAPE达到这一需求。(推荐使用后者)
BETWEEN AND
特点:
1.使用BETWEEN AND可以提高语句的简洁度。
2.包含临界值。
3.两个临界值不能调换顺序。
- 案例1:查询员工编号在100到120之间的员工信息
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 100
AND 120;
IN
含义:判断某字段的值是否属于IN列表中的某一项。
特点:
1.使用IN提供语句简洁度。
2.IN列表的值类型必须一致或兼容。
- 案例1:查询工种编号是IT_PROG、AD_VP、AD_RES中的员工的名称、工种编号
SELECT
last_name,
job_id
FROM
employees
WHERE
job_id = 'IT_PROG'
OR job_id = 'AD_VP'
OR job_id = 'AD_RES';
SELECT
last_name,
job_id
FROM
employees
WHERE
job_id IN ('IT_PROG', 'AD_VP', 'AD_RES');
IS NULL,IS NOT NULL
说明:=或<>不能用于判断NULL值,IS NULL或IS NOT NULL可以判断NULL值。
- 案例1:查询没有奖金的员工名和奖金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NULL;
- 案例2:查询有奖金的员工名和奖金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NOT NULL;
对比一下:IS NULL和<=>
- IS NULL 仅仅可以判断NULL值,但是可读性较高,建议使用。
- <=> 既可以判断null值,又可以判断普通数值,但是可读性较低。
《带你走进MySQL》专题
目录:
最新更新(每天二十三点前更新):
关联文章:
参考资料:
-
视频资料:
MySQL基础+高级篇-尚硅谷 P1~P15
P1—P15《第一章 初识MySQL》、P16—P36《第二章 SQL语法之DQL》 -
网络资料:
Markdown语法图文全面详解(10分钟学会)
本文详细介绍了SQL中的DQL(Data Query Language),包括基础查询和条件查询。基础查询涵盖字段、常量、表达式、函数、别名、去重等内容,条件查询涉及各种条件表达式、逻辑表达式和模糊查询。通过实例演示了LIKE、BETWEEN AND、IN、IS NULL等操作符的使用,帮助读者掌握SQL查询的基本技巧。

502

被折叠的 条评论
为什么被折叠?



