讲课内容

数据约束

外键约束(了解,开发中不用)

首先先写一个表中,可以正常插入

create table employee(employee_id int primary key auto_increment, employee_name varchar(65) not null, gender char(1) default '女', dept_name varchar(10)  not null);

这时候我们发现了一个问题,员工表和部门表应该是分开的,耦合度太高了,怎么办

拆开成两张表

create table department(department_id int primary key  auto_increment, department_name varchar(10) not null default '销售部');

create table employee(employee_id int primary key auto_increment, employee_name varchar(65) not null, gender char(1) default '女', dept_id int not null);

然后发现没有部门id也能插入成功,并且删除了部门表中的字段,员工表中的数据还存在,这也是不符合逻辑的。我们可以使用外键约束使员工表中的部门id和部门表中的id进行关联。

外键约束的格式:

# 使用外键约束,让两个表的字段存在关联关系con
create table 表名(constraint 外键名 foreign key (受到约束的字段) references 约束数据表 (约束数据表中对应的字段));
# 例:create table employee(employee_id int primary key auto_increment, employee_name varchar(65) not null, gender char(1) default '女', dept_id int not null, constraint fk_employee_department foreign key (dept_id) references department (department_id));

时间戳 从1970年1月1日0点0分0秒到现在的秒数 timestamp 修饰时间的数据类型

一般会设置 default current_timestamp ,表示默认由当前时间创建

create table employee(employee_id int primary key auto_increment, employee_name varchar(65) not null, gender char(1) default '女', dept_id int not null, create_time timestamp default current_timestamp, constraint fk_employee_department foreign key (dept_id) references department (department_id));

【注意】外键约束之后会有如下特点:

1、先添加主表(部门表),再添加从表(员工表)
2、先删除从表,再删除主表
3、先修改从表,再修改主表
4、使用外键以后约束以后,数据就会变的非常乱,不利于程序员的思维方式

级联操作

使用外键的时候,操作从表和主表都会存在问题 可以使用级联,强制删除或修改外键,会直接影响到被关键的键

级联删除:
	on delete cascade
	
级联修改:
	on update cascade
# 级联删除格式
create table 表名(constraint 外键名 foreign key (受到约束的字段) references 约束数据表 (约束数据表中对应的字段) on delete cascade);
# 例如:create table employee(employee_id int primary key auto_increment, employee_name varchar(65) not null, gender char(1) default '女', dept_id int not null, create_time timestamp default current_timestamp, constraint fk_employee_department foreign key (dept_id) references department (department_id) on delete cascade);
# 级联修改格式
create table 表名(constraint 外键名 foreign key (受到约束的字段) references 约束数据表 (约束数据表中对应的字段) on update cascade);
# 例如:create table employee(employee_id int primary key auto_increment, employee_name varchar(65) not null, gender char(1) default '女', dept_id int not null, create_time timestamp default current_timestamp, constraint fk_employee_department foreign key (dept_id) references department (department_id) on update cascade);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值