SQL通用语法
-
SQL语句可以单行或多行书写,以分号结尾
-
SQL语句可以用空格/缩进来增强语句的可读性
-
MySQL数据库的SQL语句不区分大小写、关键字(建议使用大写)
-
注释:
单行注释: --注释内容 或 #注释内容(MySQL特有)
多行注释: /* 注释内容*/
SQL分类
DDL
(Data Definition Language)
说明:数据定义语言,用于定义数据库对象(数据库、表、字段)
DDL-数据库操作
DDL-表操作
查询:
创建:
举例:
修改:
删除:
DML
(Data Manipulation Language)
说明:数据操作语言,用于对数据库表中的数据进行增删改
DML-插入数据
添加数据 | INSERT |
---|---|
修改数据 | UPDATE |
删除数据 | DELETE |
注意:
1. 插入数据时,指定的子段顺序需要与值的顺序是一一对应的
1. 字符串和日期型数据应该包含在引号中
1. 插入的数据大小,应该在字段的规定范围内
DML-修改数据
注意: 如果没有 WHERE 条件,则会修改整张表的所有数据
举例:
DML-删除数据
注意:
1. DELETE语句的条件可有可没有,没有则会删除整张表中所有数据
1. DELETE语句不能删除某一个字段的值(可以使用UPDATE)
举例:
DQL(重要)
(Data Query Language)
说明:数据查询语言,用于查询数据库中表的记录
基础查询
举例:
查字段和设置别名
去重
DQL-条件查询(WHERE)
- 语法:
- 条件:
- 举例:
查询idcard非空的数据
查询男性中年龄小于等于50岁的数据
查询姓名为两个字的员工信息
DQL-聚合函数
- 介绍
将一列数据作为一个整体,进行纵向计算
- 常见聚合函数
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
- 语法
注意:NULL值不参与统计
- 举例
DQL-分组查询
- 语法
- WHERE与HAVING的区别
执行时机不同:
where是分组之前进行过滤,不满足where条件的不参与分组;而having是分组之后对结果进行过滤。
判断条件不同:
where不能对聚合函数进行判断,having可以。
- 注意
执行顺序: where > 聚合函数 > having
分组之后,查询的子段一般为聚合函数和分组字段,查询其他字段无任何意义
- 举例
根据年龄分组,统计 男性员工 和 女性员工 的数量
根据性别分组,统计 男性员工 和 女性员工 的平均年龄
查询年龄小于20的员工,并根据工作地址分组,获取员工数量大于等于2的工作地址
DQL-排序查询
- 语法
- 排序方式
ASC:升序(默认)
DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
-
举例
根据年龄对公司的员工进行升序排序
根据入职时间,对员工进行升序排序,若年龄相同,则根据入职时间降序排序
DQL-分页查询
- 语法
注意:
- 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数
- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL是LIMIT
- 如果查询的是第一页数据,起始索引可以省略,直接简写为LIMIT 10
- 举例
查询第1页员工数据,每页显示10条记录
DQL-案例
#查询年龄在20-23的女性员工信息
SELECT * FROM emp WHERE gender = '女' && age IN(20,21,22,23);
# 查询性别为男,并且年龄在20-40岁的姓名为三个字的员工
SELECT * FROM emp WHERE gender = '男' AND age BETWEEN 20 AND 40 AND name LIKE '___';
#统计员工表中,年龄小于60岁的,男性员工和女性员工人数
SELECT gender,COUNT(*) FROM emp WHERE age < 60 GROUP BY gender;
# 查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,相同则按入职时间降序排序
SELECT name,age FROM emp WHERE age <= 35 ORDER BY age ASC,entrydate DESC;
# 查询性别为男,且年龄在20-40之间的前五个员工信息,对查询结果按年龄升序排序,相同则按入职时间升序排序
SELECT * FROM emp WHERE gender = '男' AND age BETWEEN 20 AND 40 ORDER BY age ASC,entrydate ASC LIMIT 5;
DQL-编写与执行顺序
语法编写顺序:
语法执行顺序:
DCL
(Data Control Language)
说明:数据控制语言,控制数据访问权的指令,例如控制特定用户账户对数据表、查看表、存储程序、用户自定义函数等数据库对象的控制权。
DCL-管理用户
DCL-权限控制
常用权限:
权限 | 说明 |
---|---|
ALL,ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/视图 |
CREATE | 创建数据库/表 |
其他权限,可参考官方文档
常用操作:
注意:
- 多个权限之间,用逗号分隔
- 授权时,数据库名和表名可以用 * 进行通配,代表所有
举例
给每个员工排工号,统一为5位数,不足5位的前面补0