《數(shù)據(jù)庫實驗報告數(shù)據(jù)查詢》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫實驗報告數(shù)據(jù)查詢(6頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、計算機與通信工程學院
實驗報告
(軟件實驗用)
課程名稱數(shù)據(jù)庫原理與技術(shù)
實驗項目名稱 數(shù)據(jù)查詢
年級 大三 班級 信計
學號 姓名_
同組姓名
實驗日期
指導教師簽字
―、實驗目的:
~~熟悉和掌握對數(shù)據(jù)表中數(shù)據(jù)的查詢操作和SQL命令的使用,學會靈活熟練地使 用SQL語句的各種形式;
二、實驗內(nèi)容:
1、簡單查詢操作
(1) 列出所有教授的姓名和工資:
SELECT姓名,工資
FROM教工
WHERE職稱二’教授’
(2) 列出教授的所有信息。
SELECT *
FROM教工
WHERE職稱二'教授’
(3) 列出教工表中的系編號并消除重
2、復的元組。
SELECT DISTINCT 系編號
FROM 教工
(4) 已知學分二學時/17,計算每一門課程的學分數(shù)。
SELECT課程名稱,學時/17 AS學分
FROM課程
(5) 顯示教授的工資和提高10%的工資額。
SELECT姓名,工資,工資* 1.1 AS '工資* 1.1'
FROM 教工WHERE職稱='教授’
(6) 顯示田平平同學出生100天的日期。
SELECT 姓名,出生年月+100 AS '出生年月+100'
FROM 學生
WHERE 姓名二’田平平’
(7) 列出教工表中工資在3000元以上的名單。
SELECT姓名
FROM 教
3、工
WHERE 工資 >=3ooo
(8) 列出學生表中1980年1月1日之后出生的學生名單。
SELECT姓名
FROM 學生
WHERE 出生年月>='1980-1-1'
(9) 列出學生表中在1980年1月1日之后出生的男同學名單。
SELECT姓名
FROM 學生
WHERE 出生年月>='1980-1-1' AND 性別二'男'
(10) 列出教工表中教授或副教授中工資低于3000元的名單。
SELECT姓名
FROM 教工
WHERE (職稱二'教授’OR職稱二'副教授')AND工資<3000
(11) 顯示男學生的姓名和所在的系名稱。
SELECT姓
4、名,系名稱
FROM學生,系
WHERE學生.系編號二系.系編號AND性別二'男’ 或
SELECT姓名,系名稱
FROM學生R,系S
WHERE R.系編號二S.系編號AND性別二'男’
(12) 列出教工中比姜立偉工資低的姓名和工資。
SELECT R.姓名,R.工資
FROM 教工R,教工S
WHERE R.工資<S.工資AND S.姓名二'姜立偉’
(13) 查出所有不是教授的教工姓名。
SELECT姓名
FROM 教工
WHERE 職稱 NOT LIKE '教授’
(14) 檢索工資在1000元到2000元范圍內(nèi)的職工信息。
SELECT * FROM
5、職工
WHERE 工資 BETWEEN 1000 AND 2000
等價于
SELECT * FROM 職工
WHERE 工資>=1000 AND 工資<=2000
(15) 按學號的升序,顯示系編號等于101的學生信息:
SELECT *
FROM 學生
WHERE 系編號=101
ORDER BY 學號
(16) 求教工表中教授工資的平均值。
SELECT AVG (工資)AS平均工資
FROM 教工
WHERE職稱二'教授’
(17) 求所有教工的工資總和。
SELECT SUM (工資)AS工資總和
FROM 教工
(18) 找出教工中最高工資和最低工
6、資。
SELECT MAX(工資),MIN(工資)
FROM 教工
(19) 顯示學生中最早和最晚的出生日期。
SELECT MIN (出生日期),MAX (出生日期)
FROM 學生
(20) 查詢學生的總?cè)藬?shù)。
SELECT COUNT(*)AS 人數(shù)
FROM 學生
2、復雜查詢
(21)如果要統(tǒng)計成績表中所有選課的學生人數(shù),即不管一名學生選了幾門 課程,都只計算一次
SELECT COUNT (DISTINCT (學號))AS 人數(shù)
FROM成績
(22) 統(tǒng)計學生表中男生和女生的人數(shù)。
SELECT 性別,COUNT (*)
FROM 學生
GROUP
7、 BY 性別
(23) 統(tǒng)計成績表中,每一門課程的平均成績。
SELECT課程編號,AVG (分數(shù))
FROM成績
GROUP BY課程編號
(24) 查詢教工表中每一種職稱的最高工資和最低工資。
SELECT職稱,MAX (工資),MIN (工資)
FROM 教工
GROUP BY 職稱
(25) 統(tǒng)計成績表中選修人數(shù)超過2以上的課程編號和人數(shù)。
SELECT 課程編號,COUNT (*)
FROM成績
GROUP BY課程編號
HAVING COUNT(*)>2
(26) 列出成績表中分數(shù)在60以上、選課數(shù)大于2且平均分超過70的學號、 選課數(shù)目和平均分。
S
8、ELECT學號,COUNT(課程編號),AVG (分數(shù))
FROM成績
WHERE 分數(shù)>=60
GROUP BY 學號
HAVING COUNT(課程編號)>2 AND AVG(分數(shù))>70
(27) 統(tǒng)計“ CS ”系學生的人數(shù);
(28) 統(tǒng)計各系學生的人數(shù),結(jié)果按升序排列;
(29) 按系統(tǒng)計各系學生的平均年齡,結(jié)果按降序排列;
(30) 查詢每門課程的課程名;
(31) 查詢無先修課的課程的課程名和學時數(shù);
(32) 統(tǒng)計無先修課的課程的學時總數(shù);
(33) 統(tǒng)計每位學生選修課程的門數(shù)、學分及其平均成績;
(34) 統(tǒng)計選修每門課程的學生人數(shù)及各門課程的平均成
9、績;
(35) 找出平均成績在85分以上的學生,結(jié)果按系分組,并按平均成績的升序排 列;
(36) 查詢選修了 “1”或“2”號課程的學生學號和姓名;
(37) 查詢選修了 “1”和“2”號課程的學生學號和姓名;
(38) 查詢選修了課程名為“數(shù)據(jù)庫系統(tǒng)”且成績在60分以下的學生的學號、姓 名和成績;
(39) 查詢每位學生選修了課程的學生信息(顯示:學號,姓名,課程號,課程 名,成績);
(40) 查詢沒有選修課程的學生的基本信息;
(41) 查詢選修了 3門以上課程的學生學號;
(42) 查詢選修課程成績至少有一門在80分以上的學生學號;
(43) 查詢選修課程成績均在8
10、0分以上的學生學號;
(44) 查詢選修課程平均成績在80分以上的學生學號;
三、實驗平臺:
Microsoft SQL Sever 四、設(shè)計流程:
1、 進入查詢分析器,參見進入查詢分析器演示。
在查詢分析器的命令編輯窗口輸入SQL語句,點擊執(zhí)行鍵,將執(zhí)行SQL 語句。參見執(zhí)行SQL語句的演示。
2、 在調(diào)試程序過程中,可以用鼠標選擇某些要執(zhí)行的SQL語句,再點擊執(zhí) 行鍵,執(zhí)行選擇的語句。參見執(zhí)行SQL語句的演示。
3、 注意:在各個表中插入數(shù)據(jù)的順序,首先在父表中插入數(shù)據(jù),然后在子 表中插入數(shù)據(jù)。另外,由于表的定義中包含完整性約束的定義,所以, 當主碼重復,或者外碼不是被參照表的有效值時,系統(tǒng)將拒絕插入的數(shù) 據(jù)。
4、保存調(diào)試通過的SQL程序。
五、程序清單:
六、調(diào)試和測試結(jié)果:
七、教師評語與成績評定: