日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

实验三mysql查询_实验三 数据库的查询实验

發(fā)布時間:2023/12/16 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实验三mysql查询_实验三 数据库的查询实验 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、 實驗?zāi)康暮鸵?/p>

(1)掌握SQL Server查詢分析器的使用方法,加深對SQL和Transact-SQL語言的查詢語句的理解。

(2)熟練掌握簡單表的數(shù)據(jù)查詢、數(shù)據(jù)排序和數(shù)據(jù)連接查詢的操作方法。

(3)熟練掌握數(shù)據(jù)查詢中的分組、統(tǒng)計、計算和組合的操作方法。

二、 實驗內(nèi)容和原理

1. 簡單查詢操作

該實驗包括投影、選擇條件表達、數(shù)據(jù)排序、使用臨時表等。

2. 連接查詢操作

該實驗包括等值連接、自然連接、求笛卡爾積、一般連接、外連接、內(nèi)連接、左連接、右連接和自連接等。

3. 在SQL Server查詢分析器中使用IN、比較符、ANY或ALL和EXISTS操作符進行嵌套查詢操作。

4. 分組查詢實驗。該實驗包括分組條件表達、選擇組條件的表達方法。

5. 使用函數(shù)查詢的實驗。該實驗包括統(tǒng)計函數(shù)和分組統(tǒng)計函數(shù)的使用方法。

6. 組合查詢實驗。

7. 計算和分組計算查詢的實驗。

三、 實驗環(huán)境

硬件:計算機

軟件:Windows 2000和SQL Server 2000

四、 算法描述及實驗步驟

1. 基本操作實驗

用Transact-SQL語句表示下列操作.在學(xué)生-課程庫中實現(xiàn)其數(shù)據(jù)查詢操作:

(1)求數(shù)學(xué)系學(xué)生的學(xué)號和姓名。

select sno,sname

from student

where sdept ='MA'

(2)求選修了高等數(shù)學(xué)的學(xué)生學(xué)號、姓名和成績。

select sc.sno,sname,grade

from student,sc,course

where sc.cno=course.cno and cname='數(shù)學(xué)' and student.sno

=sc.sno

(3)求選修C1課程的學(xué)生學(xué)號和成績,并要求對查詢結(jié)果按成績降序排列,如果成績相同則按學(xué)號升序排列。

select sno,grade

from sc

where cno ='1'

order by grade desc,sno asc

(4)獲選修課程C1且成績在80~90分之間的學(xué)生學(xué)號、姓名及成績,并將成績乘以系數(shù)0.8輸出。

select student.sno,sname,grade*0.8

"grade*0.8"

from sc,student

where cno ='1'and grade between 80 and 90 and student.sno

=sc.sno

(5)求數(shù)學(xué)系或計算機系姓張的學(xué)生的信息。

select *

from student

where (sdept ='CS' or sdept ='MA') and sname like'張%'

(6)求缺少了成績的學(xué)生的學(xué)號和課程號。

select sno,cno

from sc

where grade is null

(7)求C1課程的成績高于張三的學(xué)生學(xué)號和成績。

select sno,cno

from sc

where cno ='1'and

grade >

(select grade

from sc,student

where sname ='張三' and student.sno =sc.sno and cno ='1')

(8)求其他系中比計算機系學(xué)生年齡都小的學(xué)生。

select *

from student

where sdept !='cs' and sage <

(

select min(sage)

from student

where sdept ='cs'

)

(9)查詢選修了全部課程的學(xué)生的姓名。

select Sname

from student

where Sno IN

(select Sno from SC

group by Sno

having count(*) = (select count(*) from course )

)

(10)求至少選修了學(xué)生“張三”所選修的全部課程的學(xué)生學(xué)號和姓名。

select distinct scx.sno,sname

from sc scx,student

where scx.sno =student.sno and not exists

(select *

from sc scy,student

where sname ='張三'and scy.sno =student.sno and not exists

(select *

from sc scz

where scx.sno =scz.sno and scy.cno =scz.cno))

(11)查詢每一門課的間接先行課(即先行課的先行課)。

select c1.cno,c2.cpno

from course c1,course c2

where c1.cpno =c2.cno

在圖書-圖書庫中實現(xiàn)其查詢操作。

(1)查找這樣的圖書類別:要求類別中最高的圖書定價不低于全部按類別分組的圖書平均定價的2倍。

select 類別

from 圖書

group by 類別

having max(定價)>=all

(select avg(定價)*2

from 圖書

group by 類別)

(2)求機械工業(yè)出版社出版的各類圖書的平均定價,用GROUP BY表示。

select distinct 類別, avg(定價) '平均定價'

from 圖書

where 出版社 ='機械工業(yè)出版社'

group by 類別

(3)列出計算機類圖書的書號、名稱及價格,最后求出冊數(shù)和總價格。

SELECT 書號,書名,定價

FROM 圖書

WHERE 類別='計算機' ORDER BY 書號 ASC

COMPUTE count (書號),SUM(定價)

(4)列出計算機類圖書的書號、名稱及價格,并求出各出版社這類書的總價格,最后求出全部冊數(shù)和總價格。

select 書號,書名,定價

from 圖書

where 類別='計算機'

order by 出版社

compute sum(定價) by 出版社

(5)查詢計算機類和機械工業(yè)出版社出版的圖書。

select 書號,書名

from 圖書

where 類別='計算機'and 出版社 ='機械工業(yè)出版社'

(6)在圖書-借閱庫中實現(xiàn)其查詢操作:將計算機類的書存入永久的計算機圖書表中,將借書日期在1999年以前的借閱記錄存入臨時的超期借閱表。

SELECT *

INTO 計算機圖書

