约束介绍
对表中的数据进行限定,保证数据的正确性,有效性和完整性。
约束分类
1.主键约束: primary key
2.非空约束: not null
3.唯一约束: unique
4.外键约束: foreign key
操作
添加/删除主键约束的方式
- 建表示添加
mysql> create table 表名(
>列名1 数据类型 primary key,
>列名2 数据类型
>);
mysql> create table 表名(
>列名1 数据类型,
>列名2 数据类型,
>constraint pk_列名1 primary key(列名1)
>);
mysql> create table 表名(
> 列名1 数据类型,
> 列名2 数据类型,
> primary key(列名1)
> );
- 使用 alter 语句添加/删除
--添加主键约束
mysql> alter table 表名 add constraint pk_id primary key(id);
mysql> alter table 表名 add primary key(id);
mysql> alter table 表名 modify 列名 数据类型 primary key;
--删除主键约束:
mysql> alter table 表名 drop primary key;
联合主键
- 建表时添加
mysql> create table 表名(
> 列名1 数据类型,
> 列名2 数据类型,
> constraint pk_列名 primary key(列名1,列名2)
> );
mysql> create table 表名(
> 列名1 数据类型,
> 列名2 数据类型,
> primary key(列名1,列名2)
> );
- 使用 alter 语句添加/删除
mysql> alter table 表名 add constraint pk_列名1_列名2 primary key(列名1,列名2);
mysql> alter table 表名 add primary key(列名1,列名2);
唯一约束
1.创建表的时候添加约束
mysql> CREATE TABLE stu(
> id INT ,
> phone_number VARCHAR(20) UNIQUE
> );
2.创建表以后添加约束
mysql> ALRER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
3.删除约束
mysql> ALTER TABLE stu DROP INDEX iphone_number;
外键约束
1.在创建表的时候,可以添加外键
*语法:
mysql> create table 表名(
> .....
外键列
> constraint 外键名称 foreign key 外键列名称 references 主表名称(主表列名称)
);
2.在创建表之后再添加外键
mysql> ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY 外键列名称 REFERENCES 主表名称(主表列名称);
3.删除外键
mysql> ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
4.级联操作
1.级联更新 ON UPDATE CASCADE
2.级联删除 ON DELETE CASCADE
外键栗子
mysql> create table b(
> cno int(3) primary key,
> cname varchar(128) not null unique
> );
mysql> create table a(
> sno int(3) primary key,
> sname varchar(32) not null,
> classno int(3),
> constraint t_student_class_fk foregin key(classno) references b(cno)
> );