0


mysql library DB实操练习

1.1查询库存表中的书号和库存状态列,要求消除重复行

mysql> use librarydb;

Database changed

mysql> select distinct 书号,库存状态 from 库存表;

+-------+----------+

| 书号 | 库存状态 |

+-------+----------+

| A0120 | 在馆 |

| A0120 | 借出 |

| A0134 | 在馆 |

| A0134 | 借出 |

| B1101 | 在馆 |

| C1269 | 丢失 |

| C1269 | 借出 |

| C3256 | 借出 |

| C3256 | 在馆 |

+-------+----------+

9 rows in set (0.03 sec)

1.2 查询读者表中的姓名和单位列,显示的列标题改为姓名显示为“name”,单位显示为“college”

mysql> select 姓名 as name,单位 as college from 读者表;

+--------+----------+

| name | college |

+--------+----------+

| 张小东 | 软件学院 |

| 苏明 | 财经学院 |

| 梁小红 | 软件学院 |

| 赵明敏 | 传媒学院 |

| 李丰年 | 计财处 |

+--------+----------+

5 rows in set (0.03 sec)

1.3查询图书表中每种书的书名和金额

mysql> select 书名,数量单价 as 金额 from 图书表;*

+----------------+--------+

| 书名 | 金额 |

+----------------+--------+

| 庄子 | 92.50 |

| 唐诗三百首 | 280.00 |

| 西方经济学史 | 318.40 |

| 商业博弈 | 585.00 |

| 数据结构 | 580.00 |

| 品牌策划与推广 | 252.00 |

| C语言程序设计 | 404.80 |

| MySQL数据库 | 261.00 |

+----------------+--------+

8 rows in set (0.05 sec)

1.4 查询库存表中员工的条码和库存状态,要求库存状态值为在馆时显示为“1”,借出时显示为“0”,丢失时显示为“-1”

mysql> select 条码,

**** -> case****

**** -> when 库存状态='借出' then '0'****

**** -> when 库存状态='在馆' then '1'****

**** -> else '-1'****

**** -> end as 库存状态****

**** -> from 库存表;****

+--------+----------+

| 条码 | 库存状态 |

+--------+----------+

| 123412 | 1 |

| 123413 | 0 |

| 223410 | 1 |

| 223411 | 0 |

| 311231 | 1 |

| 321123 | -1 |

| 321124 | 0 |

| 411111 | 0 |

| 411112 | 0 |

| 411113 | 1 |

+--------+----------+

10 rows in set (0.04 sec)

2.1 查询图书表中数量大于10本的图书书名、数量和出版社

mysql> select 书名,数量,出版社 from 图书表 where 数量>10;

+---------------+------+----------------+

| 书名 | 数量 | 出版社 |

+---------------+------+----------------+

| 商业博弈 | 15 | 北京大学出版社 |

| 数据结构 | 20 | 高等教育出版社 |

| C语言程序设计 | 11 | 高等教育出版社 |

+---------------+------+----------------+

3 rows in set (0.07 sec)

2.2查询库存表的存放位置含有“A”且库存状态为“借出” 的图书信息

mysql> select * from 库存表 where 库存状态='借出' and 存放位置 like '%A%';

1054 - Unknown column '存放位置' in 'where clause'

mysql> select * from 库存表 where 库存状态='借出' and 位置 like '%A%';

+--------+-------+--------+----------+

| 条码 | 书号 | 位置 | 库存状态 |

+--------+-------+--------+----------+

| 123413 | A0120 | 1-A-57 | 借出 |

| 321124 | C1269 | 3-A-13 | 借出 |

+--------+-------+--------+----------+

2 rows in set (0.09 sec)

2.3 查询图书表中财经和文学类图书数量大于5本的图书信息

mysql> select * from 图书表 where 类别='财经' or 类别='文学' and 数量>5;

+-------+--------------+------+--------+----------------+-------+------+

| 书号 | 书名 | 类别 | 作者 | 出版社 | 单价 | 数量 |

+-------+--------------+------+--------+----------------+-------+------+

| A0134 | 唐诗三百首 | 文学 | 李平 | 安徽科学出版社 | 28.00 | 10 |

| B1101 | 西方经济学史 | 财经 | 莫竹芩 | 海南出版社 | 39.80 | 8 |

| B2213 | 商业博弈 | 财经 | 孔英 | 北京大学出版社 | 39.00 | 15 |

+-------+--------------+------+--------+----------------+-------+------+

3 rows in set (0.08 sec)

