Web数据库技术与MySQL应用教程
上QQ阅读APP看书,第一时间看更新

思考题

1.MySQL中可以使用哪几种数据类型,如何表示,选择数据类型应遵循什么原则?

2.层次模型、网状模型、关系模型有何不同,最能代表这些数据模型的数据库系统是什么,利用MySQL建立的数据库属于哪种数据模型的数据库?

3.要操作MySQL数据库,可采用哪几种方式?

4.如何在MySQL命令行客户端查看和设置系统变量,如何在MySQL命令行或包含MySQL语句的sql脚本文件中进行注释?

5.什么是索引,索引有哪几种类型,如何创建和查看索引,如何删除索引?

6.如何理解主索引、普通索引、聚簇索引、辅助索引?

7.MySQL用户权限信息存储在哪个数据库、哪个数据表,如何增加一个用户,如何修改用户密码和权限,如何删除用户?

8.如何批量执行多个MySQL命令(或语句),如何批量执行多个sql脚本?

9.已知数据库中已建立了reader数据表,reader表中含主键“读者编号”。假设利用以下语句在该数据库中建立note1、note2、note3数据表,试分析利用这些不同的语句建立的数据表与reader表的关系有何异同,能否修改reader表中的读者编号值或删除reader表中的记录(如果不能,请说明原因;如果能,请说明哪个或哪些表的数据会发生什么变化)。

1)create table note1(留言标题varchar(20),留言内容varchar(100),留言时间datetime,留言人读者编号varchar(5),回复人读者编号varchar(5),回复内容varchar(100),primary key(留言标题,留言内容,留言时间),constraint fk1 foreign key (留言人读者编号) references reader(读者编号) on delete cascade on update cascade) default charset=gb2312;

2)create table note2(留言标题varchar(20),留言内容varchar(100),留言时间datetime,留言人读者编号varchar(5),回复人读者编号varchar(5),回复内容varchar(100),primary key(留言标题,留言内容,留言时间),constraint fk2 foreign key (留言人读者编号) references reader(读者编号)) default charset=gb2312;

3)create table note3(留言标题varchar(20),留言内容varchar(100),留言时间datetime,留言人读者编号varchar(5),回复人读者编号varchar(5),回复内容varchar(100),primary key(留言标题,留言内容,留言时间),constraint fk3 foreign key (留言人读者编号) references reader(读者编号) on delete no action on update restrict) default charset=gb2312;

10.MySQL数据库与数据表的上机操作。假设学生选课数据库(xsxk)中包含学生表(xuesheng)、课程表(kecheng)、选课表(xuanke)、留言表(liuyan)、管理员表(guanliyuan),各表的结构如表2-2至表2-6所示。请按照以下要求写出相应的MySQL语句,然后完成上机操作。

表2-2 xuesheng表的结构

表2-3 kecheng表的结构

表2-4 xuanke表的结构

表2-5 liuyan表的结构

表2-6 guanliyuan表的结构

● 将字符集设置为gb2312。

● 创建学生选课数据库(数据库名为xsxk)。

● 打开xsxk数据库。

● 在xsxk数据库中建立学生表、课程表、选课表、留言表、管理员表(表名分别为xuesheng、kecheng、xuanke、liuyan、guanliyuan),没有声明的约束条件或选项均采用默认设置,外键约束名自定。

● 查看所建数据表(xuesheng表、kecheng表、xuanke表、liuyan表、guanliyuan表)的结构。

● 在xuesheng表中增加电话号码字段,数据类型及宽度为char(13)。

● 将xuesheng表中的电话号码字段修改为手机号,数据类型及宽度为varchar(11)。

● 向xuesheng表的手机号字段添加约束名为phone_unique的唯一性约束。

● 为xuesheng表的院系、姓名字段创建名为complex_index的复合索引。

● 查看xuesheng表中已创建的索引。

● 删除xuesheng表中名为complex_index的复合索引。

● 删除xuesheng表中名为phone_unique的唯一性约束。

● 删除xuesheng表中的手机号字段。

● 删除xuesheng表的主键约束。

● 将xuesheng表的学号字段设置为varchar(11)、not null、主键。

● 删除liuyan表的外键约束。

