(基础篇)mysql数据库约束规则

149 阅读2分钟

约束的概念对表中的数据进行限定,保证数据的正确性,有效性,完整性

1PRIMARY KEY ---主键约束,用于唯一标识对应的记录2FOREIGN KEY ---外键约束3NOT NULL -- 非空约束4UNIQUE -- 唯一性约束5DEFAULT -- 默认值约束,用于设置字段的默认值

主键约束(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

)