文章目录
DML语句
1.添加数据(INSERT)
1.给指定字段添加数据:INSERT INTO 表名(字段1,字段2,…) VALUES(值1,值2,…);
2.给全部字段添加数据:INSERT INTO 表名 VALUES(值1,值2,…);
3.批量添加数据:
为指定字段添加:INSERT INTO 表名(字段名1,字段名2,…) VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…);
为表中全部字段添加:INSERT INTO 表名 VALUES(值1,值2…),(值1,值2…),(值1,值2…);
注意:1.插入数据时,指定字段顺序要与值的顺序一一对应;2.字符串和日期型数据应包含在引号中;3.插入的数据大小应该在字段的规定范围内。
2.修改数据(UPDATA)
修改数据语法:UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2,…[WHERE 条件]
若不加where语句,则修改整张表的字段名
3.删除数据(DELETE)
删除数据语法:DELETE FROM 表名 [WHERE 条件]
注意:1.DELETE的条件可以有也可以没有,若没有条件则会删除整张表的所有数据;2.DELETE语句不能删除某一个字段的值(可以用UPDATE将该字段的值置为NULL)
DQL语句
1.基础查询
(1).查询多个字段
1.查询指定多个字段:SELECT 字段1,字段2,… FROM 表名
2.查询整张表:SELECT * FROM 表名;
(2).设置别名
语法:SELECT 字段1 [AS 别名1], 字段2 [AS 别名2]… FROM 表名;
(3).去除重复记录
语法:SELECT DISTINCT 字段列表 FROM 表名;
2.条件查询
(1).基本语法
语法:SELECT 字段列表 FROM 表名 WHERE 条件列表;
(2.)条件
对于比较运算符后三中查询的举例说明
1.IN(…),可以用于查询如:查询年龄等于18或20或40的员工信息
语句:SELECT * FROM emp WHERE age in(18,20,40);
2.LIKE 占位符,用于模糊匹配,比如查询姓名为两个字的员工信息
语句:SELECT * FROM emp WHERE name LIKE ‘__’;
又如查询身份证号末尾是X的员工信息
语句:SELECT * FROM emp WHERE idcard LIKE ‘%X’;
3.聚合函数
(1).什么是聚合函数
概念:将一列数据作为一个整体,进行纵向计算,作用于某一列(字段)
(2).常见聚合函数
(3).语法
语法:SELECT 聚合函数(字段列表) FROM 表名;
- 统计员工数量:SELECT COUNT(*) FROM emp;
- 统计有身份证号的员工数量:SELECT COUNT(idcard) FROM emp;
- 统计员工最大年龄:SELECT MAX(age) FROM emp;
- 统计西安地区员工的年龄之和:SELECT SUM(age) FROM emp WHERE workaddress = ‘西安’;
注意:NULL值不参与所有聚合函数的计算
4.分组查询
(1).语法
**语法:**SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
WHERE与HAVING的区别:
- 执行时机不同:WHERE是分组前进行过滤,不满足WHERE条件的不参与分组;HAVING对分组后的结果进行过滤
- 判断条件不同:WHERE不能对聚合函数进行判断,而HAVING可以
(2).示例
基础查询
-
根据性别分组,统计男性员工与女性员工数量
SELECT gender, COUNT(*) FROM emp GROUP BY gender;
-
根据性别分组,统计男员工与女员工的平均年龄
SELECT gender, AVG(age) FROM emp GROUP BY gender;
分组查询
- 查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
SELECT workaddress, COUNT(*) address_count FROM emp WHERE age < 45 GROUP BY workaddress HAVING address_count >= 3;
5.排序查询
(1).语法
语法:SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
(2).排序方式
- ASC:升序(默认值)
- DESC:降序
注意:如果是多字段排序,只有当第一个字段值相同时,才会根据第二个字段进行排序
6.分页查询
(1).语法
语法:SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;
注意
- 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数
- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL是LIMIT
- 如果查询的是第一页数据,起始索引可以省略,直接简写为LIMIT 10
(2).例子
- 查询第1页员工数据,每页展示10条数据
SELECT * FROM emp LIMIT 0, 10;
-
查询第2页员工数据,每页展示10条数据**(起始索引 = (页码 - 1) * 页展示记录数)**
SELECT * FROM emp LIMIT 10, 10;
DCL语句
1.管理用户
(1).查询用户
USE mysql;
SELECT * FROM user;
(2).创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
(3).修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
(4).删除用户
DROP USER '用户名'@'主机名';
2.权限控制
1.查询权限
SHOW GRANTS FOR '用户名'@'主机名';
2.授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
3.撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
注意
- 多个权限之间使用逗号分隔
p6siO1b-1712566653895)]
1.查询权限
SHOW GRANTS FOR '用户名'@'主机名';
2.授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
3.撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
注意
- 多个权限之间使用逗号分隔
- 授权时,数据库名和表名以使用 * 进行通配,代表所有