- 设置字段的默认值约束;
- 设置字段的自动增长约束;
- 设置字段的外键约束;
(有关上述三种约束的概念在上一篇文章中有提及)
http://t.csdn.cn/9rV9T
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