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