约束类型
1. 主键约束primay key Constraint:唯一性 非空性
2. 唯一约束Unique Constraint:唯一性 可以空 但只能有一个
3. 检查约束 Check Constraint:对该列数据的范围、格式的限制
4. 默认约束 Default Constraint:该数据的默认值
5. 外键约束 Foreign keyConstraint:需要建立两表之间的关系并引用主表的列
约束的语法示例:
1. 添加主键约束
Alter table 表名 add Constraint 主键名 primary key(字段)
alter table UserId add constraint PK_UserId primary key (UserId)
2. 添加唯一约束
Alter table 表名 add Constraint 约束名 unique(字段)
alter table UserInfo add constraint UQ_IDNumber unique(IdentityCardNumber)
3. 添加默认约束
Alter table 表名 add Constraint 约束名 default(默认内容) for 字段名
alter table UserInfo add constraint DF_UserAddress default (‘地址不详’) for UserAddress
4. 添加检查约束
Alter table 表名 add Constraint 约束名 check (字段表达)
alter table UserInfo add constraint CK_UserAge check (UserAge between 20 and 40)
5. 添加外键约束
alter table 从表 add Constraint foreign key (从表外键字段) references 主表 (主表主键)
添加外键约束 (主表UserInfo和从表UserOrder建立关系,关联字段UserId)
alter table UserOrder add constraint FK_UserId_UserId foreign key(UserId)references UserInfo(UserId)
create table person(
# 建立了主键约束
id int primary key,
# 建立了非空约束
sex int not null,
# Mysql的非空约束不能指定名字
name varchar(255) default 'xyz' not null,
# 下面列可以为空,默认就是可以为空
address varchar(2) null,
# unique 就是唯一约束,使用列级语法建立唯一约束
cert_no varchar(255) unique,
# 指定主键约束名为test2_pk,对大部分数据库有效,但对Mysql无效
# Mysql数据库中该主键约束名仍为 PRIMARY
#constraint test2_pk primary key(id)
# 建立多列组合的主键约束
#primary key(name,address)
# 使用表级约束语法建立唯一约束
#unique (cert_no),
#constraint test2_uk unique(test_pass)
# 使用表级约束语法建立唯一约束,指定两列组合不允许重复
#constraint test3_uk unique(name,address)
);
6. 在创建表的时候添加约束
create table product(
id varchar(32) primary key, #主键
name varchar(50),
price double(5,2),
category_id varchar(32), #外键,cid varchar(32)保持一致
constraint foreign key (category_id) references category (cid)
);
create table teacher_table3(
teacher_name varchar(255),
teacher_pass varchar(255),
# 以两列建立组合主键
primary key(teacher_name,teacher_pass)
);
create table student_table3(
# 为本表建立主键约束
student_id int auto_increment primary key,
student_name varchar(255),
java_teacher_name varchar(255),
java_teacher_pass varchar(255),
# 使用表级约束语法建立外键约束,指定两列的联合外键
foreign key(java_teacher_name,java_teacher_pass) references
teacher_table3(teacher_name,teacher_pass)
);
# 修改 student_table3 的数据表,增加外键约束
alter table student_table3
add foreign key(java_teacher_name,java_teacher_pass)
references teacher_table3(teacher_name,teacher_pass);
7. 删除约束
alter table 表名 drop Constraint 约束名