2.3

mysql> select * from 图书表 where (类别='财经' or 类别='文学') and 数量>5;

+-------+--------------+------+--------+----------------+-------+------+

| 书号 | 书名 | 类别 | 作者 | 出版社 | 单价 | 数量 |

+-------+--------------+------+--------+----------------+-------+------+

| A0134 | 唐诗三百首 | 文学 | 李平 | 安徽科学出版社 | 28.00 | 10 |

| B1101 | 西方经济学史 | 财经 | 莫竹芩 | 海南出版社 | 39.80 | 8 |

| B2213 | 商业博弈 | 财经 | 孔英 | 北京大学出版社 | 39.00 | 15 |

+-------+--------------+------+--------+----------------+-------+------+

3 rows in set (0.07 sec)

2.4 查询借阅表中还书日期为空 的记录

mysql> select * from 借阅表 where 还书日期 is null;

+--------+--------+----------+------------+----------+----------+

| 借阅号 | 条码 | 读者编号 | 借阅日期 | 还书日期 | 借阅状态 |

+--------+--------+----------+------------+----------+----------+

| 100001 | 123413 | 0001 | 2020-11-05 | NULL | 借阅 |

| 100003 | 321123 | 1001 | 2020-07-01 | NULL | 过期 |

| 100005 | 321124 | 0001 | 2020-10-15 | NULL | 借阅 |

| 100006 | 223411 | 2001 | 2020-10-16 | NULL | 借阅 |

| 100008 | 411111 | 0001 | 2020-09-25 | NULL | 借阅 |

| 100009 | 411111 | 1001 | 2020-10-08 | NULL | 借阅 |

+--------+--------+----------+------------+----------+----------+

6 rows in set (0.09 sec)

3.1查询“张小东”的基本状况和图书借阅情况

mysql> select * from 读者表,借阅表 where 读者表.读者编号=借阅表.读者编号 and 读者表.姓名='张小东';

+----------+--------+--------+----------+--------+--------+--------+----------+------------+----------+----------+

| 读者编号 | 姓名 | 类别号 | 单位 | 有效性 | 借阅号 | 条码 | 读者编号 | 借阅日期 | 还书日期 | 借阅状态 |

+----------+--------+--------+----------+--------+--------+--------+----------+------------+----------+----------+

| 0001 | 张小东 | 1 | 软件学院 | 有效 | 100001 | 123413 | 0001 | 2020-11-05 | NULL | 借阅 |

| 0001 | 张小东 | 1 | 软件学院 | 有效 | 100005 | 321124 | 0001 | 2020-10-15 | NULL | 借阅 |

| 0001 | 张小东 | 1 | 软件学院 | 有效 | 100008 | 411111 | 0001 | 2020-09-25 | NULL | 借阅 |

+----------+--------+--------+----------+--------+--------+--------+----------+------------+----------+----------+

3 rows in set (0.08 sec)

3.2查询借阅状态为“借阅”的图书的书号和条码

mysql> select 库存表.书号,借阅表.条码 from 库存表,借阅表 where 借阅表.条码=库存表.条码 and 借阅表.借阅状态='借阅';

+-------+--------+

| 书号 | 条码 |

+-------+--------+

| A0120 | 123413 |

| C1269 | 321124 |

| A0134 | 223411 |

| C3256 | 411111 |

| C3256 | 411111 |

+-------+--------+

5 rows in set (0.09 sec)

3.3查询每位读者的姓名、单位、可借天数和可借数量

mysql> select 读者表.姓名,读者表.单位,读者类型表.可借天数,读者类型表.可借数量 from 读者表,读者类型表 where 读者表.类别号=读者类型表.类别号;

+--------+----------+----------+----------+

| 姓名 | 单位 | 可借天数 | 可借数量 |

+--------+----------+----------+----------+

| 张小东 | 软件学院 | 30 | 10 |

| 苏明 | 财经学院 | 30 | 10 |

| 梁小红 | 软件学院 | 60 | 20 |

| 赵明敏 | 传媒学院 | 60 | 20 |

| 李丰年 | 计财处 | 20 | 15 |

+--------+----------+----------+----------+

5 rows in set (0.09 sec)

3.4查询每个读者的借阅信息、包括读者姓名、书名、借阅日期、借阅状态

mysql> select 读者表.姓名,图书表.书名,借阅表.借阅日期,借阅表.借阅状态 from 读者表 join 借阅表 on 读者表.读者编号=借阅表.读者编号 join 库存表 on 借阅表.条码=库存表.条码 join 图书表 on 库存表.书号=图书表.书号;

