目录
步骤:
1、选择数据库(mydb--自定义数据库)
2、建立班级表
3、建立学生表
4、增加约束+删除约束
增添约束:
删除约束:
以班级表和学生表为例说明表的约束类型
步骤:
1、选择数据库(mydb--自定义数据库)
2、建立班级表
命令如下:
create table class(
class_id int primary key auto_increment comment '班级编号',
class_name varchar(50) not null
)auto_increment=1001;
在其中插入数据:
insert into class values(null,'电子信息工程01');
查看插入结果:
select *from class;
再插入一个数据
说明:
auto_increment:自增
默认从0开始自增1
这里设置了起始的位置:10001
primary key:主键
一个表中只允许一个主键
从功能上看相当于非空且唯一
not null:非空约束
确保字段值不允许为空
所有数据类型的值都可以是NULL
3、建立学生表
命令如下:
create table student( stu_id int primary key auto_increment comment'学号',
stu_name varchar (30) not null comment '姓名',
stu_age tinyint check (stu_age >= 18 ) comment'年龄',
stu_gender char(1) default 'M' check (stu_gender in ('M','F')) comment'性别',
stu_addr varchar(200) unique,
stu_class int references class(class_id)
)auto_increment =10001;
desc student 查看表结构
插入表数据:
insert into student values(null,'z1',20,null,'hunan',10001);
查看表数据:
select *from student;
check:检查约束
如例子中约束了age的取值为18以上,约束gender为男或女
default:默认值约束
可以使用default关键字设置每一个字段的默认值。
如例子中若gender插入数据时未指定取值,则默认gender为‘M’
unique:唯一约束
唯一性约束条件确保所在的字段或者字段组合不出现重复值
唯一性约束条件的字段允许出现多个NULL
同一张表内可建多个唯一约束
唯一约束可由多列组合而成references:外键约束
外键是构建于一个表的两个字段或者两个表的两个字段之间的关系
外键确保了相关的两个字段的两个关系:
子(从)表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空)。
当主表的记录被子表参照时,主表记录不允许被删除。
外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录。如例子中主表为class;子表为student。
4、增加约束+删除约束
新建一个student1表(不含任何约束)
增添约束:
alter table student1 add constraint student_id_pk primary key(stu_id);
alter table student1 modify stu_name varchar(30) not null;
alter table student1 add constraint student1_chk_1 check(stu_age >= 18);
alter table student1 modify stu_gender char(1) default 'M';
alter table student1 add constraint student1_chk_2 check(stu_gender in ('M','F'));
alter table student1 add constraint student1_addr_key unique key(stu_addr);
alter table student1 add constraint student1_class_id_fk foreign key(stu_class) references class
(class_id);
删除约束:
alter table student1 drop primary key;(删除PRIMARY KEY约束)
alter table student1 modify stu_name char null;(删除NOT NULL约束)
alter table student1 drop index stu_addr;(删除UNIQUE约束)
alter table student1 drop foreign key student1_class_id_fk;(删除FOREIGN KEY约束)
alter table student1 drop constraint student1_class_id_fk;(删除FOREIGN KEY约束)
alter table student1 drop check student1_chk_1; (删除CHECK约束)
alter table student1 drop check student1_chk_2; (删除CHECK约束)
alter table student1 modify stu_gender char(1); (删除DEFAULT约束)