## MySQL语句的分类
```mysql
DDL语句;数据库定义语言,用来定义数据库对象(数据库,表,字段)
DML语句;数据库操作语言,用来对数据库中的表进行增删改
DQL语句;数据库查询语言,用来查询数据库中表的记录
DCL语句;数据库控制语言,用来创建数据库用户,控制数据库的访问权限
```
## DDL语句-数据操作
```mysql
show databases;查询所有数据库
select database();查询当前数据库
create database数据库名;创建数据库
drop database数据库名;删除数据库
use 数据库名;使用那个数据库
show tables;查询当前数据库所有表
desc 表名;查询表结构
show create table 表名;查询指定表的建表语句
```
## DDL-表操作
```mysql
创建表
[]可不写
create table 表名(
字段1 字段1类型[comment 字段1注释],
字段2 字段2类型[comment 字段2注释],
字段3 字段3类型[comment 字段3注释],
.....
)[comment 表注释];
修改表
添加字段
alter table 表名 add 字段名 类型(长度)[comment 注释];
修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释];
删除字段
alter table 表名 drop 字段名;
修改表名
alter table 表名 rename to 新表名;
删除表
drop table if exists 表名;
删除指定表,并重新创建该表
truncate table表名;
```
## DML语句操作
**数据库操作语言,就是用来对数据库中表的数据记录进行增删改操作**
```mysql
添加数据(insert)
修改数据(update)
删除数据(delete)
添加数据(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,...);
修改数据(update)
update 表名 set 字段名1=值1,字段名2=值2,...[where 条件];
删除数据(delete)
delete from 表名 [where 条件]
```
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ULsfXCMS-1652372204937)(D:\学习笔记\images\Snipaste_2022-03-10_09-27-49.png)]
## DQL语句操作
**DQL语句(数据查询语言)用来查询数据库中表的记录**
```mysql
DQL语法
select 字段列表
from 表名列表
where 条件列表
group by 分组字段列表
having 分组后条件列表
order by 排序字段列表
limit 分页参数
```
### DQL-基本查询
```mysql
1.查询多个字段
select 字段1,字段2,字段3...from 表名;
select *from 表名;
2.设置别名
select 字段1[as 别名2],字段1[as 别名2]...from 表名;
3.去除重复记录
select distinct 字段列表 from 表名;
举例:
1.查询指定字段 name,workno,age 返回
select name,workno,age from user;
2.查询所有字段返回
select id,workno,name,gender,age,idcard from user;
3.查询所有员工的工作地址,起别名
select workaddress as'工作地址'from user;
4.查询公司员工的上班地址(不要重复)
select distinct workaddress'工作地址'from user;
```
### DQL-条件查询
```mysql
select 字段列表 from 表名 where 条件列表;
举例:
1.查询年龄等于88的员工
select *from user where age=88;
2.查询年龄小于28的员工信息
select *from user where age<28;
3.查询年龄小于等于20的员工信息
select *from user where age<=20;
4.查询没有身份证号的员工信息
select *from user where idcard is null;
5.查询有身份证号的员工信息
select *from user where idcard is not null;
6.查询年龄不等于88的员工信息
select *from user where age !=88;
7.查询年龄在15岁(包含)到20岁(包含)之间的员工信息
select *from user where age >=15 && age<=20;
select *from user where age >=15 and age<=20;
select *from user where age beween 15 and 20;
8.查询性别为女且年龄小于25岁的员工信息
select *from user where gender='女'and age<25;
9.查询年龄等于18或20或40的员工信息
select *from user where age=18 or age=20 or age=40;
select *from user where age in(18,20,40);
10.查询姓名为两个字的员工信息
select *from user where name like'__';
11.查询身份证号最后一位是X的员工信息
select *from user where idcard like'%X';
```
### DQL-聚合函数
**聚合函数就是将一列数据作为一个整体,进行纵向计算。**
```mysql
常见的聚合函数
count------统计数量
max--------最大值
min--------最小值
avg--------平均值
sum--------求和
语法:
select 聚合函数(字段列表)from 表名;
举例:
1.统计班级人数
select count(*)from user;
select count(id)from user;
2.统计该企业员工的平均年龄
select avg(age)from user;
3.统计该企业员工的最大年龄
select max(age)from user;
4.统计该企业员工的最小年龄
select min(age)from user;
5.统计太原地区员工年龄之和
select sum(age)from user where workaddress='太原';
--分组查询:group by
--select 字段列表 from 表名 group by 分组字段名称;
--注意事项: 1)查询的字段列表中可以使用 分组字段
2)group by之后不能使用聚合函数
-- 筛选查询 having
-- where条件,group by,having 必须先有条件,分组,然后才筛选!
-- 注意:筛选的后面可以使用聚合函数,group by的后面是不能使用聚合函数的
分页查询 limit
-- select 字段列表 from 表名 limit 起始行数,每页显示的条数;
-- 起始行数:从0开始算的,
-- 起始行数 = (当前页码-1)*每页显示的条数
-- 前提条件:每页显示2条,
# 数据库备份
```
-- 数据库的备份和还原
-- 方式1:图形界面化工具
备份:选中库名,右键----->BACKUP/Export 备份导出---->选中Sql脚本,存储到本地某个磁盘上----->StructureAndData:表的结构和数据都需要备份
还原:先在SqlYog将myee_2203删除了,新建库右键---->Import 导入---->选中执行execute sql 脚本
-- 数据库的备份和还原命令行的方式2
备份:
以管理员身份进入dos,不需要登录mysql
保存到指定路径上
mysqldump -uroot -p你的密码 库名 > 磁盘上的路径xx\xx\xx.sql
还原:
进入dos控制台,登录mysql
先将库删除,新建一个库
使用这个库 use库名;
加载指定路径的sql脚本
source 备份的sql脚本路径