+--------+-------------+------------+----------+

| 姓名 | 书名 | 借阅日期 | 借阅状态 |

+--------+-------------+------------+----------+

| 张小东 | 庄子 | 2020-11-05 | 借阅 |

| 张小东 | 数据结构 | 2020-10-15 | 借阅 |

| 张小东 | MySQL数据库 | 2020-09-25 | 借阅 |

| 苏明 | 唐诗三百首 | 2020-09-28 | 已还 |

| 梁小红 | 数据结构 | 2020-07-01 | 过期 |

| 梁小红 | MySQL数据库 | 2020-10-08 | 借阅 |

| 赵明敏 | MySQL数据库 | 2020-09-01 | 已还 |

| 李丰年 | 数据结构 | 2020-10-09 | 已还 |

| 李丰年 | 唐诗三百首 | 2020-10-16 | 借阅 |

+--------+-------------+------------+----------+

9 rows in set (0.10 sec)

3.5查询库存表中每本书的条码、位置和借阅的读者编号。没有借阅的,读者编号用null表示

mysql> select 库存表.条码,库存表.位置,借阅表.读者编号,借阅表.借阅状态 from 库存表 left join 借阅表 on (库存表.条码=借阅表.条码);

+--------+--------+----------+----------+

| 条码 | 位置 | 读者编号 | 借阅状态 |

+--------+--------+----------+----------+

| 123412 | 1-A-56 | NULL | NULL |

| 123413 | 1-A-57 | 0001 | 借阅 |

| 223410 | 2-B-01 | NULL | NULL |

| 223411 | 2-B-02 | 0002 | 已还 |

| 223411 | 2-B-02 | 2001 | 借阅 |

| 311231 | 2-C-23 | NULL | NULL |

| 321123 | 3-A-12 | 1001 | 过期 |

| 321124 | 3-A-13 | 2001 | 已还 |

| 321124 | 3-A-13 | 0001 | 借阅 |

| 411111 | 3-B-01 | 1002 | 已还 |

| 411111 | 3-B-01 | 0001 | 借阅 |

| 411111 | 3-B-01 | 1001 | 借阅 |

| 411112 | 3-B-02 | NULL | NULL |

| 411113 | 3-B-03 | NULL | NULL |

+--------+--------+----------+----------+

14 rows in set (0.10 sec)

4.1** **按单位统计出该单位的读者人数

mysql> select 单位,count() from 读者表 group by 单位;*

+----------+----------+

| 单位 | count(*) |

+----------+----------+

| 软件学院 | 2 |

| 财经学院 | 1 |

| 传媒学院 | 1 |

| 计财处 | 1 |

+----------+----------+

4 rows in set (0.08 sec)

4.2查找读者数量在2人及以上的部门名称和读者人数

*mysql> select 单位,count() as 读者人数 from 读者表 group by 单位 having count(*)>=2;**

+----------+----------+

| 单位 | 读者人数 |

+----------+----------+

| 软件学院 | 2 |

+----------+----------+

1 row in set (0.02 sec)

4.3分别统计各出版社的图书平均单价和总金额

mysql> select 出版社,avg(单价) as '平均单价',sum(单价数量) as '总金额' from 图书表 group by 出版社;*

+----------------+-----------+--------+

| 出版社 | 平均单价 | 总金额 |

+----------------+-----------+--------+

| 吉林大学出版社 | 18.500000 | 92.50 |

| 安徽科学出版社 | 28.000000 | 280.00 |

| 海南出版社 | 39.799999 | 318.40 |

| 北京大学出版社 | 39.000000 | 585.00 |

| 高等教育出版社 | 32.900000 | 984.80 |

| 人民邮电出版社 | 42.000000 | 252.00 |

| 电子工业出版社 | 29.000000 | 261.00 |

+----------------+-----------+--------+

7 rows in set (0.05 sec)

4.4对借阅表先按照读者编号吗,再按照条码统计图书的借阅次数,并显示小计

*mysql> select 读者编号,条码,count() as '借阅次数' from 借阅表 group by 读者编号,条码 order by count(*);**

+----------+--------+----------+

| 读者编号 | 条码 | 借阅次数 |

+----------+--------+----------+

| 0002 | 223411 | 1 |

| 2001 | 321124 | 1 |

| 2001 | 223411 | 1 |

| 0001 | 411111 | 1 |

| 0001 | 123413 | 1 |

