mysql唯一性约束的作用,MySQL 约束

约束

约束保证数据的完整性和一致性

按约束字段数量划分

列级约束和表级约束

列级约束 对一个数据列建立的约束

表级约束 对多个数据列建立的约束

列级约束既可以在列定义时声明,也可以在列定义后声明; 表级约束只能在列定义后声明.

并不是所有约束都存在表级约束。如NOT NULL和DEFAULT约束不存在表级约束.

按功能划分

PRIMARY KEY 主键

FOREIGN KEY 外键

UNIQUE KEY 唯一

NOT NULL 非空

DEFAULT 默认

主键约束 PRIMARY KEY

主键会自动创建索引.

一张表只能有一个主键

主键保证记录的唯一性

主键自动为NOT NULL

AUTO_INCREMENT只能用于主键,默认从1开始,自增1.

CREATE TABLE tb3(

id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,--指定主键

username VARCHAR(30) NOT NULL

);

外键约束 FOREIGN KEY

实现一对一或一对多的关系(关系型数据库)

子表: 具有外键列的表

父表: 子表参照的表

外键约束的要求:

1.父表和子表必须均使用InnoDB存储引擎,而且禁止使用临时表,MyISAM表暂时不支持外键

2.外键列和参照列必须具有类似的数据类型(比如int和tinyint可以,而int和char则不可以)。其中数字是否有符号位必须相同.

3.MySQL 4.1.2以后的版本在建立外键时会自动创建索引,外键列和参照列必须创建索引。

4.MySQL中外键参照的外表列不一定是主键,但必须是唯一性索引(UNIQUE)。

修改数据表的默认存储引擎:

mysql配置文件(my.ini):

default-storage-engine=INNODB;

外键约束的参照操作

FOREIGN KEY(pid) REFERENCES provinces (id) ON DELETE CASCADE

CASCADE 级联操作,从父表删除或更新行会自动删除或更新子表中匹配的行

SET NULL从父表删除或更新行,并设置子表中的外键列为NULL。前提必须保证子表外键列没有非空约束NOT NULL

RESTRICT拒绝对父表的删除或更新操作

NO ACTION标准SQL的关键字,在MySQL中与RESTRICT相同

唯一约束 UNIQUE KEY

唯一约束可以保证记录的唯一性

唯一约束的字段可以为空值(NULL)

每张数据表可以存在多个唯一约束

唯一约束的字段虽然可以为NULL,却只能有一条记录为NULL,因为要保证唯一性.

CREATE TABLE tb5(

id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(20) NOT NULL UNIQUE KEY, --唯一约束

age tinyint UNSIGNED

);

非空约束 NOT NULL

插入记录时,该字段不能为空.

默认约束 DEFAULT

当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

CREATE TABLE tb6(

id SMALLINT UNSIGNED AUTO\_INCREMENT PRIMARY KEY,

username VARCHAR(20) NOT NULL UNIQUE KEY,

sex ENUM('1','2','3') DEFAULT '3' --默认值为3

);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值