如何用SQL设计一个图书管理系统<纯SQL>

最近在某鱼上有小伙伴让我帮他设计一个图书管理系统的数据库,从建库到简单的数据库,现在写完了,分享给大家哦!

我们先来看看他的要求,如下图:
在这里插入图片描述
根据以上需求我们来编写我们的SQL语句:

1. 创建数据库用户
--创建TEST用户
CREATE USER TEST PROFILE "DEFAULT" IDENTIFIED BY "TEST" 
DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
--TEST权限赋予用户
GRANT "CONNECT" TO TEST WITH ADMIN OPTION;
GRANT "RESOURCE" TO TEST WITH ADMIN OPTION;
GRANT "DBA" TO TEST WITH ADMIN OPTION;
2. 创建用户表
--创建用户表
create table customer
(
  userid integer,
  xm varchar2(500),
  xb varchar2(500),
  tel varchar2(500)
);
--给用户表添加字段注释
comment on column customer.userid is '用户编号';
comment on column customer.xm is '姓名';
comment on column customer.xb is '性别';
comment on column customer.tel is '电话';
3. 创建图书分类表
--创建图书分类表
create table bookcategory
(
  category_id integer,
  category_name varchar2(500)
);

--给图书分类表的字段加上注释
comment on column bookcategory.category_id is '类别编号';
comment on column bookcategory.category_name is '类别名称';
4. 创建图书表
--创建图书表
create table book
(
  bookid integer,
  bookname varchar2(500),
  bookauthor varchar2(500),
  bookpublisher varchar2(500),
  bookallnum integer,
  bookfreenum integer,
  bookcategoryid integer
);

--给图书表加注释
comment on column book.bookid is '图书编号';
comment on column book.bookname is '书名';
comment on column book.bookauthor is '作者';
comment on column book.bookpublisher is '出版社';
comment on column book.bookallnum is '总量';
comment on column book.bookfreenum is '剩余量';
comment on column book.bookcategoryid is '分类';
5. 创建借阅信息表
create table borrow
(
   id integer,
   book_id integer,
   user_id integer,
   borrow_time varchar2(500),
   borrow_limit varchar2(500),
   back_time varchar2(500)
);

--给借阅信息表加上注释
comment on column borrow.id is '编号';
comment on column borrow.book_id is '图书编号';
comment on column borrow.user_id is '用户编号';
comment on column borrow.borrow_time is '借阅时间';
comment on column borrow.borrow_limit is '借阅期限';
comment on column borrow.back_time is '归还时间';
6. 以下是图书分类的维护,对图书分类的增删改查
1.查询所有的分类
select * from bookcategory;

2.添加图书分类
insert into bookcategory(category_id,category_name) values('1','小说类');
insert into bookcategory(category_id,category_name) values('2','文学类');

3.删除某一图书分类
delete from bookcategory where category_name='小说类';

4.修改图书分类,将小说类改为科学类
update bookcategory set category_name='科学类' where category_name='小说类';

5.查询指定名称的图书分类
select * from bookcategory where category_name='文学类';
7. 图书信息的维护
1.查询所有的图书信息
select * from book;

2.添加图书信息
insert into book(bookid,bookname,bookauthor,bookpublisher,bookallnum,bookfreenum,bookcategoryid) values('1','钢铁是怎样练成的','老文学家','新华出版社',50,20,1);

3.删除指定名称的图书信息
delete from book where bookname='钢铁是怎样练成的';

4.修改指定名称图书的作家名称<备注:需要修改哪个字段就改哪个字段>
update book set bookauthor='吴青峰' where booknaem='钢铁是怎样练成的';

5.查询指定名称的图书信息
select * from book where bookname='钢铁是怎样练成的';
8. 用户信息的维护
1.查询所有的用户信息
select * from customer;

2.添加用户
insert into customer(userid,xm,xb,tel) values (1,'test','password1','155554747933');
insert into customer(userid,xm,xb,tel) values (2,'test3','password2','1535554747933');

3.删除指定用户
delete from customer where xm='test';

4.修改用户信息
update customer set xb='123' where xm='test';

