MySQL 表的约束条件

1.主键约束

主键约束要求主键列的数据 非空且唯一

1. 在定义列时指定主键,语法规则如下
字段名 数据类型 primary key

create table book
(
bno Varchar(6) primary key,	//主键
bname Varchar(70),
press Varchar(30),
price Decimal(8,2),
author varchar(30)
)

2. 在定义完所有列之后指定主键。
constraint 约束名 primary key (字段名);
如:

create table book
(
bno Varchar(6),
bname Varchar(70),
press Varchar(30),
price Decimal(8,2),
author varchar(30),
//括号里可以输入多个字段,用逗号隔开,约束名随意
 constraint pk primary key(bno)
)

3.在创建表之后添加与删除主键

alter table 表名 modify 字段名 数据类型 primary key; //添加
alter table 表名 drop primary key; //删除

  • 添加主键
alter table book modify bno varchar(6) primary key;
  • 删除主键
alter table book drop primary key;

2.外键约束

外键用来让表与表产生关系,定义外键后,不允许删除另一个表中具有关联的字段。
外键的作用是保证数据引用的完整性。(添加外键的表为字表,另一个表是主表)

创建外键的语法规则如下:

[constraint 外键名] foreign key (字段名) reference 主表名 主表列名;

“外键名”定义了外键约束的名称,一个表中不能有相同名称的外键。

(1) 在创建表时创建外键

create table reader
(
    id int(8),
    name varchar(40),
    constraint reader_book_fk foreign key (id) references book (bno)
)

以上语句执行后,即在表reader中添加了名为reader_book_fk的外键约束,将此表中的id字段与book表中的主键bno关联了起来。(子表的外键必须关联父表的主键

(2) 在创建表之后添加与删除外键

alter table 表名 add [constraint 外键名] foreign key (字段名) references 主表名 (主表列名称); //添加

alter table 表名 drop foreign key 外键名; //删除

  • 添加外键约束(设置外键名为了后面删除方便)
alter table reader add constraint 外键名 foreign key (id) references book (bno);
  • 删除外键约束
alter table reader drop foreign key 外键名;

补充:级联操作(慎用)

当操作主表时,系统会自动的操作从表。

例如employee的 dep_id 字段department表中的 id 字段之间添加了外键约束,这时,要修改或删除department表中的id的值变得很麻烦
在这里插入图片描述phone表中的 品牌 字段 与company表中的 品牌 字段相关联。
添加了级联操作后,
修改department表中的id值,employee表中的dep_id值会自动进行修改。
删除department表中的id为1的记录,employee表中的dep_id值为1的记录会被自动删除。

添加级联操作语法:

alter table 表名 add constraint 外键名 foreign key (字段名) references 主表名
(主表列名称) on update cascade on delete cascade;

  • 级联更新:on update cascade
  • 级联删除:on delete cascade

3.非空约束

非空约束指字段的值不能为空,语法规则如下:

字段名 数据类型 not null

(1) 创建表时添加非空约束

create table book3
(
bno Varchar(6) primary key,	//主键
bname Varchar(70) not null,
press Varchar(30),
price Decimal(8,2),
author varchar(30)
)

执行后,插入数据时bname不能为空。

(2) 创建表后添加与删除非空约束,即修改字段

alter table 表名 modify 字段名 数据类型 not null;

  • 删除非空约束
alter table book3 modify bname varchar(6);
  • 添加非空约束
alter table book3 modify bname varchar(6) not null;

4.唯一约束

要求该列唯一,可为空,语法规则如下:

字段名 数据类型 unique

(1) 创建表时添加唯一约束

create table book4
(
bno Varchar(6) nuique,
bname Varchar(70),
)

指定bno的唯一性

(2) 创建表后添加与删除唯一约束

alter table 表名 modify 字段名 数据类型 unique; //添加
alter table 表名 drop index 字段名; //删除

  • 添加唯一约束
alter table book4 modify bno varchar(6) unique;
  • 删除唯一约束
alter table book4 drop index bno;

注意:mysql中唯一约束限定的值可以有多个null


5.默认约束

默认约束可以指定某列的默认值,语法规则如下:

字段名 数据类型 default 默认值

例如:

create table book5
(
id int(8) default 01,
bname Varchar(70),
press Varchar(30),
)

执行后id便有了个默认值01。


6.属性自动增加

在MySQL中auto_increment的初始值为1,每增一条记录,字段值自动加 1,该字段必须为主键的一部分。语法规则如下:

字段名 数据类型 auto_incerment

(1) 在创建表时添加自增长约束

create table book6
(
    id int primary key auto_incerment,
    bname varchar(70),
    press varchar(30),
)

(2)在创建表之后添加与删除自增长约束

alter table 表名 modify id int auto_incerment; //添加
alter table 表名 modify id int; //删除

  • 添加自增长约束
alter table book6 modify id int auto_incerment;
  • 删除自增长约束
alter table book6 modify id int;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

healthLau

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值