class-notes/2207/MySQL练习题/MySQL——网上书店.md
2025-02-20 22:02:41 +08:00

7.2 KiB
Raw Blame History

创建一个空数据库名字为book_store_db,字符集使用UTF8

创建表

目的:

1熟练掌握创建表结构的方法。

2掌握查看表信息的方法。

内容:

1使用 MySQL 创建会员表(如表 3-9 所示)、图书表(如表 3-10 所示)的表结构。

2使用 MySQL 创建图书类别表(如表 3-11 所示)、订购表(如表 3-12 所示)的表结构。

3使用 DROP TABLE 语句删除上述创建的表,然后使用 CREATE TABLE 语句再次创建上述表。

4查看会员表的信息。

5修改会员表结构。添加字段「联系地址」数据类型设置为 VARCHAR50更改「联系地址」为「联系方式」删除添加的字段「联系地址」。

6使用创建表时添加约束和为已存在的表添加约束这两种方式给表添加约束。

表 3-9 会员表user结构

48910-00-93-1

表 3-10 图书表book结构

48910-00-93-2

表 3-11 图书类别表category结构

48910-00-94-1

表 3-12 订购表b_order结构

48910-00-94-2

插入、更新、删除数据

目的:熟练掌握使用 INSERT、DELETE、UPDATE 语句向表中添加、删除、修改记录。

内容:

1「网上书店」数据库中的数据分别如表 4-1 至表 4-4 所示。

表 4-1 user 表数据

48910-00-101-1

表 4-2 book 表数据

48910-00-101-2

表 4-3 category 表数据

48910-00-101-3

表 4-4 b_order 表数据

48910-00-102-1

2使用 SQL 语句分别向 user 表(表 4-1、book 表(表 4-2、category 表(表 4-3、b_order 表(表 4-4插入记录。

3使用 SQL 语句修改表中记录。

① 把 user 表中 uid 字段值为 1001 的记录的 uname 字段值修改为「何大姑」。

② 把 b_order 表中 uid 字段值为 1003 且 bid 字段值为 3 的记录的 ordernum 字段值改为「10」并把该记录的 orderdate 字段值改为「2016-10-01」deliverydate 字段值设为「2016-10-03」。

4使用 SQL 语句删除表中记录。

① 删除 2015 年的订单信息。

② 清空 book 表。

简单查询

目的:掌握 SELECT 语句中 DISTINCT 子句、LIMIT 子句、WHERE 子句以及 ORDER BY 子句的使用。

内容如下。

1查询会员表输出积分高于 500 分的会员昵称和联系电话。

2查询会员表输出积分低于 200 分的会员昵称和联系电话,分别用英文 username、telephone 指定别名。

3查询会员表输出 E-mail 是 QQ 邮箱的会员昵称及其 E-mail。

4查询订购表输出订购日期是 2016 年 10 月的订单的详细信息。

5查询订购表输出订货的会员编号要求删除重复行。

6查询图书表输出图书的名称和价格并把查询结果按价格降序排列。

7查询图书表输出价格最高的三种图书的名称和价格。

分组查询

目的掌握集合函数、GROUP BY 子句、HAVING 子句。

内容如下。

1查询图书表输出所有图书的最高价格、最低价格、平均价格。

2查询图书表输出每一类图书的数量。

3查询图书表输出每一类图书的最高价格、最低价格、平均价格。

4查询订购表输出订购数量超过 3 本的会员编号和订购数量。

多表连接查询、子查询

目的:掌握连接查询和子查询

内容如下。

1输出所有图书的图书名称、价格以及所属类别名称。

2输出订购了《平凡的世界》的会员昵称、联系电话、订购数量。

3输出订购了图书的会员昵称和联系电话。

4输出无人订购的图书名称和价格。

5输出详细订购信息包括订购图书的会员呢称、联系电话、所订图书名称、数量、价格、折扣价。

存储过程

目的:掌握存储过程的创建和执行。掌握存储过程中输入、输出参数的使用。

内容:

1在「网上书店」数据库中创建一个名为 proc_1 的存储过程,实现查询所有会员信息的功能。

2在「网上书店」数据库中创建一个名为 proc_2 的存储过程,要求实现如下功能:根据会员昵称查询会员的积分情况。并调用存储过程,查询「平平人生」和「感动心灵」的积分。

3在「网上书店」数据库中创建一个名为 proc_3 的存储过程,要求实现如下功能:根据会员昵称查询会员的订购信息,如果该会员没有订购任何图书,则输出「某某会员没有订购图书」的信息;否则输出订购图书的相关信息。调用存储过程,显示会员「四十不惑」订购图书的情况。

视图

目的:掌握视图的定义、维护、使用。

内容:

1定义基于图书表的视图包含图书编号、图书名称、作者、价格、出版社、图书类别

2查询图书表视图输出图书的名称和价格并把查询结果按价格降序排列。

3查询图书表视图输出价格最高的三种图书的名称和价格。

触发器

创建

目的:掌握触发器的创建和执行。

内容:在「网上书店」数据库中创建一个名为 tri_1 的触发器,当向订购表中插入记录时,如果订购量 <=0就将订购量设置为 1。

使用

目的:掌握触发器的使用。

内容:

1在「网上书店」数据库中创建一个名为 tri_2 的触发器,要求实现如下功能:当删除图书类别表中的某个图书类别时,将图书表中对应的图书类别的值设置为 NULL。

2在「网上书店」数据库中创建一个名为 tri_3 的触发器,要求实现如下功能:当删除某个会员的时候,自动删除该会员的订购信息。

删除

目的:掌握触发器的删除

内容:删除网上书店数据库中的触发器 tri_1。

用户管理

创建新用户

目的:掌握使用 SQL 语句进行用户的创建、查看和删除操作。

内容:

1使用 SQL 语句创建 test 用户。

2使用 SQL 语句查看创建的 test 用户的信息。

3使用 SQL 语句删除 test 用户。

用户权限授予和回收

目的:掌握使用 SQL 语句授予和收回用户权限。

内容:

1使用 SQL 语句授予 test 用户对「学生选课」数据库中 studentInfo 表、teacher 表的查询、插入、更新和删除数据的权限。

2使用 SQL 语句收回 test 用户的全部权限。