[MySQL]实训七

  • 【实训目的】
  1. 设置字段的默认值约束;
  2. 设置字段的自动增长约束;
  3. 设置字段的外键约束;

(有关上述三种约束的概念在上一篇文章中有提及)

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渡过晚枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值