mysql语句-图书管理系统(增删改查)

一、相关表

图书管理系统 共涉及四张表:
1、图书类别表
2、图书信息表
3、读者信息表
4、借阅信息表

在这里插入图片描述在这里插入图片描述
插入图片描述在这里插入图片描述

二、系统需求

1、要求一个读者借书时间为一个月
2、读者每借一本书,余额就扣除这本书价格的3%。

三、任务需求

1、用mysql语句创建四张表
-- 创建数据库
create database book;
use book;
-- 1 图书类别表
create table category(
id int primary key auto_increment,
name varchar(20) not null,
parent_id int not null
);
-- 2 图书信息表
create table bookinfo(
book_id int primary key auto_increment,
category_id int,
book_name varchar(20) not null,
auther varchar(20) not null,
price float(6,2) not null,
press varchar(20) not null,
public_date date not null,
store int not null,
constraint fk_cate foreign key(category_id) references category(id)
)auto_increment=10000;
-- 3读者信息表
create table reader(
card_id char(18) primary key,
name varchar(20) not null,
sex enum('男','女','保密') default'保密',
age tinyint not null,
phone_number char(11) not null,
balance decimal(6,2) default 200
);
-- 4借阅信息表
create table borrowinfo(
book_id int,
card_id char(18),
borrow_date date not null,
return_date date,
is_return enum('是','否'),
constraint pk_bookid_cardid primary key(book_id,card_id),
constraint fk_bookid foreign key(book_id) references bookinfo(book_id),
constraint fk_cardid foreign key(card_id) references reader(card_id)
);
2、用mysql语句插入所有记录
-- 1 插入类别记录
insert into category(name,parent_id) values('计算机',0),('历史',0),('英语',0),('科学',0),('数学',0),('艺术',0);

在这里插入图片描述

-- 2 插入图书记录
insert into bookinfo(category_id,book_name,auther,price,press,public_date,store) values(1,'Android权威指南','王贺',58.8,'人民邮电出版社','2016-02-01',3);
insert into bookinfo(category_id,book_name,auther,price,press,public_date,store) values(1,'linux私房菜','鸟哥',76.5,'人民邮电出版社','2015-09-21',10);
insert into bookinfo(category_id,book_name,auther,price,press,public_date,store) values(1,'Java编程思想','布鲁斯',110,'机械工业出版社','2008-05-30',12);
insert into bookinfo(category_id,book_name,auther,price,press,public_date,store) values(1,'JavaScript DOM 编程艺术','吉米科',49.0,'人民邮电出版社','2016-02-01',4);
insert into bookinfo(category_id,book_name,auther,price,press,public_date,store) values(3,'英语常用口语100句','李希',28,'南方工业出版社','2002-04-25',6);
insert into bookinfo(category_id,book_name,auther,price,press,public_date,store) values(5,'高等数学一','王志胜',45,'吉林工业出版社','2010-04-25',6);
insert into bookinfo(category_id,book_name,auther,price,press,public_date,store) values(5,'高等数学2','王志胜',48,'吉林工业出版社','2010-04-25',6);
insert into bookinfo(category_id,book_name,auther,price,press,public_date,store) values(2,'三国鼎立','吴风',55,'人民出版社','2010-09-18',6);
insert into bookinfo(category_id,book_name,auther,price,press,public_date,store) values(2,'且看盛唐','文旭烟',32,'人民出版社','2013-11-29',6);

在这里插入图片描述

-- 3 插入读者记录
insert into reader values('330100199201231104','小明','男',29,'15787223423',300);
insert into reader values('330100199201231105','小红','女',21,'15787223424',220);
insert into reader values('330100199201231106','王迷','男',19,'15787223425',310);
insert into reader values('330100199201231107','李思','女',24,'15787223426',230);
insert into reader values('330100199201231108','小王','女',32,'15787223427',240);
insert into reader values('330100199201231109','王霞','女',26,'15787223428',300);

在这里插入图片描述

3、用mysql语句完成一次借阅

需求:

身份证号为‘330100199201231107’的读者,今天借了一本编号为’10002‘的图书,完成以下业务需求:

1、向借阅信息表中插入借书信息

insert into borrowinfo(book_id,card_id,borrow_date,return_date,is_return) values('10002','330100199201231107',curdate(),date_add(curdate(),interval 1 month),'否');

2、更新图书信息表的库存

update bookinfo set store=store-1 where book_id='10002';

3、更新读者信息表的余额

select price from bookinfo where book_id='10002';
update reader set balance=balance-0.03*110 where card_id='330100199201231107';
4、mysql查询语句

1、查看图书信息表中有哪些出版社?(distinct可以消除重复)

select distinct press from bookinfo;

在这里插入图片描述

2、查看图书信息表中出版社为人民出版社的图书有几本?

select count(*)from bookinfo where press='人民出版社';

3、查看读者信息表中女读者有几个?

