mysql
外键约束等级 cascade(随着更改) set null(设置为null) Restrict(默认,不让更改)
# 外键约束
drop database test;
create database test;
use test;
create table t_department (
did int primary key auto_increment,
dname varchar(255)
);
create table t_employee (
eid int primary key auto_increment,
ename varchar(255),
did int,
foreign key (did) references t_department(did) on update cascade on delete set null
);
insert into t_department(dname) values('销售部'),('宣传部'),('人事部');
insert into t_employee(ename,did) values('小红',3),('小帅',1),('小王',2);
update t_department set did = 4 where did = 3;# t_employee 中对应的该部门的员工的did会自动改变
delete from t_department where did = 2; # t_employee 中对应的该部门的员工的did会自动变为null
# 默认的外键约束
drop database test;
create database test;
use test;
create table t_department (
did int primary key auto_increment,
dname varchar(255)
);
create table t_employee (
eid int primary key auto_increment,
ename varchar(255),
did int,
foreign key (did) references t_department(did)
);
insert into t_department(dname) values('销售部'),('宣传部'),('人事部');
insert into t_employee(ename,did) values('小红',3),('小帅',1),('小王',2);
update t_department set did = 4 where did = 3; # 不让更改
delete from t_department where did = 2; # 不让删除
1
事务的四个特性
原子行,一致性,持久性,隔离性
2
事务的两种状态
提交(commit) 和 回滚(rollback)
3
手动提交事务的方式
# set autocommit = false;
set autocommit = false;
sql语句。。。。
commit 或者 rollback
sql语句。。。
commit 或者 rollback
。。。
。。。
# set autocommit = false; 会将当前连接的自动提交关闭,每次手动commit或者手动rollback都是一次事务的结束,可以通过set autocomit = true 将自动提交再次打开
# 在MySQL中会自动提交事务,默认每一条sql语句就是ige事务
# start transaction;
start transaction;
sql语句...
..
commit 或者 rollback
# 这意识一个事务,start transaction并不会想set autocommit = false一样使的整个连接都不会自动提交事务,它在这个事务提交之后,连接还是会自动提交事务(可以理解为只是单独的临时开启一个手动提交的事务)
4
mysql 清空表内的数据
delete from tablename [ where ..] // 将表内的数据一条一的删除,可以回滚
truncate tablename // 将表散出然后重新建立,不可以回滚,自增的值会重新重1开始自增
5
查看字符集对应的编码规则
SHOW COLLATION WHERE Charset LIKE '%utf8%';
6
查看字符集
show variables like 'character_%';