图书信息管理系统数据库设计与操作
图书信息管理系统数据库设计与操作
根据《图书信息管理系统》需求,完成以下数据库创建、数据表创建和数据操作任务。
① 创建数据库 db_08 (5分)
CREATE DATABASE db_08;
② 建表如下 (总分 25分)
表 (一) T_book
| 属性名 | 数据类型 | 可否为空 | 含 义 | 备注 | |---|---|---|---|---| | book_no | varchar(20) | 否 | 书号 | 主键 | | book_name | varchar(100) | 否 | 书名 | | | author | varchar(50) | 否 | 作者 | | | price | float | 否 | 单价 | | | qty | int | 否 | 库存册数 | 默认为 '0' | | loan_qty | int | 否 | 借阅次数 | 默认为 '0' |
CREATE TABLE T_book (
book_no VARCHAR(20) NOT NULL PRIMARY KEY,
book_name VARCHAR(100) NOT NULL,
author VARCHAR(50) NOT NULL,
price FLOAT NOT NULL,
qty INT NOT NULL DEFAULT 0,
loan_qty INT NOT NULL DEFAULT 0
);
表 (二) T_card
| 属性名 | 数据类型 | 可否为空 | 含 义 | 备注 | |---|---|---|---|---| | card_no | varchar(20) | 否 | 卡号 | 主键 | | card_name | varchar(30) | 否 | 借书人姓名 | | | adress | varchar(200) | 否 | 借书人地址 | | | mobile | varchar(11) | 是 | 手机号码 | |
CREATE TABLE T_card (
card_no VARCHAR(20) NOT NULL PRIMARY KEY,
card_name VARCHAR(30) NOT NULL,
adress VARCHAR(200) NOT NULL,
mobile VARCHAR(11)
);
表 (三) T_borrow
| 属性名 | 数据类型 | 可否为空 | 含 义 | 备注 | |---|---|---|---|---| | borrow_id | int | 否 | 借书记录编号 | 主键 | | book_no | varchar(20) | 否 | 书号 | 外键 | | card_no | varchar(20) | 否 | 卡号 | 外键 | | borrow_date | datetime | 否 | 借书日期 | 默认当前时间 | | return_date | datetime | 是 | 还书日期 | |
CREATE TABLE T_borrow (
borrow_id INT NOT NULL PRIMARY KEY,
book_no VARCHAR(20) NOT NULL,
card_no VARCHAR(20) NOT NULL,
borrow_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
return_date DATETIME
);
③ 添加数据如下 (2分/条,总分 16分)
表 (一) T_book
INSERT INTO T_book (book_no, book_name, author, price, qty, loan_qty)
VALUES ('10001', '安徒生童话', '安徒生', 102, 23, 109);
INSERT INTO T_book (book_no, book_name, author, price, qty, loan_qty)
VALUES ('10002', '稻草人', '安徒生', 45.8, 501, 78);
INSERT INTO T_book (book_no, book_name, author, price, qty, loan_qty)
VALUES ('10003', '丑小鸭', '格林', 88.2, 87, 250);
表 (二) T_card
INSERT INTO T_card (card_no, card_name, adress, mobile)
VALUES ('205', '刘大海', '湖南长沙', '13309097878');
INSERT INTO T_card (card_no, card_name, adress, mobile)
VALUES ('206', '派大星', '湖南长沙', '15067237172');
表 (三) T_borrow
INSERT INTO T_borrow (borrow_id, book_no, card_no, borrow_date, return_date)
VALUES (1, '10001', '205', '2018-09-01', '2018-10-25');
INSERT INTO T_borrow (borrow_id, book_no, card_no, borrow_date, return_date)
VALUES (2, '10001', '206', '2018-09-05', '2018-09-17');
INSERT INTO T_borrow (borrow_id, book_no, card_no, borrow_date, return_date)
VALUES (3, '10003', '205', '2018-11-01', '2018-11-10');
④ 实现以下 SQL 语句 (5分/条,共 40分)
a. 查询 T_book 表中作者是 '安徒生' 的所有图书
SELECT * FROM T_book WHERE author = '安徒生';
b. 查询 T_card 表中手机号为 '13309097878' 的借书人姓名,借书人地址
SELECT card_name, adress FROM T_card WHERE mobile = '13309097878';
c. 查询 T_borrow 表中的书号为 '10001' 的所有借书记录
SELECT * FROM T_borrow WHERE book_no = '10001';
d. 查询 T_book 表中价格大于 '丑小鸭' 价格的所有书籍名称、作者、单价
SELECT book_name, author, price FROM T_book WHERE price > (SELECT price FROM T_book WHERE book_name = '丑小鸭');
e. 修改 '派大星' 的借书人名字为 '派小星'
UPDATE T_card SET card_name = '派小星' WHERE card_name = '派大星';
f. 查询 T_borrow 表中书名、借书人姓名、借书日期
SELECT T_book.book_name, T_card.card_name, T_borrow.borrow_date
FROM T_borrow
JOIN T_book ON T_borrow.book_no = T_book.book_no
JOIN T_card ON T_borrow.card_no = T_card.card_no;
g. 查询库存数量大于 100 的书名、价格、库存
SELECT book_name, price, qty FROM T_book WHERE qty > 100;
h. 查询 '丑小鸭' 的作者、借阅次数
SELECT author, loan_qty FROM T_book WHERE book_name = '丑小鸭';
⑤ 保存 SQL 脚本为 .sql 格式,保留建库、建表语句、SQL 查询代码,提交 .sql 文件 (5分)
请将以上的 SQL 语句保存到一个 .sql 文件中。
原文地址: https://www.cveoy.top/t/topic/fwZJ 著作权归作者所有。请勿转载和采集!