图书信息管理系统数据库设计与SQL实战
图书信息管理系统数据库设计与SQL实战
一、数据库创建sqlCREATE DATABASE db_08;
二、数据表创建
2.1 图书表(T_book)
| 属性名 | 数据类型 | 可否为空 | 含义 | 备注 ||---|---|---|---|---|| book_no | varchar(20) | 否 | 书号 | 主键 || book_name | varchar(100) | 否 | 书名 | || author | varchar(50) | 否 | 作者 | || price | float | 否 | 单价 | || qty | int | 否 | 库存册数 | 默认为'0' || loan_qty | int | 否 | 借阅次数 | 默认为'0' |sqlCREATE 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');
2.2 借书卡表(T_card)
| 属性名 | 数据类型 | 可否为空 | 含义 | 备注 ||---|---|---|---|---|| card_no | varchar(20) | 否 | 卡号 | 主键 || card_name | varchar(30) | 否 | 借书人姓名 | || adress | varchar(200) | 否 | 借书人地址 | || mobile | varchar(11) | 是 | 手机号码 | |sqlCREATE 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) NULL);
2.3 借阅记录表(T_borrow)
| 属性名 | 数据类型 | 可否为空 | 含义 | 备注 ||---|---|---|---|---|| borrow_id | int | 否 | 借书记录编号 | 主键 || book_no | varchar(20) | 否 | 书号 | 外键 || card_no | varchar(20) | 否 | 卡号 | 外键 || borrow_date | datetime | 否 | 借书日期 | 默认当前时间 || return_date | datetime | 是 | 还书日期 | |sqlCREATE 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 NULL, FOREIGN KEY (book_no) REFERENCES T_book (book_no), FOREIGN KEY (card_no) REFERENCES T_card (card_no));
三、数据添加sql-- 添加数据到图书表INSERT INTO T_book (book_no, book_name, author, price, qty, loan_qty)VALUES ('10001', '安徒生童话', '安徒生', 102, 23, 109), ('10002', '稻草人', '安徒生', 45.8, 501, 78), ('10003', '丑小鸭', '格林', 88.2, 87, 250);
-- 添加数据到借书卡表INSERT INTO T_card (card_no, card_name, adress, mobile)VALUES ('205', '刘大海', '湖南长沙', '13309097878'), ('206', '派大星', '湖南长沙', '15067237172');
-- 添加数据到借阅记录表INSERT INTO T_borrow (borrow_id, book_no, card_no, borrow_date, return_date)VALUES (1, '10001', '205', '2018-09-01', '2018-10-25'), (2, '10001', '206', '2018-09-05', '2018-09-17'), (3, '10003', '205', '2018-11-01', '2018-11-10');
四、SQL查询语句
4.1 查询T_book表中作者是'安徒生'的所有图书sqlSELECT * FROM T_book WHERE author = '安徒生';
4.2 查询T_card表中手机号为'13309097878'的借书人姓名,借书人地址sqlSELECT card_name, adress FROM T_card WHERE mobile = '13309097878';
4.3 查询T_borrow表中的书号为'10001'的所有借书记录sqlSELECT * FROM T_borrow WHERE book_no = '10001';
4.4 查询T_book表中价格大于'丑小鸭'价格的所有书籍名称、作者、单价sqlSELECT book_name, author, price FROM T_book WHERE price > (SELECT price FROM T_book WHERE book_name = '丑小鸭');
4.5 修改'派大星'的借书人名字为'派小星'sqlUPDATE T_card SET card_name = '派小星' WHERE card_name = '派大星';
4.6 查询T_borrow表中书名、借书人姓名、借书日期sqlSELECT T_book.book_name, T_card.card_name, T_borrow.borrow_dateFROM T_borrowJOIN T_book ON T_borrow.book_no = T_book.book_noJOIN T_card ON T_borrow.card_no = T_card.card_no;
4.7 查询库存数量大于100的书名、价格、库存sqlSELECT book_name, price, qty FROM T_book WHERE qty > 100;
4.8 查询'丑小鸭'的作者、借阅次数sqlSELECT author, loan_qty FROM T_book WHERE book_name = '丑小鸭';
五、保存SQL脚本
将以上所有SQL代码保存为.sql格式文件,方便数据库管理和维护。
原文地址: https://www.cveoy.top/t/topic/fwZD 著作权归作者所有。请勿转载和采集!