约束关键字 | 含义 |
---|---|
NOT NULL | 数据列不允许包含NULL值 |
DEFAULT | 默认值 |
PRIMARY KEY | 主键,不可以为空 |
UNIQUE | 唯一,保证该字段具有唯一性,可以为空 |
CHECK | 检查约束 |
FOREIGN KEY | 外键约束 |
AUTO_INCREMENT | 自增长列 |
CREATE TABLE major(
id INT UNIQUE,#唯一
majorName VARCHAR(20)
);
CREATE TABLE stuinfo(
id INT,
stuName VARCHAR(20),
gender CHAR(1),
seat INT,
age INT,
majorid INT,
PRIMARY KEY (id,stuName),#主键
UNIQUE(seat),#唯一
CHECK(gender='男' OR gender='女'),#检查
FOREIGN KEY(majorid) REFERENCES major(id)#外键约束
)
用于限制两个表的关系,从表的字段值引用了主表的某字段值
外键列和主表的被引用列要求类型一致,意义一样,名称无要求
主表的被引用列要求是一个key(一般就是主键)
插入数据,先插入主表;删除数据,先删除从表
#可以通过以下两种方式来删除主表的记录
#方式一:级联删除
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;
#方式二:级联置空
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;
create table 表名(
字段名 字段类型 not null,#非空
字段名 字段类型 primary key,#主键
字段名 字段类型 unique,#唯一
字段名 字段类型 default 值,#默认
constraint 约束名 foreign key(字段名) references 主表(被引用列)
)
类型 | 支持类型 | 可以起约束名 |
---|---|---|
列级约束 | 除了外键 | 不可以 |
表级约束 | 除了非空和默认 | 可以,但对主键无效 |
非空
添加非空
alter table 表名 modify column 字段名 字段类型 not null;
删除非空
alter table 表名 modify column 字段名 字段类型 ;
默认
添加默认
alter table 表名 modify column 字段名 字段类型 default 值;
删除默认
alter table 表名 modify column 字段名 字段类型 ;
主键
添加主键
alter table 表名 add【 constraint 约束名】 primary key(字段名);
删除主键
alter table 表名 drop primary key;
唯一
添加唯一
alter table 表名 add【 constraint 约束名】 unique(字段名);
删除唯一
alter table 表名 drop index 索引名;
外键
添加外键
alter table 表名 add【 constraint 约束名】 foreign key(字段名) references 主表(被引用列);
删除外键
alter table 表名 drop foreign key 约束名;
#创建表时设置自增长列
create table 表(
字段名 字段类型 约束 auto_increment
)
#修改表时设置自增长列
alter table 表 modify column 字段名 字段类型 约束 auto_increment
#删除自增长列
alter table 表 modify column 字段名 字段类型 约束
原文:https://www.cnblogs.com/redo19990701/p/11286678.html