【MySQL】《数据库系统》-实验项目3-基本表的定义、删除与修改

实验项目
实验1  实验环境与操作流程
实验2  数据定义、查询与更新
实验3  基本表的定义、删除与修改
实验4  数据的插入、修改和删除
实验5  数据的查询
实验6  数据的视图
实验7  完整性语言
实验8  触发器
实验9  存储过程与函数
实验10  SQL语句1(创建、插入、查询)
实验11  SQL语句2(查询)
实验12  SQL语句3(视图、完整性、关系代数查询)

实验3  基本表的定义、删除与修改

一、实验目的

1. 理解数据库设计的概念及实验环境;

2. 掌握MySQL数据库的相关概念;

3. 掌握使用SQL语句定义与删除模式的方法;

4. 掌握使用SQL语句定义、删除与修改基本表的方法;

5. 掌握使用SQL语句建立与删除索引的方法。

二、实验要求

1. 熟练掌握使用SQL语句定义与删除模式的方法及步骤;

2. 熟练掌握使用SQL语句定义、删除与修改基本表的方法及步骤;

3. 熟练掌握使用SQL语句建立与删除索引的方法及步骤。

三、实验内容

(参考课本3.2与3.3)

  • 定义数据库:创建学生-课程数据库student_course。
  • 定义表:(注意:列名、数据类型以及完整性约束条件)
  1. 按照学生-课程数据库中的表结构,创建学生表Student,参考例3.5。
  2. 按照学生-课程数据库中的表结构,创建课程表Course,参考例3.6。
  3. 按照学生-课程数据库中的表结构,创建学生选课表SC,参考例3.7。
  • 修改表:
  1. 向Student表增加“入学时间”列,其数据类型为日期型,参考例3.8。
  2. 将Course表中增加课程名称必须取唯一值的约束条件,参考例3.10。
  3. 将Student表中增加的入学时间列删除。
  4. 将Course表中增加的课程名称取唯一值的约束条件删除。
  • 建立索引:
  1. Student表按学号升序建唯一索引,参考3.13。
  2. Course表按课程号升序建唯一索引,参考3.13。
  3. SC表按学号升序和课程号降序建唯一索引,参考3.13。
  • 删除索引:将SC表的SCno索引删除。
  • 删除表:
  1. 删除Student表,选择restrict。
  2. 删除Student表,选择cascade,参考例3.11。
  • 删除数据库:删除stu数据库。

实验指导:

  • 进入mysql命令行:

(方式1)找到mysql的安装位置,并进入到bin文件夹下,在红色的地址框框中输入cmd进入。进入后使用命令mysql –u root –p并输入管理员密码root进入mysql。

(方式2)选中Navicat中的任一连接或者数据库,右键选中“命令列界面”打开。

  • 定义数据库:

先查看已有数据库,后使用sql命令创建学生-课程数据库student_course,再查看现有哪些数据库。

  • 定义表:(注意:列名、数据类型以及完整性约束条件)
  • 使用student_course数据库,在此数据库下创建基本表。

  • 按照79页中学生-课程数据库的表结构,输入SQL命令创建学生表Student(Sno,Sname,Ssex,Sage,Sdept),其中Sno为主码,Sname取唯一值,参考例3.5。

  • 按照79页中学生-课程数据库的表结构,输入SQL命令创建课程表Course(Cno,Cname,Cpno,Ccredit),其中Cname为主码,Cname不能取空值,Cpno为一个参照Course表中Cno的外码,参考例3.6。

  • 按照80页中学生-课程数据库的表结构,输入SQL命令创建学生选课表SC(Sno,Cno,Grade),其中主码为(Sno,Cno),Sno为一个参照Student表中Sno的外码,Cno为一个参照Course表中Cno的外码,参考例3.7。

  • 查看数据库中目前有哪些表存在。

  • 修改表:
  • 使用describe <表名>,查看Student表、Course表以及SC表在目前状态下的结构。分别输入以下命令:describe student; describe course; describe sc;,查看表中的属性名、数据类型、是否为空、是否为主码或外码等。

  • 使用修改基本表的SQL命令,向Student表增加“入学时间”列,其数据类型为日期型,参考例3.8。查看student表的当前结构。

  • 使用修改基本表的SQL命令,将Course表中增加课程名称必须取唯一值的约束条件,参考例3.10。查看Course表的当前结构。

  • 使用修改基本表的SQL命令,将Student表中增加的入学时间列删除。查看student表的当前结构。

  • 使用修改基本表的SQL命令,将Course表中增加的课程名称取唯一值的约束条件删除。查看Course表的当前结构。

  • 建立索引:
  • 使用show index from <表名>,查看Student表、Course表以及SC表的已有索引信息。分别输入以下命令:show index from student; show index from course; show index from sc;,查看表的名称、索引能否包括重复词、索引的名称、索引的序列号、列名称、列以什么方式存储在索引中等信息。

  • 使用建立索引的SQL命令,使得Student表按学号升序建唯一索引Stusno,参考3.13。查看Student表的索引信息。

  • 使用建立索引的SQL命令,使得Course表按课程号升序建唯一索引Coucno,参考3.13。查看Course表的索引信息。

  • 使用建立索引的SQL命令,使得SC表按学号升序和课程号降序建唯一索引SCno,参考3.13。查看SC表的索引信息。

  • 删除索引:使用删除索引的SQL语句,将SC表的SCno索引删除。查看SC表的索引信息。

  • 删除表:
  • 使用删除基本表的SQL语句,删除Student表,选择restrict。

  • 使用删除基本表的SQL语句,删除Student表,选择cascade,参考例3.11。

  • 上述删除均失败了(与课本不同,因为不同数据库中具体操作限制不太一样),原因是都涉及到SC表。解决策略为先删除SC,再删除其余两个表。查看数据库中还有哪些表。

  • 删除数据库:删除student_course数据库。查看有哪些数据库存在。

实验3代码:

create table Student(
Sno char(9) primary key,
Sname char(2) unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
);

create table Course(
Cno char(4) primary key,
Cname char(40) not null,
Cpno char(4),
Ccredit smallint,
foreign key (Cpno) references Course(Cno)
);

create table SC(
Sno char(9),
Cno char(4),
Grade smallint,
primary key (Sno,Cno),
foreign key (Sno) references Student(Sno),
foreign key (Cno) references Course(Cno)
);

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值