數(shù)據(jù)庫表的查詢操作(實驗二)
【實驗?zāi)康摹?了解SQL語言的使用,進一步理解關(guān)系運算,鞏固數(shù)據(jù)庫的基礎(chǔ)知識。
【實驗要求】:掌握利用Select語句進行各種查詢操作:單表查詢、多表連接及查詢、嵌套查詢、集合查詢等。
【實驗內(nèi)容】
一、單表查詢
1.簡單查詢
打開查詢分析器,根建立teacher表,并加入數(shù)據(jù)。從teacher表中分別檢索出教師的所有信息,以及僅查詢教工號、姓名和職稱。語句如下:
select * from teacher select tno, tname from teacher
如要查詢時改變列標(biāo)題的顯示,則從teacher表中分別檢索出教師教工號、姓名、電子郵箱信息并分別加上‘教師姓名'、‘教工號'、'電子郵箱'等標(biāo)題信息。
select tno 工號, tname 姓名, temail 電子郵箱 from teacher
使用TOP關(guān)鍵字:分別從teacher中檢索出前2條及前面67%的教師的信息。
select top 2 * from teacher select top 67 percent * from teacher
使用DISTINCT關(guān)鍵字:從teacher表中檢索出教師的職稱并且要求顯示的職稱不重復(fù)。select distinct tposition from teacher
2.用計算列:將teacher表中各教師的姓名、教工號及工資按95%發(fā)放的信息,第2條語句將工資按95%發(fā)放后列名該為‘預(yù)發(fā)工資'。語句如下:
select tno tname ,tsalary*0.95 from teacher select tno工號, tname姓名, tsalary*0.95 AS 預(yù)發(fā)工資 from teacher
3.使用ORDER BY子句對查詢的結(jié)果進行排序
使用ORDER BY語句可以對查詢的結(jié)果進行排序,ASC、DESC分別是升序和降序排列的關(guān)鍵字,系統(tǒng)默認的是升序排列。從teacher表中查詢工資大于2800的教師的教工號、姓名,并按升序排列,語句如下:
select tno, tname from teacher WHERE tsalary>2800 order by tsalary ASC
4.條件查詢
(1)使用關(guān)系運算符:從teacher表中查詢出工作量大于288的教師資料,語句如下:
select * from teacherWHERE tamount>288 order by tamount DESC
(2)使用BETWEEN AND謂詞:從teacher表中查詢出工作量界于144和288之間的教師資料,語句如下:
select * from teacher WHERE tamount between 144 and 288
(3) 使用IN謂詞:從teacher表中查詢出職稱為“教授”或“副教授”的教師的教工號、教師姓名、職稱及家庭住址,語句如下:
select tno,tname,tposition, taddress from teacher WHERE tposition in ('教授','副教授')
(4)使用LIKE謂詞:從teacher表中分別檢索出姓'王'的教師的資料,或者姓名的第2個字是'莉'或'軒'的教師的資料,語句如下:
select * from teacher WHERE tname like '王%' select * from teacher WHERE tname like '_[莉,軒]%'
二、多表查詢
數(shù)據(jù)庫各表中存放著不同的數(shù)據(jù),用戶經(jīng)常需要用多個表中的數(shù)據(jù)來組合提煉出所需要的信息,如果一個查詢需要對多個表進行操作,就稱為關(guān)聯(lián)查詢,關(guān)聯(lián)查詢的結(jié)果集或結(jié)果表稱為表之間的連接。關(guān)聯(lián)查詢實際上是通過各各表之間共同列的關(guān)聯(lián)來查詢數(shù)據(jù)的,它是關(guān)系數(shù)據(jù)庫查詢最基本的特征。
1.SQL 2000兼容2種連接形式:用于FROM子句的ANSI連接語法和用于WHERE子句的SQL SERVER連接語法形式。
從student、course和SC三張表中檢索學(xué)生的學(xué)號、姓名、學(xué)習(xí)課程號、學(xué)習(xí)課程名及課程成績,語句如下:
select student.sno, sname, cno, grade from student inner join SC on student.sno=SC.sno select student.sname,sc.grade from student,sc WHERE student.sno=sc.sno select student.sno,student.sname,sc.cno,course.cname,sc.grade from student,sc,course WHERE student.sno=sc.sno and sc.cno=course.cno
2.使用UNION子句進行查詢
使用UNION子句可以將一個或者多個表的某些數(shù)據(jù)類型相同的列顯示在同一列上。如從teacher表中列出教工號、姓名并從student表中列出學(xué)號及學(xué)生姓名,語句及查詢結(jié)果如下:
select sno AS 學(xué)號或工號, sname AS 姓名 from student union select tno, tname from teacher
3.用GROUP子句進行查詢
如果要在數(shù)據(jù)檢索時對表中數(shù)據(jù)按照一定條件進行分組匯總或求平均值,就要在SELECT語句中與GROUP BY子句一起使用集合函數(shù)。使用GROUP BY子句進行數(shù)據(jù)檢索可得到數(shù)據(jù)分類的匯總統(tǒng)計、平均值或其他統(tǒng)計信息。
(1) 使用不帶HAVING的GROUP BY子句。
使用不帶HAVING 的GROUP BY子句匯總出SC表中的學(xué)生的學(xué)號及總成績,語句如下:
select '學(xué)號'=sno,'總成績'=SUM(Grade) from SC group by Sno
(2)使用帶HAVING 的GROUP BY子句。
使用帶HAVING 的GROUP BY子句匯總出SC表中總分大于450分的學(xué)生的學(xué)號及總成績,語句如下:
select '學(xué)號'=sno,'總成績'=SUM(Grade) from SC group by Sno Having SUM(Grade)>160
4.用COMPUTE和COMPUTE BY子句進行查詢
使用COMPUTE和COMPUTE BY 既能瀏覽數(shù)據(jù)又能看到統(tǒng)計的結(jié)果。
(1) 用COMPUTE子句匯總出SC表中每個學(xué)生的學(xué)號及總成績,語句如下:
select '學(xué)號'=sno,'成績'=Grade from SC order by sno COMPUTE SUM(Grade)
(2)用COMPUTE BY 子句按學(xué)號匯總出SC表中每個學(xué)生的學(xué)號及總成績,語句如下:
select '學(xué)號'=sno,'成績'=Grade from SC ORDER BY Sno COMPUTE SUM(Grade) by sno
觀察執(zhí)行COMPUTE和COMPUTE BY子句的結(jié)果有什么不同?
5.嵌套查詢
(1) 使用IN或NOT IN關(guān)鍵字
使用IN關(guān)鍵字查詢出j10011班所有男生的學(xué)號、課程號及相應(yīng)的成績,語句如下:
select SC.sno , SC.cno,SC.grade FROM SC WHERE sno IN ( SELECT sno FROM student WHERE Sclass='j10011' AND Ssex='男')
使用IN關(guān)鍵字查詢出與教師不同名的學(xué)生(學(xué)號,姓名),語句如下:
select sno 學(xué)號, sname 姓名 from student where sname not in (select tname from teacher)
(2) 使用EXISTS 或NOT EXISTS關(guān)鍵字。
使用EXISTS關(guān)鍵字查詢出‘j10011'班的學(xué)生的學(xué)號、課程號及相應(yīng)的成績,語句如下:
SELECT SC.sno,SC.cno,SC.grade FROM SC WHERE EXISTS ( SELECT * FROM student WHERE SC.sno=student.sno AND student.sclass=‘j10011' )
以上就是表的查詢操作實驗全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,大家親自動手實踐一下。
- MySQL學(xué)習(xí)筆記3:表的基本操作介紹
- 單個select語句實現(xiàn)MySQL查詢統(tǒng)計次數(shù)
- sql查詢出各科成績最好的學(xué)生信息
- mysql查詢昨天 一周前 一月前 一年前的數(shù)據(jù)
- mysql查詢今天、昨天、近7天、近30天、本月、上一月的SQL語句
- MySql查詢時間段的方法
- MySQL查詢和修改auto_increment的方法
- 一個優(yōu)化MySQL查詢操作的具體案例分析
- MySQL查詢倒數(shù)第二條記錄實現(xiàn)方法
- 50條SQL查詢技巧、查詢語句示例
- SQL查詢出表、存儲過程、觸發(fā)器的創(chuàng)建時間和最后修改時間示例
- 大幅優(yōu)化MySQL查詢性能的奇技淫巧
- SQL大量數(shù)據(jù)查詢的優(yōu)化及非用like不可時的處理方案
- 如何使用MySQL查詢某個列中相同值的數(shù)量統(tǒng)計
- SQL如何實現(xiàn)MYSQL的遞歸查詢
- 數(shù)據(jù)庫表的創(chuàng)建、管理和數(shù)據(jù)操作(實驗一)
- 數(shù)據(jù)庫表的查詢操作實踐演練(實驗三)
相關(guān)文章
mssql關(guān)于一個表格結(jié)構(gòu)的另外一種顯示(表達意思不變)
mssql關(guān)于一個表格結(jié)構(gòu)的另外一種顯示(表達意思不變)接下來介紹實現(xiàn)方法,感興趣的朋友可以了解下哦2013-01-01SQL Server附加數(shù)據(jù)庫報錯無法打開物理文件,操作系統(tǒng)錯誤5的圖文解決教程
sqlserver附加數(shù)據(jù)時,提示無法打開物理文件,操作系統(tǒng)錯誤5什么原因呢?今天小編給大家分享SQL Server附加數(shù)據(jù)庫報錯無法打開物理文件,操作系統(tǒng)錯誤5的圖文解決教程,一起看看吧2016-12-12SQL Server 日期函數(shù)CAST 和 CONVERT 以及在業(yè)務(wù)中的使用介紹
。最近時間剛從客戶端轉(zhuǎn)入后臺寫服務(wù),對于后臺數(shù)據(jù)庫以及服務(wù)的書寫完全是個小白,所以最近寫的肯定沒有太多技術(shù)含量2013-01-01