| 1001 | 321123 | 1 |

| 0001 | 321124 | 1 |

| 1002 | 411111 | 1 |

| 1001 | 411111 | 1 |

+----------+--------+----------+

9 rows in set (0.09 sec)

4.5** **将图书表按照数量从小到大排列

mysql> select * from 图书表 order by 数量 desc;

+-------+----------------+--------+--------+----------------+-------+------+

| 书号 | 书名 | 类别 | 作者 | 出版社 | 单价 | 数量 |

+-------+----------------+--------+--------+----------------+-------+------+

| C1269 | 数据结构 | 计算机 | 李刚 | 高等教育出版社 | 29.00 | 20 |

| B2213 | 商业博弈 | 财经 | 孔英 | 北京大学出版社 | 39.00 | 15 |

| C3182 | C语言程序设计 | 计算机 | 李学刚 | 高等教育出版社 | 36.80 | 11 |

| A0134 | 唐诗三百首 | 文学 | 李平 | 安徽科学出版社 | 28.00 | 10 |

| C3256 | MySQL数据库 | 计算机 | 孙季红 | 电子工业出版社 | 29.00 | 9 |

| B1101 | 西方经济学史 | 财经 | 莫竹芩 | 海南出版社 | 39.80 | 8 |

| C3121 | 品牌策划与推广 | 计算机 | 张晓红 | 人民邮电出版社 | 42.00 | 6 |

| A0120 | 庄子 | 文学 | 庄周 | 吉林大学出版社 | 18.50 | 5 |

+-------+----------------+--------+--------+----------------+-------+------+

8 rows in set (0.09 sec)

4.6将借阅表按照借阅状态排序,状态相同的再按照借阅日期从小到大排序

mysql> select 读者编号,条码,count() as '借阅次数' from 借阅表 group by 读者编号,条码 order by 借阅次数;*

+----------+--------+----------+

| 读者编号 | 条码 | 借阅次数 |

+----------+--------+----------+

| 0002 | 223411 | 1 |

| 2001 | 321124 | 1 |

| 2001 | 223411 | 1 |

| 0001 | 411111 | 1 |

| 0001 | 123413 | 1 |

| 1001 | 321123 | 1 |

| 0001 | 321124 | 1 |

| 1002 | 411111 | 1 |

| 1001 | 411111 | 1 |

+----------+--------+----------+

9 rows in set (0.07 sec)

mysql> select * from 借阅表 order by 借阅状态,借阅日期;

+--------+--------+----------+------------+------------+----------+

| 借阅号 | 条码 | 读者编号 | 借阅日期 | 还书日期 | 借阅状态 |

+--------+--------+----------+------------+------------+----------+

| 100008 | 411111 | 0001 | 2020-09-25 | NULL | 借阅 |

| 100009 | 411111 | 1001 | 2020-10-08 | NULL | 借阅 |

| 100005 | 321124 | 0001 | 2020-10-15 | NULL | 借阅 |

| 100006 | 223411 | 2001 | 2020-10-16 | NULL | 借阅 |

| 100001 | 123413 | 0001 | 2020-11-05 | NULL | 借阅 |

| 100007 | 411111 | 1002 | 2020-09-01 | 2020-09-24 | 已还 |

| 100002 | 223411 | 0002 | 2020-09-28 | 2020-10-13 | 已还 |

| 100004 | 321124 | 2001 | 2020-10-09 | 2020-10-14 | 已还 |

| 100003 | 321123 | 1001 | 2020-07-01 | NULL | 过期 |

+--------+--------+----------+------------+------------+----------+

9 rows in set (0.07 sec)

4.7对借阅表中读者按照类别组进行分组,同类别的再按照单位分别统计借阅次数,并按照次数从小到大排列

mysql> select 类别号,单位,count() as '借阅次数' from 借阅表,读者表 where 借阅表.读者编号=读者表.读者编号 group by 类别号,单位 order by 借阅次数 desc;*

+--------+----------+----------+

| 类别号 | 单位 | 借阅次数 |

+--------+----------+----------+

| 1 | 软件学院 | 3 |

| 2 | 软件学院 | 2 |

| 3 | 计财处 | 2 |

| 1 | 财经学院 | 1 |

| 2 | 传媒学院 | 1 |

+--------+----------+----------+


本文转载自: https://blog.csdn.net/2301_76916026/article/details/131315429
版权归原作者 不归山月 所有, 如有侵权,请联系我们删除。

“mysql library DB实操练习”的评论:

还没有评论