第5节-MySQL表的约束

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
);

 

posted @ 2022-12-31 15:03  小粉优化大师  阅读(31)  评论(0编辑  收藏  举报