约束的概念:
对表中的数据进行限定,保证数据的正确性,有效性,完整性
(1)PRIMARY KEY ---主键约束,用于唯一标识对应的记录
(2)FOREIGN KEY ---外键约束
(3)NOT NULL -- 非空约束
(4)UNIQUE -- 唯一性约束
(5)DEFAULT -- 默认值约束,用于设置字段的默认值
主键约束(primary key):每一行记录的唯一标识。
⚠️ 被标识为主键的数据在表中是唯一的且不为空。
在创建数据表时设置主键约束,既可以为表中的一个字段设置主键,也可以为表中多个字段设置联合主键。
语法:
字段名 数据类型 primary key;
例如:
方式一:
create tables student (
stu_id int primary key
)
方式二:
create tables studnet (
stu_id int,
stu_name varchar(8),
primary key(stu_id)
)
外键约束 --即foreign key常用于多张表之间的约束。
语法:
-- 方式一在创建数据表时设置外键约束语法如下:
create table 表名( 字段名 字段类型, .... constraint 外键名 foreign key (从表外键字段) references 主表 (主键字段) )
-- 方式二将创建数据表创好后设置外键约束语法如下:
create table 表名( 字段名 字段类型, .... ) alter table 从表名 add constraint 外键名 foreign key (从表外键字段) references 主表 (主键字段);
例如:
主表:
create table courses (
course_id int primary key,
course_desc varchar(100)
)
方式一:
create table student(
stu_id int primary key,
stu_name varchar(10) not null,
courseId int,
constraint FK_STUDENT_COURSES foreign key courseId references courses(course_id)
)
方式二
create table student(
stu_id int primary key,
stu_name varchar(10) not null,
)
alter table student add constraint FK_STUDENT_COURSES foreign key courseId references courses(course_id)
⚠️如果主表中的数据被删除,那么从表中的数据也应该被删除,否则数据库中会存在很多无意义的垃圾数据。
删除外键:
alter table 从表名 drop foreign key 外键名;
例如: alter table student drop foreign key FK_STUDENT_COURSES
⚠️当学⽣表中存在学⽣信息关联课程表的某条记录时,就不能对课程表的这条记录进⾏修改ID和删除操作,如果要修改,要使用级联修改和级联删除
//重新添加外键,并设置级联修改和级联删除
alter table student add constraint FK_STUDENTS_CLASSES foreign key(cid) references classes(class_id) ON UPDATE CASCADE ON DELETE CASCADE;
非空约束--即 not null指的是字段的值不能为空。
语法:
字段名 数据类型 not null;
例如:
create table student(
stu_name varchar(10) not null,
stu_id int
)
唯一性约束--即unique用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。
语法:
字段名 数据类型 unique;
例如:
create table student(
stu_tel varchar(10) unique,
stu_id int
)
默认值约束--即 default用于给数据表中的字段指定默认值,即当在表中插入一条新记录时若未给该字段赋值,那么,数据库系统会自动为这个字段插人默认值
语法:
字段名 数据类型 default 默认值;
例如:
create table student(
stu_sex varchar(10) default '男',
stu_id int
)