FROM 圖書

WHERE 類別='計算機'

GO

SELECT *

INTO #超期借閱

FROM 借閱

WHERE 借閱日期< '1999-01-01'

GO

(1)按表1的格式,建立職工部門庫和職工表、部門,并向表中輸入數(shù)據(jù)。

表1 職工和部門表數(shù)據(jù)

職工表 部門表

職工號

姓名

性別

年齡

部門

1010

李勇

20

11

1011

劉晨

19

1012

王敏

22

12

1013

張立

21

13

部門號

部門名稱

電話

11

生產(chǎn)科

566

12

計劃科

578

13

一車間

467

14

科研所

(2)用Transact-SQL語句表示職工和部門之間的內(nèi)連接、左外部連接和右外部連接,在職工部門庫中實現(xiàn)其數(shù)據(jù)內(nèi)連接和各種外查詢操作。

1.等值連接

select 職工表.*,部門表.*

from 職工表,部門表

where 職工表.部門=部門表.部門號

2.自然連接

select 職工號,姓名,性別,年齡,部門,部門名稱

from 職工表,部門表

where 職工表.部門=部門表.部門號

3.左外連接

select 職工號,姓名,性別,年齡,部門,部門名稱

from 職工表

left outer join 部門表 on(職工表.部門=部門表.部門號)

4.右外連接

select 職工號,姓名,性別,年齡,部門,部門名稱

from 職工表

right outer join 部門表 on(職工表.部門=部門表.部門號)

五、 調(diào)試過程

1、 在查詢求數(shù)學(xué)系或計算機系姓張的學(xué)生的信息時,出現(xiàn)如下錯誤提示:

代碼如下:

select *

from student

where sdept ='CS' or sdept ='MA' and sname like'張%'

分析下,明白了代碼應(yīng)該改為如下:

select *

from student

where (sdept ='CS' or sdept ='MA') and sname like'張%'

2、 在查詢求缺少了成績的學(xué)生的學(xué)號和課程號時,出現(xiàn)如下錯誤提示:

代碼如下:

select sno,cno

from sc

where grade = null

分析下原因,原來是 =和is的差別,改代碼如下:

select sno,cno

from sc

where grade is null

六、 實驗結(jié)果

1. 基本操作實驗

用Transact-SQL語句表示下列操作.

在學(xué)生-課程庫中實現(xiàn)其數(shù)據(jù)查詢操作:

(1)求數(shù)學(xué)系學(xué)生的學(xué)號和姓名。

(2)求選修了高等數(shù)學(xué)的學(xué)生學(xué)號、姓名和成績。

(3)求選修C1課程的學(xué)生學(xué)號和成績,并要求對查詢結(jié)果按成績降序排列,如果成績相同則按學(xué)號升序排列。

(4)獲選修課程C1且成績在80~90分之間的學(xué)生學(xué)號、姓名及成績,并將成績乘以系數(shù)0.8輸出。

(5)求數(shù)學(xué)系或計算機系姓張的學(xué)生的信息。

(6)求缺少了成績的學(xué)生的學(xué)號和課程號。

(7)求C1課程的成績高于張三的學(xué)生學(xué)號和成績。

(8)求其他系中比計算機系學(xué)生年齡都小的學(xué)生。

(9)查詢選修了全部課程的學(xué)生的姓名。

(10)求至少選修了學(xué)生“張三”所選修的全部課程的學(xué)生學(xué)號和姓名。

(11)查詢每一門課的間接先行課(即先行課的先行課)。

在圖書-圖書庫中實現(xiàn)其查詢操作。

(1)查找這樣的圖書類別:要求類別中最高的圖書定價不低于全部按類別分組的圖書平均定價的2倍。

(2)求機械工業(yè)出版社出版的各類圖書的平均定價,用GROUP BY表示。

(3)列出計算機類圖書的書號、名稱及價格,最后求出冊數(shù)和總價格。

(4)列出計算機類圖書的書號、名稱及價格,并求出各出版社這類書的總價格,最后求出全部冊數(shù)和總價格。

(5)查詢計算機類和機械工業(yè)出版社出版的圖書。

(6)在圖書-借閱庫中實現(xiàn)其查詢操作:將計算機類的書存入永久的計算機圖書表中,將借書日期在1999年以前的借閱記錄存入臨時的超期借閱表。

2. 提高操作實驗

(1)按表1的格式,建立職工部門庫和職工表、部門,并向表中輸入數(shù)據(jù)。

(2)用Transact-SQL語句表示職工和部門之間的內(nèi)連接、左外部連接和右外部連接,在職工部門庫中實現(xiàn)其數(shù)據(jù)內(nèi)連接和各種外查詢操作。

1.等值連接

2.自然連接

3.左外連接

4.右外連接

七、 總結(jié)

這次數(shù)據(jù)庫實驗主要是考察我們對簡單查詢和連接查詢的掌握。雖然在理論學(xué)習(xí)的時候覺得很簡單,憑空的去想想結(jié)果是什么樣子的,但是不能夠?qū)嵺`。從這次實驗中,讓我們將理論知識應(yīng)用到實踐中來,通過編寫一些命令語句,結(jié)果就能呈現(xiàn)在我們眼前。

這次實驗中要寫的語句雖然很多,但是當我把它們一個一個的寫出來,并運行成功的時候,覺得很有成就感。不過因為自己的粗心還有對一些語句書寫的不夠熟練,做實驗用了很長時間。在這很長時間中,增加了我們對各種情況下查找命令語句的熟悉程度,使實驗報告順利的完成,覺得非常值得。

總結(jié)

以上是生活随笔為你收集整理的实验三mysql查询_实验三 数据库的查询实验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。