至此,一个简单的小型图书管理系统的数据库就搭建完成了

  • 36
    点赞
  • 443
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
好的,我可以为您提供一个简单的图书信息管理系统的JAVA代码和数据库SQL语句,具体实现如下: 首先,我们需要定义一个Book类,包含书籍的属性和方法: ```java public class Book { private int id; private String title; private String author; private String publisher; private int year; private int pages; private double price; public Book(int id, String title, String author, String publisher, int year, int pages, double price) { this.id = id; this.title = title; this.author = author; this.publisher = publisher; this.year = year; this.pages = pages; this.price = price; } public int getId() { return id; } public String getTitle() { return title; } public String getAuthor() { return author; } public String getPublisher() { return publisher; } public int getYear() { return year; } public int getPages() { return pages; } public double getPrice() { return price; } } ``` 然后,我们需要实现一个BookDAO类,用于管理图书信息的增删改查等操作: ```java import java.sql.*; import java.util.ArrayList; import java.util.List; public class BookDAO { private String jdbcURL; private String jdbcUsername; private String jdbcPassword; private Connection jdbcConnection; public BookDAO(String jdbcURL, String jdbcUsername, String jdbcPassword) { this.jdbcURL = jdbcURL; this.jdbcUsername = jdbcUsername; this.jdbcPassword = jdbcPassword; } private void connect() throws SQLException { if (jdbcConnection == null || jdbcConnection.isClosed()) { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { throw new SQLException(e); } jdbcConnection = DriverManager.getConnection( jdbcURL, jdbcUsername, jdbcPassword); } } private void disconnect() throws SQLException { if (jdbcConnection != null && !jdbcConnection.isClosed()) { jdbcConnection.close(); } } public boolean insertBook(Book book) throws SQLException { String sql = "INSERT INTO book (title, author, publisher, year, pages, price) VALUES (?, ?, ?, ?, ?, ?)"; connect(); PreparedStatement statement = jdbcConnection.prepareStatement(sql); statement.setString(1, book.getTitle()); statement.setString(2, book.getAuthor()); statement.setString(3, book.getPublisher()); statement.setInt(4, book.getYear()); statement.setInt(5, book.getPages()); statement.setDouble(6, book.getPrice()); boolean rowInserted = statement.executeUpdate() > 0; statement.close(); disconnect(); return rowInserted; } public List<Book> listAllBooks() throws SQLException { List<Book> listBook = new ArrayList<>(); String sql = "SELECT * FROM book"; connect(); Statement statement = jdbcConnection.createStatement(); ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { int id = resultSet.getInt("id"); String title = resultSet.getString("title"); String author = resultSet.getString("author"); String publisher = resultSet.getString("publisher"); int year = resultSet.getInt("year"); int pages = resultSet.getInt("pages"); double price = resultSet.getDouble("price"); Book book = new Book(id, title, author, publisher, year, pages, price); listBook.add(book); } resultSet.close(); statement.close(); disconnect(); return listBook; } public boolean deleteBook(Book book) throws SQLException { String sql = "DELETE FROM book where id = ?"; connect(); PreparedStatement statement = jdbcConnection.prepareStatement(sql); statement.setInt(1, book.getId()); boolean rowDeleted = statement.executeUpdate() > 0; statement.close(); disconnect(); return rowDeleted; } public boolean updateBook(Book book) throws SQLException { String sql = "UPDATE book SET title = ?, author = ?, publisher = ?, year = ?, pages = ?, price = ?"; sql += " WHERE id = ?"; connect(); PreparedStatement statement = jdbcConnection.prepareStatement(sql); statement.setString(1, book.getTitle()); statement.setString(2, book.getAuthor()); statement.setString(3, book.getPublisher()); statement.setInt(4, book.getYear()); statement.setInt(5, book.getPages()); statement.setDouble(6, book.getPrice()); statement.setInt(7, book.getId()); boolean rowUpdated = statement.executeUpdate() > 0; statement.close(); disconnect(); return rowUpdated; } public Book getBook(int id) throws SQLException { Book book = null; String sql = "SELECT * FROM book WHERE id = ?"; connect(); PreparedStatement statement = jdbcConnection.prepareStatement(sql); statement.setInt(1, id); ResultSet resultSet = statement.executeQuery(); if (resultSet.next()) { String title = resultSet.getString("title"); String author = resultSet.getString("author"); String publisher = resultSet.getString("publisher"); int year = resultSet.getInt("year"); int pages = resultSet.getInt("pages"); double price = resultSet.getDouble("price"); book = new Book(id, title, author, publisher, year, pages, price); } resultSet.close(); statement.close(); return book; } } ``` 最后,我们需要创建一个MySQL数据库,并使用以下SQL语句创建book表: ```sql CREATE TABLE book ( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(255), author VARCHAR(255), publisher VARCHAR(255), year INT, pages INT, price DOUBLE, PRIMARY KEY (id) ); ``` 至此,一个简单的图书信息管理系统的JAVA代码和数据库SQL语句就完成了。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖大师兄.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值