- 设置字段的默认值约束;
- 设置字段的自动增长约束;
- 设置字段的外键约束;
(有关上述三种约束的概念在上一篇文章中有提及)

1、在数据库db_school中重新定义表tb_student,要求以表级完整性约束定义外键。
表级完整性约束:需要在表中所有字段定义后添加一条primary key语法格式的子句。
首先,创建并使用数据库db_shool;
- //创建数据库
- mysql> create database db_school;
- Query OK, 0 rows affected (0.03 sec)
-
- //使用数据库
- mysql> use db_school;
- Database changed
按照题意其次,下面就是创建学生表tb_student。
但我们在《数据完整性约束》中提到过,添加外键约束的,需要有一个被参照表。
所以我们在此处要先创建被参照表tb_class,需要注意的是,我们此前提到过一个规则:
——必须为被参照表定义主键或候选键——
故真正的建表格式应该如下所示:
- mysql> create table tb_class(
- -> classNo char(6) primary key comment'班级编号',
- -> className varchar(20) comment'班级名称',
- -> department varchar(30) comment'所属院系',
- -> grade int comment'年级',
- -> classNum int comment'班级最大人数',
- -> constraint uq_class unique(classname)
- -> );
- Query OK, 0 rows affected (0.01 sec)
然后再创建学生表tb_student并以表级完整性约束为其定义外键约束。
- mysql> create table tb_student(
- -> studentNo char(10) comment'学号',
- -> studentName varchar(20) comment'姓名',
- -> sex char(2) comment'性别',
- -> birthday date comment'出生日期',
- -> native varchar(20) comment'籍贯',
- -> nation varchar(10) comment'民族',
- -> classNo char(6) comment'班级编号',
- -> constraint fk_student foreign key(classNo) references tb_class(classNo)
- -> );
- Query OK, 0 rows affected (0.01 sec)
2、在已有数据库db_school中使用修改表的语法重新定义tb_student,要求增加外键;
- mysql> alter table tb_student drop foreign key fk_student;
- Query OK, 0 rows affected (0.03 sec)
- Records: 0 Duplicates: 0 Warnings: 0
-
- mysql> alter table tb_student add constraint fk_student foreign key(classNo) references tb_class(classNo);
- Query OK, 0 rows affected (0.02 sec)
- Records: 0 Duplicates: 0 Warnings: 0
3、在已有数据库db_school中删除表tb_student在classNo上定义的外键;
- mysql> alter table tb_student drop foreign key fk_student;
- Query OK, 0 rows affected (0.02 sec)
- Records: 0 Duplicates: 0 Warnings: 0
4、在已有数据库db_school中修改表tb_class.要求增加一个字段id为自增约束;
- mysql> alter table tb_class add id int unique auto_increment;
- Query OK, 0 rows affected (0.04 sec)
- Records: 0 Duplicates: 0 Warnings: 0
5、选择已有数据库db_school,在表tb_class中,删除自增约束;
删除自增的方法我们也提过,有两行,且位置不能互换。
- mysql> alter table tb_class modify id char(10);
- Query OK, 0 rows affected (0.03 sec)
- Records: 0 Duplicates: 0 Warnings: 0
- mysql> alter table tb_class drop primary key;
- Query OK, 0 rows affected (0.02 sec)
- Records: 0 Duplicates: 0 Warnings: 0
6、在数据库db_school中重新定义学生表tb_student,要求字段nation设置默认值(default)为“汉族”;
首先将原表删除,再创建一个新表。
- mysql> drop table tb_student;
- Query OK, 0 rows affected (0.01 sec)
- mysql> create table tb_student(
- -> studentNo char(10),
- -> studentName varchar(20),
- -> sex char(2),
- -> birthday date,
- -> native varchar(20),
- -> nation varchar(10) default'汉族',
- -> classNo char(6)
- -> );
- Query OK, 0 rows affected (0.01 sec)
7、在已有数据库db_school中修改表tb_class,要求新增字段native默认值为“江西南昌”;
- mysql> alter table tb_student alter native set default'江西南昌';
- Query OK, 0 rows affected (0.02 sec)
- Records: 0 Duplicates: 0 Warnings: 0
8、在已有数据库db_school中修改表tb_class,要求删除字段native默认值;
- mysql> alter table tb_student alter native drop default;
- Query OK, 0 rows affected (0.01 sec)
- Records: 0 Duplicates: 0 Warnings: 0