● 为liuyan表的留言人学号字段设置(或添加)外键约束,约束名为xuesheng_liuyan_fk,使留言人学号字段与xuesheng表中的学号字段建立参照完整性,且修改xuesheng表的学号值时能自动级联更新liuyan表中相关记录的留言人学号字段的值,删除xuesheng表中的记录时能自动级联删除liuyan表中的相关记录。

● 将各数据表(xuesheng表、kecheng表、xuanke表、liuyan表、guanliyuan表)的默认字符集修改为utf8。

● 将各数据表的存储引擎修改为MyISAM(或InnoDB)。

● 在所建数据表(xuesheng表、kecheng表、xuanke表、liuyan表、guanliyuan表)中分别增加若干条记录。

● 列出xuesheng表中的全部记录。

● 列出xuesheng表中所有学生的学号、姓名、所在院系、班号。

● 查询xuesheng表中院系为“管理工程学院”的学生的学号、姓名、性别、班号。

● 查询xuesheng表中院系为“管理工程学院”的学生的学号、姓名、性别、班号,按班号升序排序,班号相同按性别降序排序,性别相同按姓名升序排序。

● 查询“管理工程学院”的所有男生的学号、姓名、所选课程的课程号、课程名、成绩,按学号排序。

● 查询成绩在60分及以上的姓“张”的学生所选课程的课程号、课程名、成绩、学分。

● 查询姓“张”的学生选择了课程名为“数据库”“管理信息系统”“高等数学”的选课信息。

● 将guanliyuan表中账号为123456的管理员的密码修改为112233445566。

● 将xuesheng表中学号为20190703003的记录的出生日期修改为2003/3/3,班号的值修改为03。

● 将学号为20190703003的学生的“数据库”成绩修改为85。

● 查询学号为20190703003的学生的留言信息及回复情况的信息。

● 查询留言未被回复的学生的学号、姓名及其所有留言信息。

● 查询留言未被回复的学生的学号、姓名及其所有未被回复的留言信息。

● 查询所有未被回复的留言的留言标题、留言内容、留言时间及留言人的学号和姓名。

● 查询所有已回复的留言的留言标题、留言内容、留言时间、留言人学号、回复人学号、回复人姓名、回复内容、回复时间。

● 统计liuyan表中所有留言的条数。

● 统计每个学生各自的留言条数。

● 统计留过言的各学生的留言条数。

● 统计留过言的各个学生的未得到回复的留言的条数。

● 统计xuesheng表中学生的人数。

● 统计xuesheng表中男生的人数。

● 在xuesheng表中(分组)统计男生的人数和女生的人数。

● 在xuesheng表中统计所有选修了课程的学生的总人数。

● 统计xuanke表中选课的学生人数。

● 统计xuanke表中平均成绩在80分及以上的学生人数。

● 统计平均成绩在80分及以上的男生人数和女生人数。

● 列出年龄最大和年龄最小的学生的信息。

● 列出年龄最大和年龄最小的学生的每门课程的成绩。

● 列出年龄最大和年龄最小的学生各自的总成绩、平均成绩。

● 列出年龄最大和年龄最小的学生各自所选课程的数目。

● 列出年龄最大和年龄最小的学生所选课程的总数(注意重复的课程算1门课程)。

● 列出年龄最大的学生所选课程的数目。

● 列出未被学生选修的课程的信息。

● 将xuesheng表的结构复制到名为student的新表。

● 将xuesheng表中所有男生的记录插入到结构相同的student表。

● 将xuesheng表的结构和所有男生的记录复制到名为stu的新表。

● 将xuesheng表中所有女生的记录的学号、姓名、院系插入到stu表的相应字段。

● 将xuesheng表中所有女生的记录复制与替换到stu表(即:当xuesheng表中某女生记录的学号值和stu表中某记录的学号值相同时,就将stu表中这一学号值所在的记录替换为xuesheng表中学号值相同的那个女生记录;当xuesheng表中某女生记录的学号值在stu表中不存在时,就将xuesheng表中的这个女生记录复制到stu表)。

● 删除姓名为“张三”的学生在xuanke表中的所有选课信息。

● 删除xuesheng表中姓名为“张三”的所有记录。

● 将stu表的表名修改为student2。

● 依次删除liuyan表、xuanke表、kecheng表、xuesheng表、student表、student2表(本小题只需写出MySQL语句,暂不执行相应语句,以便第4、6、7章思考题上机操作使用)。

● 删除xsxk数据库(只写语句,暂不执行,以便第4、6、7章思考题上机操作使用)。