数据库约束创建mysql_MySQL数据库——创建约束基本操作

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

--对一个数据列建立的约束,就是列级约束

--对多个数据列建立的约束,就是表级约束

--列级约束既可以在列定义时声明,也可以在列定义后声明,

--表级约束只能在列定义后声明

--注意!

--NOT NUll和DEFAULT没有表级约束

约束类型包括:

NOT NULL (非空约束)

PRIMARY KEY (主键约束)

UNIQUE KEY (唯一约束)

DEFAULT (默认约束)

FOREIGN KEY (外键约束)

CREATE TABLE users(id SMALLINT UNSIGNED PRIMARY KEY);

--主键:PRIMARY KEY

--主键约束,每张数据表只可以有一个主键,

--主键保证记录的唯一性,且其自动为NOT NULL

CREATE TABLE users(name VARCHAR(20) NOT NULL UNIQUE KEY);

--唯一约束:UNIQUE KEY

--唯一约束可以保证记录的唯一性,且唯一约束字段可以为空

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

CREATE TABLE users(sex ENUM('1','2','3') DEFAULT '3');

--默认约束:DEFAULT

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

--ENUM是枚举,表示用户只能从3个选项中选一个字段赋值,详细内容可自行搜索

CREATE TABLE provinces(

id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

pname VARCHAR(20) NOT NULL

);

--父表,省份信息

CREATE TABLE users(

id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

uname VARCHAR(10) NOT NULL,

pid SMALLINT UNSIGNED,

FOREIGN KEY (pid) REFERENCES provinces (id)

);

--子表,用户信息,用户pid 对应 省份id

--外键约束:FOREIGN KEY

--外键约束要求:

--1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表

--2.数据表的存储引擎只能为InnoDB

/*

3.外键列和参照列必须具有相似的数据类型。

其中数字的长度或者是否有符号位都必须相同

但是,若是字符的长度,则可以不同

*/

--4.外键列和参照列必须创建索引,如果外键列不存在索引。!MySQL将自动创建索引!

外键约束的参照操作及功能:

1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行

2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL

(ps.如果使用该选项,必须保证子表列没有指定NOT NULL)

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

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

--例子

CREATE TABLE users(

id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

uname VARCHAR(10) NOT NULL,

pid SMALLINT UNSIGNED,

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

);

--ON DELETE 意思为删除操作发生时

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值