数据库与软件工程上机实验答案_数据库实验上机题答案
数据库与软件工程上机实验答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据库实验上机题答案”。
《数据库与软件工程》上机实验答案
实验三 SQL语言的DDL
3.CREATE TABLE aa(Bb1 VARCHAR(30),Bb2 INT,Bb3 DECIMAL(6,2))
4. ALTER TABLE aa ADD Bb4 varchar(20)
5.DROP TABLE AA
6. CREATE VIEWReaderView(借阅者)
ASSELECT DISTINCT 读者编号
FROM 借阅
7. Drop ViewReaderView。
8.CREATE INDEX INDEX1 ON 读者(姓名 ASC,单位 ASC)
CREATE INDEX INDEX3 ON 借阅(借阅日期 DESC)
9. DROP INDEX 读者.INDEX1
CREATE INDEX INDEX1 ON 读者(姓名 ASC)
实验四 SQL语言的DML初步
1. CREATE DEFAULT ZEROVALUE AS 0
sp_bindefault ZEROVALUE, '图书.借出否'
CREATE DEFAULT CURTIME AS getdate()
sp_bindefault CURTIME, '借阅.借阅日期'
2. CREATE RULE gender_rule
AS@value in('男','女')
EXEC sp_bindrule 'gender_rule', '读者.性别'
CREATE RULE lenddate_rule
AS@value > '2004-1-1'
EXEC sp_bindrule 'lenddate_rule', '借阅.归还日期'
3. 用INSERT语句对“图书”表插入6条记录
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)
VALUES('0001','计算机类','清华出版社','严蔚敏','数据结构', 20.11)INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)
VALUES('0002','计算机类','清华出版社','苗雪兰','数据库技术及应用',29.00)
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)
VALUES('0003','计算机类','清华出版社','李建中','软件工程',48.00)INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)
VALUES('0004','计算机类','电子工业出版社','汤惟','WEB技术',32.00)
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)
VALUES('0005','自动化类','机械工业出版社','胡寿松','自动控制原理',52.00)
INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)
VALUES('0006','自动化类','机械工业出版社','郑大钟','线性控制理论',32.00)用INSERT语句对“读者”表插入4条记录
INSERT INTO 读者(读者编号,姓名,单位,性别,电话)
VALUES('10001','张三','东华大学','男','67792312')
INSERT INTO 读者(读者编号,姓名,单位,性别,电话)
VALUES('10002','李四','东华大学','女','67792312')
INSERT INTO 读者(读者编号,姓名,单位,性别,电话)
VALUES('10003','王五','东华大学','男','67792312')
INSERT INTO 读者(读者编号,姓名,单位,性别,电话)
VALUES('10004','李明','东华大学','女','67792312')
用INSERT语句对“借阅”表插入7条记录
INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)
VALUES('0001','10001','2006-04-19 09:58:03','2006-05-19 8:38:23')
INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)
VALUES('0006','10002','2006-07-01 15:28:12','2006-07-18 9:14:02')
INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)
VALUES('0002','10002','2006-07-01 15:28:30','2006-07-17 19:10:32')
INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)
VALUES('0002','10003','2006-07-03 15:28:30','2006-08-09 15:28:30')
INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)
VALUES('0004','10002','2007-05-01 11:28:24','2007-08-01 8:09:04')
INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)
VALUES('0005','10002','2007-11-01 10:43:12','2007-12-01 14:09:56')
INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)
VALUES('0003','10004','2007-12-01 16:06:02','2007-12-29 13:17:09')
4. UPDATE 借阅
SET 借阅日期='2006-08-03 15:28:30'
WHERE 读者编号='10003' AND
借阅日期 BETWEEN '2006-07-03' AND '2006-07-04' AND 书号='0002'
5. DELETE FROM 借阅
WHERE 借阅日期
1. SELECT 书号,书名 as 名称,定价 as 价格 FROM 图书
WHERE 类别='自动化类'
2. 方法1:
SELECT * FROM 图书
WHERE 类别='计算机类'
UNION
SELECT * FROM 图书
WHERE 出版社='电子工业出版社'
方法2:
SELECT * FROM 图书
WHERE 类别='计算机类' OR 出版社='电子工业出版社'
3. SELECT * INTO 计算机图书表 FROM 图书
WHERE 类别='计算机类'
4. SELECT DISTINCT 读者.* FROM 读者,借阅
WHERE 读者.读者编号=借阅.读者编号
5. SELECT 读者.读者编号,姓名,单位,图书.书号,书名,借阅日期
FROM 读者,借阅,图书
WHERE 读者.读者编号=借阅.读者编号 AND 图书.书号=借阅.书号
6. SELECT 图书.书号,书名,类别,借阅日期 FROM 读者,借阅,图书
WHERE 读者.读者编号=借阅.读者编号 AND 图书.书号=借阅.书号
AND 姓名='张三'
ORDER BY 借阅日期 DESC
7. SELECT 读者.读者编号,姓名,书名,DATEDIFF(day,借阅日期,归还日期)as 借阅时间
FROM 读者,借阅,图书
WHERE 读者.读者编号=借阅.读者编号 AND 图书.书号=借阅.书号
AND DATEDIFF(day,借阅日期,归还日期)>20
order by 借阅时间
8. SELECT * FROM 读者
WHERE NOT EXISTS(SELECT * FROM 图书
WHERE 类别='自动化类' and NOT EXISTS(SELECT * FROM 借阅
WHERE 读者编号=读者.读者编号 and 书号=图书.书号))
1. SELECT 类别,COUNT(*)AS 数量, AVG(定价)AS 平均价格,SUM(定价)AS 总价
FROM 图书
GROUP BY 类别
ORDER BY 类别
2. SELECT YEAR(借阅日期)as 年份,书号,COUNT(*)AS 借阅次数
FROM 借阅
GROUP BY YEAR(借阅日期),书号
ORDER BY 借阅次数 DESC
3. SELECT 读者.读者编号,COUNT(书号)AS 借阅次数 FROM 读者
LEFT JOIN
(SELECT * FROM 借阅 WHERE 借阅日期 BETWEEN '2006-7-1' AND '2007-10-1')A
ON 读者.读者编号=A.读者编号
GROUP BY 读者.读者编号
4. SELECT 读者编号,COUNT(*)AS 次数 FROM 借阅,图书
WHERE 借阅.书号=图书.书号 AND 书名='数据库技术及应用'
GROUP BY 读者编号
ORDER BY 次数 DESC
5. 方法1:
SELECT MAX(次数)AS 最多,MIN(次数)AS 最少,AVG(次数*1.0)AS 平均
FROM(SELECT 图书.书号,COUNT(*)AS 次数 FROM 图书,借阅
WHERE 图书.书号=借阅.书号 AND 类别='计算机类'
GROUP BY 图书.书号)A
方法2:
SELECT 图书.书号,COUNT(*)*1.0 AS 次数 FROM 图书,借阅
WHERE 图书.书号=借阅.书号 AND 类别='计算机类'
GROUP BY 图书.书号
COMPUTE MAX(COUNT(*)*1.0),MIN(COUNT(*)*1.0),AVG(COUNT(*)*1.0)
6. SELECT 类别 FROM 图书
GROUP BY 类别
HAVING MAX(定价)>=ALL(SELECT 2*AVG(定价)FROM 图书 GROUP BY 类别)
7. SELECT 书号,书名,定价,出版社 FROM 图书
WHERE 类别='计算机类'
ORDER BY 出版社 DESC
COMPUTE COUNT(书号)BY 出版社
COMPUTE COUNT(书号)
实验七 存储过程、触发器和数据库恢复
1.(1)
CREATE PROCEDURE 借阅情况
@Readerno VARCHAR(8)
AS
SELECT 读者.读者编号,姓名,图书.书号,书名,借阅日期, 借出否 AS 归还否FROM 读者,借阅,图书
WHERE 读者.读者编号=借阅.读者编号 AND 图书.书号=借阅.书号AND 读者.读者编号=@Readerno
EXEC 借阅情况 ‘10004’
(2)
CREATE PROCEDURE 借出情况
@Bookno VARCHAR(10)
AS
SELECT 书名,姓名,借阅日期,归还日期
FROM 读者,借阅,图书
WHERE 读者.读者编号=借阅.读者编号 AND 图书.书号=借阅.书号AND 图书.书号=@Bookno
EXEC 借出情况 '0004'
2.CREATE TRIGGER lendbookinsert ON 借阅
FOR INSERT
AS
IF(SELECT 借出否 FROM 图书 WHERE 书号 IN
(SELECT 书号 FROM INSERTED))=1
BEGIN
PRINT '该书已经借出'
ROLLBACK TRANSACTION
END
ELSE
BEGIN
UPDATE 图书
SET 借出否=1
WHERE 书号 IN(SELECT 书号 FROM INSERTED)
END