声明:以下内容为根据黑马数据库视频教程,个人整理的笔记,方便记录学习。
SQL基础之SQL分类
- SQL分类详细知识导图
- SQL四种类型的全称和说明
- 案例SQL语句编写
- DDL
- 数据库操作
- 表操作
- DML
- 添加数据
- 修改数据
- 删除数据
- DQL
- 条件查询
- 聚合函数
- 分组查询
- 排序查询
- 分页查询
- DCL
- 管理用户案例
- 权限控制案例
SQL分类详细知识导图
SQL四种类型的全称和说明
案例SQL语句编写
DDL
数据库操作
查询当前数据库,切换数据库,查看数据库的表
select database();
use test;
show tables;
表操作
创建一张表,表结构如下:
建表语句
表操作案例
DML
添加数据
案例: 给employee表所有的字段添加数据 ;
insert into employee(id,workno,name,gender,age,idcard,entrydate) values (1,'1','Itcast','男',10,'123456789012345678','2000-01-01');
如果是给全部字段添加数据:
insert into employee values(2,'2','张忌','男',18,'123456789012345670','2005-01-01');
批量添加数据
insert into employee values(3,'3','韦笑','男',38,'123456789012345670','2005-01-01'),(4,'4','赵敏','女',18,'123456789012345670','2005-01-01');
修改数据
修改某一条数据**(带条件)**
update employee set name = 'itheima' where id = 1;
修改所有数据**(不带条件)**
update employee set entrydate = '2008-01-01';
删除数据
删除性别为女的员工
delete from employee where gender = '女';
删除所有员工
delete from employee;
DQL
条件查询
A. 查询年龄等于 88 的员工
select * from emp where age=88;
B. 查询年龄小于 20 的员工信息
select * from emp where age<20;
C. 查询年龄小于等于 20 的员工信息
select * from emp where age<=20;
D. 查询没有身份证号的员工信息
select * from emp where idcard is null;
E. 查询有身份证号的员工信息
select * from emp where idcard is not null;
F. 查询年龄不等于 88 的员工信息
select * from emp where age != 88;
或
select * from emp where age <> 88;
G. 查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息
select * from emp where age>=15 and age<=20;
或
select * from emp where age>=15 && age<=20;
或
select * from emp where age between 15 and 20;
H. 查询性别为 女 且年龄小于 25岁的员工信息
select * from emp where gender='女' and age<25;
或
select * from emp where gender='女' && age<25;
I. 查询年龄等于18 或 20 或 40 的员工信息
select * from emp where age=18 or age=20 or age=40;
或
select * from emp where age in(18,20,40);
J. 查询姓名为两个字的员工信息
select * from emp where name like '__';
K. 查询身份证号最后一位是X的员工信息
select * from emp where idcard like '%X'
或
select * from emp where idcard like '_________________X';
聚合函数
count、max、min、avg、sum
A. 统计该企业员工数量
select count(*) from emp;
B. 统计该企业员工的平均年龄
select avg(age) from emp;
C. 统计该企业员工的最大年龄
select max(age) from emp;
D. 统计该企业员工的最小年龄
select min(age) from emp;
E. 统计西安地区员工的年龄之和
select sum(age) from emp where address='西安';
分组查询
A. 根据性别分组 , 统计男性员工 和 女性员工的数量
select gender,count(*) from emp group by gender;
B. 根据性别分组 , 统计男性员工 和 女性员工的平均年龄
select gender,avg(age) from emp group by gender;
C. 查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址
select address,count(*) address_count from emp where age < 45 group
by address having address_count>=3;
D. 统计各个工作地址上班的男性及女性员工的数量
select address,gender,count(*) 数量 from emp group by gender,address;
排序查询
A. 根据年龄对公司的员工进行升序排序
select * from emp order by age;
或
select * from emp order by age asc;
B. 根据入职时间, 对员工进行降序排序
select * from emp order by entrydate desc;
C. 根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序
select * from emp order by age asc,entrydate desc;
分页查询
A. 查询第1页员工数据, 每页展示10条记录
select * from emp limit 0,10;
或
select * from emp limit 10;
B. 查询第2页员工数据, 每页展示10条记录
select * from emp limit 10,10;
起始索引= (页码-1)*页展示记录数
综合案例
1). 查询年龄为20,21,22,23岁的女员工信息。
select * from emp where gender = '女' and age in (20,21,22,23);
2). 查询性别为 男 ,并且年龄在 20-40 岁(含)以内的姓名为三个字的员工。
select * from emp where gender='男' and (age between 20 and 40) and name like '___';
3). 统计员工表中, 年龄小于60岁的 , 男性员工和女性员工的人数。
select gender,count(*) from emp where age <60 group by gender;
4). 查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。
select name,age * from emp where age <= 35 order by age asc,entrydate desc;
5). 查询性别为男,且年龄在20-40 岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。
select * from emp where gender='男' and (age between 20 and 40) order by age asc,entrydate asc limit 5;
DCL
管理用户案例
A. 创建用户itcast, 只能够在当前主机localhost访问, 密码123456;
create user 'itcast'@'localhost' identified by '123456';
B. 创建用户heima, 可以在任意主机访问该数据库, 密码123456;
(这里用%来通配)
create user 'heima'@'%' identified by '123456';
C. 修改用户heima的访问密码为1234;
alter user 'heima'@'%' identified with mysql_native_password by '1234';
D. 删除 itcast@localhost 用户
drop user 'itcast'@'localhost';
权限控制案例
A. 查询 ‘heima’@‘%’ 用户的权限
show grants for 'heima'@'%';
B. 授予 ‘heima’@‘%’ 用户itcast数据库所有表的所有操作权限
grant all on itcast.* to 'heima'@'%';
C. 撤销 ‘heima’@‘%’ 用户的itcast数据库的所有权限
revoke all on itcast.* from 'heima'@'%';