数据库——基础语法——约束

数据库——基础语法——约束

概念: 约束是作用于表字段上的规则,用于限制村粗在表中的数据

目的:保证数据库的正确,有效性和完整性

一、常规约束

1. 非空约束

NOT NULL

2. 唯一约束

UNIQUE

3. 默认约束

DEFAULT

4. 检查约束

CHECK

二、主键约束

PRIMARY KEY	

添加外检约束的语法

alter table `表名` add constraint `约束名` 约束类型具体的约束说明

alter table user add constraint PK_user primary key(uid)

三、外键约束

FOREIGN KEY

添加外键的语法

ALTER TABLE  `表名`  ADD CONSTRAINT `约束名称` FOREIGN KEY (`表名中有外键的字段`) REFERENCES `主表名` (`主键字段`)

#给user2表中uid 添加外检 参照的是user表中的Uid主键
ALTER TABLE user2 ADD constraint fk_u1_u2 foreign key (uid) REFERENCES user(uid)

删除外键的语法

ALTER TABLE `表名` DROP FOREIGN KEY   `约束名`;

alter TABLE user2 DROP FOREIGN key fk_u1_u2

外键的行为

行为 说明
NOT ACTION 当附父表中数据删除、更新时,首先检查是否有对应的外键,如果有责不允许当前操作
RESTRICT 当附父表中数据删除、更新时,首先检查是否有对应的外键,如果有责不允许当前操作(默认) **
SET NULL 当父表中删除,更新数据时,外键中子表中对应的字段设置为 NULL
CASCADE 当在父表中删除,更新数据时外键中子表中对应的字段也跟着删除

1.改变外键行为的语法

#先删除原先的约束
ALTER TABLE `表名` DROP FOREIGN KEY `约束名称`, 
#再添加新的约束
 ADD CONSTRAINT `约束名称` FOREIGN KEY (`外键中子字段`) REFERENCES `主表名` (`主键字段`)  ON DELETE CASCADE;#设置外检约束行为

ALTER TABLE sc ADD CONSTRAINT `sc_ibfk_1` FOREIGN KEY (`sno`) REFERENCES `db1`.`student` (`sno`) ON DELETE NO ACTION ON UPDATE RESTRICT;

四、设置自动增长

AUTO_INCREMENT

数据库——基础语法——约束_第1张图片

CREATE TABLE `user`(
 	id int(255) PRIMARY KEY  AUTO_INCREMENT  COMMENT '主键',
 	name VARCHAR(10) not NULL UNIQUE COMMENT '姓名',
	age int(255) check(age>0 && age<=120) ,
	status char(1 ) DEFAULT '1' COMMENT'状态',
	gender char(1) COMMENT'性别'
 )

你可能感兴趣的:(数据库进阶,mysql)