MYSQL——Sql语法应用 图书管理系统

一、图书管理系统

作业:设计图书管理系统,包含学生和图书信息,且图书可以进行分类,学生可以在一个时间范围内借阅

图书,并在这个时间范围内归还图书。

要求:

1. 涉及以上场景的数据库表,并建立表关系。

2. 查询某个分类下的图书借阅信息。

3. 查询在某个时间之后的图书借阅信息。

4. 查询图书借阅周期在某个时间范围内的图书借阅信息(图书借阅周期与查询时间范围有交集)。

思路:

①先建四张表:学生表、图书表、借阅表(记录表)、分类(待定)

②借阅表——中间表,实现学生和图书的多对多关系

③程序编写实现

1.图书表

create table book(
    id int primary key,
    name varchar(20),
    author varchar(20),
    price decimal(11,2),
    category_id int,
    foreign key(category_id) reference
    category(id)
);

2.学生表

create table student(
    id int primary key,
    name varchar(20)
);

3.图书分类表 (一对多:图书分类表——图书表)

create table category(
    id int primary key,
    name varchar(20),
);

4.图书借阅信息表(多对多:学生,图书,时间)——中间表

create table borrow_info(
    id int primary key,
    start_time timestamp null,
    end_time timestamp null,
    book_id int,
    student_id int,
    foreign key(book_id) references book(id),
	foreign key(student_id) references
	student(id)
);

5.插入数据

6.查询

(1)查询在某个时间之后的图书借阅信息

(2)查询重复图书信息

SELECT
	* 
FROM
	book 
WHERE
	( NAME, author ) IN ( SELECT NAME, author FROM book GROUP BY NAME, 
 author HAVING count( 0 ) > 1 );

(3)查询某个分类下的图书借阅信息

SELECT
	bk.NAME book_name,
	bk.author book_author,
	s.NAME student_name,
	bi.start_time,
	bi.end_time
FROM
	borrow_info bi
	JOIN book bk ON bi.book_id = bk.id
	JOIN category c ON bk.category_id = c.id
	JOIN student s ON bi.student_id = s.id 
WHERE
	c.NAME = '计算机';

(4)查询图书借阅周期在某个时间范围内的图书借阅信息

SELECT
	bk.NAME book_name,
	bk.author book_author,
	s.NAME student_name,
	bi.start_time,
	bi.end_time
FROM
	borrow_info bi
	JOIN book bk ON bi.book_id = bk.id
	JOIN category c ON bk.category_id = c.id
	JOIN student s ON bi.student_id = s.id 
WHERE
	bi.start_time<'2019-08-11 00:00:00' and bi.end_time>'2019-07-10 00:00:00';

 

  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值