select count(*) from reader where sex='女';

4、查看读者信息表中男女读者分别有几个?

select sex,count(*) from reader group by sex;

>

5、查看图书信息表中只有一种图书的出版社有哪些?

select press from bookinfo group by press having count(press)=1;

在这里插入图片描述

6、查看图书信息表的信息,要求出版日期以’201702’这样的形式显示

select book_id,book_name,date_format(public_date,'%Y%m') from bookinfo;

在这里插入图片描述

7、将图书信息表按库存降序,价格升序排列

select*from bookinfo order by store desc,price;

在这里插入图片描述
8、查询读者信息表中从第2条开始的3条读者记录。

select *from reader limit 1,3;

在这里插入图片描述

9、将图书信息表按照库存进行分组,统计每组库存下的个数,按照库存降序排序,并且查看结果中的前4条记录。

select store,count(*) from bookinfo group by store order by store limit 4;
5、mysql删除语句

1、从读者信息表中删除身份证号为‘330100199201231105’的读者记录

delete from reader where card_id='330100199201231105';

2、清除借阅信息表中的所有记录

delete from borrowinfo;

– 删除并重建一个表

truncate table borrowinfo;

3、删除图书信息表中所有计算机类的书

delete from bookinfo where category_id=(select id from category where name='计算机');
  • 36
    点赞
  • 292
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
一.功能简介 1. 实现一个图书管理系统图书信息存放到一个数据库中。图书包含信息:图书号、图书名、作者、价格、备注字段。 2. 系统实现如下的基本管理功能: (1)用户分为两类:系统管理员,一般用户。 (2)提供用户注册和用户登录验证功能;其中登录用户的信息有:登录用户名,登录密码等。 (3)管理员可以实现对注册用户的管理(删除),并实现图书的创建、查询、修改和删除等有关的操作。 (4)一般用户,只能查询图书,并进行借书、还书操作,每个用户最多借阅8本,即当目前借书已经是8本,则不能再借书了,只有还书后,才可以再借阅。 二.涉及技术 Struts2框架、MySQL数据库、C3P0数据池、Jsp、HTML、CSS、JavaScript等技术。 三.设计思路 1. 基于Struts2框架进行编程设计,连接MySQL数据库实现数据的增删查改,应用Jsp、HTML、CSS、JavaScript对访问页面进行编写和美化。 2. 分别创建book表和user表,用以存放图书信息和用户数据。其中user表中,设有flag以区分管理员和普通用户。 3. 分别创建Book类和User类,与数据表相对应。每本书和每个用户都有唯一的id与之对应。 4. 创建C3P0属性文件和数据库连接工具类。 5. 设计数据库操作类:UserDao类和BookDao类。UserDao用于实现所有对user表的操作,BookDao用于实现所有对book表的操作。 6. 创建分别对应UserDao类和BookDao类的Action:UserAction和BookAction。采用基于注解的方式进行Action配置。 7. 用户账号分为管理员账号和普通用户账号,注册时加以区分,登录时即可自动判断进入对应的操作主页面。 8. 管理员可实现用户的查询显示,模糊查询,删除,批量删除,全选和取消全选等功能;可实现图书的查询显示,模糊查询,添加,删除,批量删除,全选和取消全选等功能。 9. 普通用户实现借书和还书功能,借书功能通过对book表的查询,将未借出的图书按照id顺序排列显示,点击表格后方的“借阅”按钮,进行确认借阅,将book表中本书的borrowperson列的值改为本用户账号。对于借阅成功的图书可以在“当前借阅”中进行查看。还书功能通过在“当前借阅”中点击“还书”按钮,进行确认还书,将book表中本书的borrowperson列的值改为“空”,本书信息将可以在“借书”界面查看。 四.存在的问题 1. 原本希望能为每一个用户创建一个对应的以其账号命名的数据表,用以存放用户所借图书信息,但创建表的SQL语句无法在java代码中执行,所以只好在book表中添加一列borrowperson,用来存放借阅本书的用户账号,这样查询用户当前借阅记录时,以“where borrowperson=‘account’”为条件对book表进行查询即可。但是每个用户要当前查询借阅记录时都需要对整个book表进行遍历,效率太低。 2. 模糊查询时,因同时需要进行where筛选,SQL语句无法执行,只好分开查询,先进行模糊查询,查询结果存放到list表中,再通过遍历list表进行判断是否符合where的条件,若符合,则存入另一个list表中。这种方法虽然实现了查询,但效率太低,代码过于繁重。 五.改进预想 这些本不应该是预想,原本希望在本次作业中实现的,但时间不够充分,只能作为下一步的改建预想。 1. 希望实现登录时验证码验证登录; 2. 希望实现查询时,查询结果分页浏览; 3. 进一步优化Action之间的传值方法; 4. 页面进一步优化、美化; 5. 实现用户借书还书时间记录,和借阅时长限制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值