數據庫系統概論SQL上機練習題
練習題1:
現有圖書管理數據庫的三個關係模式:
圖書(總編號,分類號,書名,作者,出版單位,單價)
讀者 (借書證號,單位,姓名,性別,職稱,地址)
借閱 (借書證號,總編號,借書日期)
1. 利用SQL Server 2000創建圖書管理庫和圖書、讀者和借閱三個基本表的表結構:
2. 利用SQL Server 2000在三個表中分別插入以下所給元組:
圖書:
總編號 |
分類號 |
書名 |
作者 |
出版單位 |
單價 |
445501 |
TP3/12 |
數據庫導論 |
王強 |
科學出版社 |
17.90 |
445502 |
TP3/12 |
數據庫導論 |
王強 |
科學出版社 |
17.90 |
445503 |
TP3/12 |
數據庫導論 |
王強 |
科學出版社 |
17.90 |
332211 |
TP5/10 |
計算機基礎 |
李偉 |
高等教育出版社 |
18.00 |
112266 |
TP3/12 |
FoxBASE |
張三 |
電子工業出版社 |
23.60 |
665544 |
TS7/21 |
高等數學 |
劉明 |
高等教育出版社 |
20.00 |
114455 |
TR9/12 |
線性代數 |
孫業 |
北京大學出版社 |
20.80 |
113388 |
TR7/90 |
大學英語 |
胡玲 |
清華大學出版社 |
12.50 |
446601 |
TP4/13 |
數據庫基礎 |
馬凌雲 |
人民郵電出版社 |
22.50 |
446602 |
TP4/13 |
數據庫基礎 |
馬凌雲 |
人民郵電出版社 |
22.50 |
446603 |
TP4/13 |
數據庫基礎 |
馬凌雲 |
人民郵電出版社 |
22.50 |
449901 |
TP4/14 |
FoxPro大全 |
周虹 |
科學出版社 |
32.70 |
449902 |
TP4/14 |
FoxPro大全 |
周虹 |
科學出版社 |
32.70 |
118801 |
TP4/15 |
計算機網絡 |
黃力鈞 |
高等教育出版社 |
21.80 |
118802 |
TP4/15 |
計算機網絡 |
黃力鈞 |
高等教育出版社 |
21.80 |
讀者:
借書證號 |
單位 |
姓名 |
性別 |
職稱 |
地址 |
111 |
信息系 |
王維利 |
女 |
教授 |
1號樓424 |
112 |
財會系 |
李 立 |
男 |
副教授 |
2號樓316 |
113 |
經濟系 |
張 三 |
男 |
講師 |
3號樓105 |
114 |
信息系 |
周華髮 |
男 |
講師 |
1號樓316 |
115 |
信息系 |
趙正義 |
男 |
工程師 |
1號樓224 |
116 |
信息系 |
李 明 |
男 |
副教授 |
1號樓318 |
117 |
計算機系 |
李小峯 |
男 |
助教 |
1號樓214 |
118 |
計算機系 |
許鵬飛 |
男 |
助工 |
1號樓216 |
119 |
計算機系 |
劉大龍 |
男 |
教授 |
1號樓318 |
120 |
國際貿易 |
李 雪 |
男 |
副教授 |
4號樓506 |
121 |
國際貿易 |
李 爽 |
女 |
講師 |
4號樓510 |
122 |
國際貿易 |
王 純 |
女 |
講師 |
4號樓512 |
123 |
財會系 |
沈小霞 |
女 |
助教 |
2號樓202 |
124 |
財會系 |
朱 海 |
男 |
講師 |
2號樓210 |
125 |
財會系 |
馬英明 |
男 |
副教授 |
2號樓212 |
借閱:
借書證號 |
總編號 |
借書日期 |
112 |
445501 |
|
125 |
332211 |
|
111 |
445503 |
|
112 |
112266 |
|
114 |
665544 |
|
120 |
114455 |
|
120 |
118801 |
|
119 |
446603 |
|
112 |
449901 |
|
115 |
449902 |
|
118 |
118801 |
|
練習題2:
學會利用導入的方法創建上面的數據庫並用SQL完成如下查詢:
1) 找出姓李的讀者姓名和所在單位。
2) 列出圖書庫中所有藏書的書名及出版單位。
3) 查找高等教育出版社的 所有圖書及單價,結果按單價降序排序。
4) 查找價格介於10元和20元之間的圖書種類,結果按出版單位和單價升序排序。
5) 查找書名以計算機打頭的所有圖書和作者。
6) 檢索同時借閱了總編號爲112266和449901兩本書的借書證號。
7) 查找所有借了書的讀者的姓名及所在單位。
8) 找出李某所借圖書的所有圖書的書名及借書日期。
9) 查詢1997年10月以後借書的讀者借書證號、姓名和單位。
10) 找出借閱了FoxPro大全一書的借書證號。
11) 找出與趙正義在同一天借書的讀者姓名、所在單位及借書日期 。
12) 查詢1997年7月以後沒有借書的讀者借書證號、姓名及單位。
練習題3:
學會利用導出的方法創建圖書管理數據庫並完成下面SQL高級查詢:
13) 求科學出版社圖書的最高單價、最低單價、平均單價。
14) 求信息系當前借閱圖書的讀者人次數。
15) 求出各個出版社圖書的最高價格、最低價格和冊數。
16) 分別找出各單位當前借閱圖書的讀者人數。
17) 找出當前至少借閱了2本圖書的讀者及所在單位。
18) 分別找出借書人次超過1人次的單位及人次數。
19) 找出藏書中各個出版單位的冊數、價值總額。
20) 查詢經濟系是否還清所有圖書。如果還清,顯示該系所有讀者的姓名、所在單位和職稱。
1、select 單位,姓名
from 讀者
where 姓名 like '李%'
2、select distinct 書名,出版單位
from 圖書
3、select distinct *
from 圖書
where 出版單位='高等教育出版社'
order by 單價 desc
4、select *
from 圖書
where 單價 between 10.00 and 20.00
order by 出版單位,單價
5、select distinct 書名,作者
from 圖書
where 書名 like '計算機%'
6、select jy1.借書證號
from 借閱 jy1,借閱 jy2
where jy1.總編號='112266' and jy2.總編號='449901' and jy1.借書證號=jy2.借書證號
7、select distinct 姓名,單位
from 讀者,借閱
where 讀者.借書證號=借閱.借書證號
8、select 書名,姓名,借書日期
from 借閱,圖書,讀者
where 借閱.借書證號=讀者.借書證號 and 圖書.總編號=借閱.總編號 and 讀者.姓名 like '李%'
9、select distinct 讀者.借書證號,姓名,單位
from 借閱,讀者
where 借閱.借書證號=讀者.借書證號 and 借閱.借書日期>=1997-10-1
10、select distinct 借閱.借書證號
from 借閱,圖書
where 借閱.總編號=圖書.總編號 and 圖書.書名 like 'FoxPro大全'
11、SELECT姓名,單位,借閱日期
FROM 讀者,借閱
WHERE 借閱.借書證號=讀者.借書證號 AND借閱日期 IN
( SELECT 借書日期
FROM 借閱,讀者
WHERE 借閱.借書證號=讀者.借書證號 AND 姓名=“李欣”)
12、select 借書證號,姓名,單位;
from 讀者;
where 借書證號 not in;
(select 借書證;
from 借閱;
where 借書日期>={07/01/97 })
13、select 出版單位,MAX(單價) as最高價,MIN(單價)as最低;價,AVG (單價)as平均價;
From 圖書;
Where 出版單位=“科學出版社”
14、SELECT “計算機科學系借書人數:”,COUNT(DISTINCT 借書證號)
FROM 借閱
WHERE 借書證號 IN
(SELECT 借書證號
FROM 讀者
WHERE 單位=“計算機科學系”)
15、SELECT 出版單位,MAX(單價),MIN(單價),AVG(單價)
FROM 圖書
GROUP BY 出版單位
17、SELECT 姓名,單位
FROM 讀者
WHERE 借書證號 IN
(SELECT 借書證號
FROM 借閱
GROUP BY 借書證號
HAVING COUNT(*)>=5)
18、Select 單位,count(*) as 超過1人次;
From 借閱,讀者
Where 讀者.借書證號=借閱.借書證號;
Group by 單位
Having count(*)>=2
19、SELECT 出版單位,“冊數:”,COUNT(*),“總價:”,SUM(單價)
FROM 圖書
GROUP BY 出版單位
ORDER BY SUM(單價),COUNT(*) DESC
20、Select 姓名,單位,職稱;
From 讀者;
Where 單位=“經濟系” and not exists
(select *;
from 讀者,借閱;
where 讀者.借書證號=借閱.借書證號 and 單位=“經濟系”)