约束条件 | 说明 |
---|---|
primary key | 主键唯一约束,用于唯一标识对应的记录 |
foreign key | 外键约束 |
not null | 非空约束 |
unique | 唯一性约束 |
default | 默认值约束,用于设置字段的默认值 |
字段名 数据类型 primary key;
# 设置id为主键
CREATE TABLE student(
id int primary key,
name varchar(50)
);
# 先定义字段id,后设置该字段为主键
CREATE TABLE student(
id int,
name varchar(50),
primary key(id)
);
# 将classid和studentid定义为联合主键
CREATE TABLE student(
classid int,
studentid int,
name varchar(50),
primary key(classid,studentid)
);
# 先创建了表,然后利用ALTER语句设置id字段为主键.
CREATE TABLE student(
id int,
name varchar(50)
);
ALTER TABLE student ADD PRIMARY KEY (id);
字段名 数据类型 NOT NULL;
#设定name字段为NOT NULL,所以在插入数据时必须为该字段设值
CREATE TABLE student(
id int PRIMARY KEY,
name varchar(50) NOT NULL,
gender varchar(10)
);
字段名 数据类型 UNIQUE;
# 利用unique关键字为字段name添加唯一约束
CREATE TABLE student(
id int primary key,
name varchar(50) unique
);
字段名 数据类型 AUTO_ INCREMENT;
# 将主键id设置为auto_increment,那么该字段的值会自动地增长。
CREATE TABLE student(
id int primary key auto_increment,
name varchar(50)
);
字段名 数据类型 DEFAULT 默认值;
# 为gender字段设值了默认值
CREATE TABLE student(
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL UNIQUE,
gender VARCHAR(10) DEFAULT '女'
);
CONSTRAINT 外键名 FOREIGN KEY (从表外键字段) REFERENCES 主表 (主键字段)
ALTER TABLE 从表名 ADD CONSTRAINT 外键名 FOREIGN KEY (从表外键字段) REFERENCES 主表 (主键字段);
CREATE TABLE student(
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
gender VARCHAR(10) DEFAULT '男'
);
CREATE TABLE score(
scoreid INT PRIMARY KEY,
studentid INT ,
scoreresult INT
);
分析:score表中的studentid学生编号表示成绩是属于哪个学生,该值必须是student表中id列里的值。这种情况下:学生表student被称为主表,分数表score被称为从表。所以,我们可利用外键FOREIGN KEY将score中的studentid与student表中id建立起联系。
设置外键
# student表
CREATE TABLE student(
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
gender VARCHAR(10) DEFAULT '男'
);
# score表
CREATE TABLE score(
scoreid INT PRIMARY KEY,
studentid INT ,
scoreresult INT,
CONSTRAINT fk_score_studentid FOREIGN KEY (studentid) REFERENCES student(id)
);
# 或者使用 ALTER TABLE 设置主键
ALTER TABLE score ADD CONSTRAINT fk_score_studentid FOREIGN KEY(studentid) REFERENCES student(id);
alter table 从表名 drop foreign key 外键名;
alter table score drop foreign key fk_score_studentid;
show create table score;