mysql教程(七)创建表并添加约束

1、常见约束

  not null:非空约束,针对某个字段设置其值不为空,如:学生的姓名不能为空。

  unique:唯一约束,它可以使某个字段的值不能重复,如:email不能重复:

  primary key:主键约束,每个表应该具有主键,主键可以标识记录的唯一性,主键分为单一主键和复合(联合)主键,单一主键是由一个字段构成的,复合(联合)主键是由多个字段构成的。

  foreign key:外键约束,外键主要是维护表之间的关系的,主要是为了保证参照完整性,如果表中的某个字段为外键字段,那么该字段的值必须来源于参照的表的主键,如:emp中的deptno值必须来源于dept表中的deptno字段值。

  注意:当一个表中存在外键约束时,比如a表中有一个外键来自b表,那么删除数据的时候的时候要先删除a表中的引用记录,再删除b表中的数据。

2、一个完整的创建表并添加约束的模板

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

drop table if exists t_classes;

create table t_classes(

classes_id  int (3),

classes_name    varchar(30) not null,

constraint  pk_classes_id   primary key(classes_id)

)

 

drop table if exists t_student;

create table t_student(

student_id  int(10),

student_name varchar(50) not null,

sex char(2) not null,

birthday    date not null,

email   varchar(30) unique,

classes_id  int (3) not null,

constraint  pk_student_id   primary key(student_id),

constraint  fk_classes_id   foreign key(classes_id) references t_classes(classes_id)

)

3、级联更新与级联删除

  当一个表中存在外键约束时,删除和修改都会是一个比较令人头疼的事情,一不小心就会报错。可以采用级联的方法去解决这个问题。

  on update cascade 级联更新

1

2

3

mysql对有些约束的修改比较麻烦,所以我们可以先删除,再添加

alter table t_student drop foreign key fk_classes_id;

alter table t_student add constraint fk_classes_id_1 foreign key(classes_id) references t_classes(classes_id)  on update cascade;<br><br>

  on delete cascade 级联删除

1

2

3

4

mysql对有些约束的修改时不支持的,所以我们可以先删除,再添加

alter table t_student drop foreign key fk_classes_id;

alter table t_student add constraint fk_classes_id_1 foreign key(classes_id) references t_classes(classes_id)  on delete cascade;

delete from t_classes where classes_id = 20;

4、添加约束

  ① 添加外键约束:alter table 从表 add constraint   约束名称 foreign key 从表(外键字段) references 主表(主键字段);

  示例:alter table t_student add constraint fk_classes_id_1 foreign key(classes_id) references t_classes(classes_id);

  ② 添加主键约束:alter table 表 add constraint  约束名称  primary key  表(主键字段); 

  示例:alter table t_student add constraint pk primary key(student_id);

  ③ 添加唯一性约束:alter table 表 add constraint  约束名称 unique  表(字段); 

  示例:alter table t_student add constraint uk unique(email);

5、修改约束

  alter table t_student modify student_name varchar(30) unique;

  mysql对有些约束的修改时不支持,所以我们可以先删除,再添加

6、删除约束

  删除外键约束:alter table 表名 drop foreign key 约束名;

  删除主键约束:alter table 表名 drop primary key ;

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值