CARD(CNO,NAME,CLASS)
BOOKS(BNO,BNAME,AUTHOR,PRICE,QUANTITY)
BORROW(CNO,BNO,RDATE)
备注:CARD 表的属性描述:CNO 表示卡号,NAME 表示姓名,CLASS 表示
班级;
BOOKS 表的属性描述:BNO 表示书号,BNAME 表示书名,AUTHOR 表示
作者,PRICE 表示单价,QUANTITY 表示库存册数;
BORROW 表的属性描述:CNO 表示借书卡号,BNO 表示书号,RDATE 表示
还书日期。
1. 写出建立 CARD 表的 SQL 语句,要求定义主码完整性约束
CREATE TABLE CARD
(CNO VARCHAR(4) PRIMARY KEY,
NAME NVARCHAR(8) NOT NULL,
CLASS NVARCHAR(15))
2. 写出建立 BOOKS 表的 SQL 语句,要求定义主码完整性约束
CREATE TABLE BOOKS
(BNO VARCHAR(4) PRIMARY KEY,
BNAME NVARCHAR(10) NOT NULL,
AUTHOR NVARCHAR(8),
PRICE CHAR(4),
QUANTITY INT)
3. 写出建立 BORROW 表的 SQL 语句,要求定义主码完整性约束和引用完整性
约束
CREATE TABLE BORROW
(CNO VARCHAR(4) FOREIGN KEY, REFERENCES CARD,
BNO VARCHAR(4) FOREIGN KEY, REFERENCES BOOKS,
RDATE DATETIME,
PRIMARY KEY(CNO,BNO)
)
4. 找出借书超过 3 本的读者,输出借书卡号及所借图书册数
SELECT CNO,图书册数=COUNT(CNO) FROM BORROW
GROUP BY CNO HAVING COUNT(CNO)>=3
5. 查询借阅了"西游记"一书的读者,输出姓名及班级
SELECT CARD.NAME,CARD.CLASS FROM CARD JOIN BORROW ON
CARD.CNO=BORROW.CNO
JOIN BORROW.BNO = BOOKS.BNO
WHERE BOOKS.BNAME='西游记'