一、DOL 查询数据
DOL-语法
编写顺序
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
执行顺序
SELECT
字段列表 4
FROM
表名列表 1
WHERE
条件列表 2
GROUP BY
分组字段列表 3
HAVING
分组后条件列表 3
ORDER BY
排序字段列表 5
LIMIT
分页参数 6
1、DQL-基本查询
查询多个字段
SELECT 字段1,字段2,字段3,...FROM 表名;
SELECT * FROM 表名;
设置别名
(as可以省略)
SELECT 字段1 [AS ‘别名1’],字段2 [AS ‘别名2’] FROM 表名;
去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
2、条件查询
语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
条件
比较运算符
=
<
<=
=
<>或!= (不等于)
BETWEEN…AND…(在某个范围之内,包含最小、最大值)
IN(…) (在in之后的列表中的值,多选一)
LIKE 占位符 (模糊匹配( _ 代表单个字符,% 代表任意个字符))
IS NULL (是空)
逻辑运算符
AND或&&
OR或||
NOT或!
例:
--查询年零等于18
select * from table1 where age == 18;
--查询没有身份证号的员工
select * from table1 where idcard is null;
--查询有身份证号的员工
select * from table1 where idcard is not null;
--查询姓名为两个字的员工信息
select * from table1 where name like '--';
--查询身份证号最后一位是x的员工信息
select * from table1 where iscard like '%x';
3、聚合函数
将一列数据作为一个整体,进行纵向计算
常见聚合函数
count (统计数量)
max(最大值)
min (最小值)
avg(平均值)
sum(求和)
语法
SELECT 聚合函数(字表列段) FROM 表名;
例:
--统计总数
select count(*) from table1;
select count(id) from table1;
--统计最大年龄
select max(age) from table1;
4、分组查询
1)语法
SELECT 字段列表 FROM 表名[WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件]
2)where和having区别
执行时机不同,where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以
例:
--根据性别分组,统计男性员工和女性员工的数量
select gender, count(*) from table1 group by gender;
--根据性别分组,统计男性员工和女性员工的平局年龄
select gender ,avg(age) from table1 group by gender;
--查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select count(*) address_count from table1 where age <45 group by workaddress having address_count >= 3;
5、排序查询
1)语法
SELECT 子表列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式;
2)排序方式
ASC:升序(默认值)
DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
例:
--根据年龄对公司的员工进行升序排序
select * from table1 order by age asc;
--根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序
select * from order by age,asc,entrydate desc;
6、分页排序
语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
注意:
起始索引从0开始 = (查询页码-1)*每页显示记录数
分页查询是数据库的方言,不同的数据库有不通过的实现,MySQL中是LIMIT。
如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10.
例:
--查询第一页的员工数据就,每页显示10条数据
select * from table1 limit 0,10;
select * from table1 limit 10;
--查询第2页员工数据,每页展示10条数据
select * from table1 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 ’用户名‘@’主机名‘;
例
--创建用户 itcast,只能够在当前主机localhost访问,密码123456
create user ’itcast‘@’localhost‘ identified by '123456';
--创建用户heima,可以在任意主机访问该数据库,密码123456
create user ’heima‘@’%‘ identified by '123456';
--修改用户heima 的访问密码为1234
alter user ’heima‘@’%‘ identified with mysql_native_password by'1234';
--删除itcast@localhost用户
DROP ’itcast‘@’localhost‘;
2、权限控制
ALL,ALL PRIVILEGES 所有权限
SELECT 查询数据
INSERT 插入数据
UPDATE 修改数据
DELETE 删除数据
ALTER 修改表
DROR 删除数据库/表/视图
CERATE 创建数据库/表
1)查询权限
SHOW GRANTS FOR ’用户名‘@’主机名‘;
2)授予权限
GRANT 权限列表 ON 数据库名,表名 TO ’用户名‘@’主机名‘;
3)撤销权限
REVOKE 权限列表 ON 数据库名,表名 FROM ’用户名‘@’主机名‘;
例:
--查询权限
show grents for ’heima‘@’%‘;
--授予权限
grant all on itcast,* to’heima‘@’%‘;
--撤销权限
revoke all on itcast,* from ’heima‘@’%‘;