1、约束关键字介绍
约束条件------说明
PRIMARY KEY ------主键约束,用于唯一标识对应的记录
FOREIGN KEY------外键约束
NOT NULL ------非空约束
UNIQUE------唯一性约束
DEFAULT------默认值约束,用于设置字段的默认值
AUTO_INCREMENT------自增约束,用于设置表的字段值自动增加
2、主键
2.1、单一主键
create table course(
id smallint primary key,
sno char(10),
name varchar(32)
);
2.2、多主键
create table course(
id smallint,
sno char(10),
name varchar(32),
primary key(id,sno)
);
3、约束
3.1、非空约束
create table course(
id smallint,
sno char(10),
name varchar(32) not null
);
3.2、唯一约束
create table course(
id smallint,
sno char(10),
name varchar(32) unique
);
3.3、默认约束
create table course(
id smallint,
sno char(10),
name varchar(32) default 'test-name'
);
3.4、自增约束
create table course(
id smallint primary key auto_increment,
sno char(10),
name varchar(32)
);
3.5、外键约束
create database temp_db;
use temp_db;
create table course(
courseID smallint primary key,
courseName varchar(50),
ctime tinyint unsigned,
cType varchar(20)
);
create table student(
sno char(10) primary key,
sname varchar(10),
sex char(1),
classId char(9),
idCard char(18)
);
-- 外键的使用方法
create table score(
score_id tinyint,
course_id smallint,
sno_id char(10),
constraint fk_course_id foreign key(course_id) references course(courseID),
constraint fk_student_id foreign key(sno_id) references student(sno)
);
3.6、删除约束
-- 删除外键
alter table score drop foreign key fk_course_id;
3.7、外键的级联
-- 外键的级联的动作
RESTRICT:当要删除或更新父表中被参照列上在外键中出现的值时,拒绝对父表的删除或更新操作。
CASCADE:从父表删除或更新行时自动删除或更新子表中匹配的行·
SET NULL:当从父表删除或更新行时,设置子表中与之对应的外键列为NULL·
No ACTION:意味不采取动作,跟RFSTRICT一样。
-- 级联使用方法,注意语法fk,cascade后面不用逗号
create table score(
score_id tinyint,
course_id smallint,
sno_id char(10),
constraint fk_course_id foreign key(course_id) references course(courseID),
constraint fk_student_id foreign key(sno_id) references student(sno)
on update cascade
on delete cascade
);