阅读量:0
MySQL数据库期末考试编程题
题目描述:
设计一个简单的图书管理系统,包括以下功能:
1、图书信息表(Book):
书名(book_name):VARCHAR(100)
作者(author):VARCHAR(100)
出版年份(publish_year):YEAR
ISBN(isbn):CHAR(13)
库存数量(stock):INT
2、用户信息表(User):
用户名(username):VARCHAR(50)
密码(password):VARCHAR(50)
联系方式(contact):VARCHAR(100)
3、借阅信息表(Borrow):
借阅ID(borrow_id):INT,主键,自增
用户名(username):VARCHAR(50),外键,关联User表的username
书名(book_name):VARCHAR(100),外键,关联Book表的book_name
借阅日期(borrow_date):DATE
应还日期(due_date):DATE
实际还书日期(return_date):DATE
编程要求:
1、创建数据库和表。
2、插入一些示例数据到各个表中。
3、编写SQL语句实现以下功能:
查询所有图书信息。
查询所有用户信息。
查询所有借阅信息。
查询所有库存数量小于5的图书。
查询特定用户名下所有借阅信息。
借阅图书(假设用户名和书名已知)。
归还图书(假设借阅ID已知)。
答案:
1. 创建数据库 CREATE DATABASE IF NOT EXISTS LibraryManagementSystem; USE LibraryManagementSystem; 2. 创建图书信息表 CREATE TABLE IF NOT EXISTS Book ( book_name VARCHAR(100), author VARCHAR(100), publish_year YEAR, isbn CHAR(13), stock INT, PRIMARY KEY (isbn) ); 3. 创建用户信息表 CREATE TABLE IF NOT EXISTS User ( username VARCHAR(50), password VARCHAR(50), contact VARCHAR(100), PRIMARY KEY (username) ); 4. 创建借阅信息表 CREATE TABLE IF NOT EXISTS Borrow ( borrow_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50), book_name VARCHAR(100), borrow_date DATE, due_date DATE, return_date DATE, FOREIGN KEY (username) REFERENCES User(username), FOREIGN KEY (book_name) REFERENCES Book(book_name) ); 5. 插入示例数据 INSERT INTO Book (book_name, author, publish_year, isbn, stock) VALUES ('The Great Gatsby', 'F. Scott Fitzgerald', 1925, '9780743273565', 10), ('1984', 'George Orwell', 1949, '9780451524935', 5), ('To Kill a Mockingbird', 'Harper Lee', 1960, '9780061120084', 8); INSERT INTO User (username, password, contact) VALUES ('user1', 'password1', '1234567890'), ('user2', 'password2', '0987654321'); INSERT INTO Borrow (username, book_name, borrow_date, due_date, return_date) VALUES ('user1', 'The Great Gatsby', '20230401', '20230415', NULL), ('user2', '1984', '20230402', '20230416', NULL); 6. 查询所有图书信息 SELECT * FROM Book; 7. 查询所有用户信息 SELECT * FROM User; 8. 查询所有借阅信息 SELECT * FROM Borrow; 9. 查询所有库存数量小于5的图书 SELECT * FROM Book WHERE stock < 5; 10. 查询特定用户名下所有借阅信息 SELECT * FROM Borrow WHERE username = 'user1'; 11. 借阅图书(假设用户名和书名已知) 首先检查库存 SELECT stock FROM Book WHERE book_name = 'The Great Gatsby'; 如果库存大于0,执行以下操作 UPDATE Book SET stock = stock 1 WHERE book_name = 'The Great Gatsby'; INSERT INTO Borrow (username, book_name, borrow_date, due_date) VALUES ('user1', 'The Great Gatsby', CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 MONTH)); 12. 归还图书(假设借阅ID已知) UPDATE Borrow SET return_date = CURDATE() WHERE borrow_id = 1; UPDATE Book SET stock = stock + 1 WHERE book_name = (SELECT book_name FROM Borrow WHERE borrow_id = 1);
是按照题目要求完成的MySQL数据库编程题的答案。