MySQL的约束
主键约束
有两种方式可以添加主键约束:
1.在定义列的同时指定主键;
2.在定义完字段之后再指定主键。
create database MyDb;
use MyDb;
create table t_user1(
userId int primary key, //在定义列的同时指定主键;
name varchar(32),
password varchar(11),
phone varchar(11),
email varchar(32));
create table t_user2(
name varchar(32),
phone varchar(11),
email varchar(32),
primary key(name,phone) //在定义完字段之后再指定主键。
);
外键约束
在MySQL中给表中字段添加外键约束的语法规则如下:
constraint 外键名 foreign key 字段名 references 主表名(主键名)
创建两张表如下,给t_student表添加外键约束,外键为classId,外键名称为fk_stu_class1。
表t_class
字段名称 数据类型 备注
id INT 班级Id,主键
name VARCHAR(22) 班级名称
表t_student
字段名称 数据类型 备注
id INT 学号,主键
name VARCHAR(22) 学生姓名
classId INT 班级ID,外键
CREATE DATABASE MyDb;
use MyDb;
create table t_class
(id int primary key,
name varchar(22)
);
create table t_student(
id int primary key,
name varchar(22),
classId int,
//添加外键
CONSTRAINT fk_stu_class1 FOREIGN KEY(classId) REFERENCES t_class(id));
常用约束
唯一约束(UNIQUE) 唯一约束(Unique Constraint)要求该列唯一,允许为空,但是只能有一个空值。唯一约束可以确保一列或者几列不出现重复值。
非空约束 (not null)
默认约束(DEFAULT) 默认约束:即给字段一个默认值。如果要添加的是中文默认值,则需要加上DEFAULT CHARSET=utf8;
表的属性值自动增加 (AUTO_INCREMENT),默认情况下初始值和增量都为1。
在数据库MyDb中创建表t_user,表结构如下:
字段名称 数据类型 备注
id INT 用户ID,主键,自动增长
username varchar(32) 用户名,非空,唯一
sex varchar(4) 性别,默认“男”
提示:若要给字段添加两个或者两个以上的约束,约束之间以空格隔开即可。
create table t_user(
id int primary key auto_increment,
username varchar(32) not null unique,
sex varchar(4) default '男')
default charset=utf8;
删除表的外键约束
alter table 表名 drop foreign key 外键约束名;
建立了主表tb_dept和子表tb_emp,在表tb_emp上添加了名称为emp_dept的外键约束,外键名称为DeptId,依赖于表tb_dept的主键Id,下面那是两张表的结构展示:
删除数据表tb_emp的外键约束emp_dept。
alter table tb_emp drop foreign key emp_dept;