• [MySQL]实训七


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

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

    http://t.csdn.cn/9rV9T

    1、在数据库db_school中重新定义表tb_student,要求以表级完整性约束定义外键

    表级完整性约束:需要在表中所有字段定义后添加一条primary key语法格式的子句。

    首先,创建并使用数据库db_shool;

    1. //创建数据库
    2. mysql> create database db_school;
    3. Query OK, 0 rows affected (0.03 sec)
    4. //使用数据库
    5. mysql> use db_school;
    6. Database changed

     按照题意其次,下面就是创建学生表tb_student。

    但我们在《数据完整性约束》中提到过,添加外键约束的,需要有一个被参照表

    所以我们在此处要先创建被参照表tb_class,需要注意的是,我们此前提到过一个规则:

    ——必须为被参照表定义主键或候选键——

    故真正的建表格式应该如下所示:

    1. mysql> create table tb_class(
    2. -> classNo char(6) primary key comment'班级编号',
    3. -> className varchar(20) comment'班级名称',
    4. -> department varchar(30) comment'所属院系',
    5. -> grade int comment'年级',
    6. -> classNum int comment'班级最大人数',
    7. -> constraint uq_class unique(classname)
    8. -> );
    9. Query OK, 0 rows affected (0.01 sec)

    然后再创建学生表tb_student并表级完整性约束为其定义外键约束

    1. mysql> create table tb_student(
    2. -> studentNo char(10) comment'学号',
    3. -> studentName varchar(20) comment'姓名',
    4. -> sex char(2) comment'性别',
    5. -> birthday date comment'出生日期',
    6. -> native varchar(20) comment'籍贯',
    7. -> nation varchar(10) comment'民族',
    8. -> classNo char(6) comment'班级编号',
    9. -> constraint fk_student foreign key(classNo) references tb_class(classNo)
    10. -> );
    11. Query OK, 0 rows affected (0.01 sec)

    2、在已有数据库db_school中使用修改表的语法重新定义tb_student,要求增加外键;

    1. mysql> alter table tb_student drop foreign key fk_student;
    2. Query OK, 0 rows affected (0.03 sec)
    3. Records: 0 Duplicates: 0 Warnings: 0
    4. mysql> alter table tb_student add constraint fk_student foreign key(classNo) references tb_class(classNo);
    5. Query OK, 0 rows affected (0.02 sec)
    6. Records: 0 Duplicates: 0 Warnings: 0

    3、在已有数据库db_school中删除表tb_student在classNo上定义的外键;

    1. mysql> alter table tb_student drop foreign key fk_student;
    2. Query OK, 0 rows affected (0.02 sec)
    3. Records: 0 Duplicates: 0 Warnings: 0

    4、在已有数据库db_school中修改表tb_class.要求增加一个字段id为自增约束;

    1. mysql> alter table tb_class add id int unique auto_increment;
    2. Query OK, 0 rows affected (0.04 sec)
    3. Records: 0 Duplicates: 0 Warnings: 0

    5、选择已有数据库db_school,在表tb_class中,删除自增约束;

    删除自增的方法我们也提过,有两行,且位置不能互换。

    1. mysql> alter table tb_class modify id char(10);
    2. Query OK, 0 rows affected (0.03 sec)
    3. Records: 0 Duplicates: 0 Warnings: 0
    1. mysql> alter table tb_class drop primary key;
    2. Query OK, 0 rows affected (0.02 sec)
    3. Records: 0 Duplicates: 0 Warnings: 0

    6、在数据库db_school中重新定义学生表tb_student,要求字段nation设置默认值(default)为“汉族”;

    首先将原表删除,再创建一个新表。

    1. mysql> drop table tb_student;
    2. Query OK, 0 rows affected (0.01 sec)
    1. mysql> create table tb_student(
    2. -> studentNo char(10),
    3. -> studentName varchar(20),
    4. -> sex char(2),
    5. -> birthday date,
    6. -> native varchar(20),
    7. -> nation varchar(10) default'汉族',
    8. -> classNo char(6)
    9. -> );
    10. Query OK, 0 rows affected (0.01 sec)

    7、在已有数据库db_school中修改表tb_class,要求新增字段native默认值为“江西南昌”;

    1. mysql> alter table tb_student alter native set default'江西南昌';
    2. Query OK, 0 rows affected (0.02 sec)
    3. Records: 0 Duplicates: 0 Warnings: 0

    8、在已有数据库db_school中修改表tb_class,要求删除字段native默认值;

    1. mysql> alter table tb_student alter native drop default;
    2. Query OK, 0 rows affected (0.01 sec)
    3. Records: 0 Duplicates: 0 Warnings: 0

  • 相关阅读:
    js---构造函数
    几款语言python在线编辑器
    什么是Spring容器中的组件
    初学Vue(全家桶)-第16天(vue-router):路由的概念、基本使用、$route和$router、嵌套路由、路由传参、props配置项
    AOP切面类使用代码
    pytorch深度学习实战lesson20
    mysql 插入sql语句,把当前时间格式话到时分秒 yyyy-MM-dd
    备战蓝桥杯Day22 - 计数排序
    Redis相关知识
    开始学习React——跟着官网做井字棋
  • 原文地址:https://blog.csdn.net/DuFengYa/article/details/127674910