数据库——基础语法——约束
概念: 约束是作用于表字段上的规则,用于限制村粗在表中的数据
目的:保证数据库的正确,有效性和完整性
一、常规约束
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
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'性别'
)