一、增加(create add insert )
1,create操作库
create database 库名 新建库
create database 库名 character set 编码表


2,create 操作表结构
新建表:
create table 表名(
id int primary key auto_increment,
name varchar(20),
………….
);
primary key 主键约束(该列唯一值)
auto_increment 主键表自动增长
add 添加字段 alter table 表名 add 列名 数据类型 约束

3,insert 操作表数据内容
insert into 表名(列名1,列名2,列名3)values(值1,值2,值3)
insert into 表名 (列名) values (值)
insert into 表名 values (全列值)
insert into 表名 (列名1,列名,列名) values (值1,值2,值3),(值1,值2,值3)


二、删除(drop delete truncate)
1,操作库
drop database 数据库名

2,操作表结构
drop table 表名 (删除的是整个表)
alter table 表名 drop 列名 删除列
3,操作表数据
delete from 表名 where 条件
delete from 表名 (没有where条件,删的是表中所有记录,逐行删除)
truncate table 表名 (先删除表,再创建表,等于删除整个表)

start transaction 开启事务 执行delete删除,rollback 事务回滚可找回
start transaction 开启事务 执行truncate删除,rollback 事务回滚不可找回

三、修改 (alter modify change rename update)
1,操作库
use 库名:更改库

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

2,alter 修改表的结构
modify 修改约束类型 alter table 表名 modify tel varchar(50)
change 修改列名 alter table 表名 change 旧列名 新列名 数据类型 约束
rename 修改表名 alter table 旧表名 to 新表名
alter database 数据库名称 character set 编码表

3,update 操作表格数据
update 表名 set 列1 = 值1, 列2 = 值2 where 条件
where 条件:
id=6
id<>6 id 不等于6
id<=6
&& || ! and、or、not
id in(1,3,4,5)
is null为空,is not null 不为空
ifnull(值1,0);若为空,设置值为0;

四、查询(select show )
1,操作库
show databases
show create database 库名: 查看库编码表
select database(); 查看正在使用的库

2,操作表结构
show tables; 查询表
desc 表名; 查看表结构
show create table 表名; 查看表的编码

3,操作表数据
select 列名1,列名2 from 表名 查询指定列的数据
select * from 表名 查询所有列的数据

关键字:
as:重命名
like: 模糊查询 like%、%like%、like__

格式:
select 列名 as 别名 ,列名 as 别名… from 表名 where 条件1 group by 列名 having 条件2 order by 排序
说明: 条件1 会先执行过滤 -> 进行分组 -> 条件2 进行过滤

顺序说明:select …要显示的内容.. from …表名.. where 条件…. group by …分组的列 …having …分组后的条件… order by …排序?
select …5… from …1.. where …2.. group by ..3…having ..4… order by ...6.

查询排重:
select distinct 列名 from 表名 where 条件

 

五、聚合函数:
count 统计个数、sum 求和、 avg 平均值、max、 min

分组处理:group by

排序: order by 列名 asc|desc

六、多表设计
1、一对多
比如 一个部门有多个人,一个人只有一个部门
外键约束格式:
alter table 从表名称 add foreign key (外键列的名称) references 主表名称(主键)
创建表时候,直接创建主键约束
dept_id int,
foreign key (dept_id) references dept(id)
2、多对多
比如:一个项目被多个程序员写,一个程序员写多个项目
3、一对一
比如 一个人只有一份个人档案,一个档案对应一个人

七、数据备份及恢复:
1,备份
mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径
mysqldump uroot -p zhangwu> G:\mybases2.sql
Enter password:123

2,恢复
方式一:创建数据库,导入数据
create database db1:
use db1;
source G://mybases2.sql

方式二:创建数据库,命令行中输入
create database db2:
退出数据库,在dos下输入
mysql -uroot -p db2 < G://mybases2.sql
Enter password:123


八、范式:
第一范式:1NF:数据库表的每一列都是不可分割的原子数据项
第一范式每一列不可再拆分,称为原子性。

第二范式:2NF:第二范式就是在第一范式的基础上所有列完全依赖于主键列
第二范式的特点:
1) 一张表只描述一件事情。
2) 表中的每一列都完全依赖于主键

第三范式:3NF:所有列不依赖于其它非主键列,也就是在满足2NF的基础上,任何非主键列不得传递依赖于主键。
所谓传递依赖,指的是如果存在"A → B → C"的决定关系,则C传递依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:主键列 → 非主键列x → 非主键列y。

示例:学生信息表
学号 姓名 年龄 所在学院 学院地点

满足第二范式,不满足第三范式
存在传递的决定关系:
学号?所在学院 ? 学院地点

拆分成两张表
学号 姓名 年龄 所在学院的编号(外键)
学院编号 所在学院 学院地点


三大范式小结:
范式 特点
1NF 原子性:表中每列不可再拆分。
2NF 不产生局部依赖,一张表只描述一件事情。白哦中的每一列是完全依赖于主键的。
3NF 不产生传递依赖,表中每一列都直接依赖于主键。而不是通过其它列间接依赖于主键。



扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