SQL?Server數(shù)據(jù)庫(kù)連接查詢和子查詢實(shí)戰(zhàn)案例
提示: 利用單表簡(jiǎn)單查詢和多表高級(jí)查詢技能,并且根據(jù)查詢要求靈活使用內(nèi)連接查詢、外連接查詢或子查詢等。同時(shí)還利用內(nèi)連接查詢的兩種格式、三種外連接查詢語(yǔ)法格式和子查詢的語(yǔ)法格式。
前言
內(nèi)連接查詢(不同表之間查詢)
1.查詢所有學(xué)生的學(xué)號(hào)、姓名、選修課程號(hào)和成績(jī)
方法一
USE XSCJ GO SELECT student.sno,sname,cno,grade from student,sc where student.sno=sc.sno

方法二
USE XSCJ GO SELECT student.sno,sname,cno,grade from student join sc on student.sno=sc.sno

2.查詢選修了課程名稱為“數(shù)據(jù)庫(kù)原理與應(yīng)用”的學(xué)生的學(xué)號(hào)和姓名
方法一
USE XSCJ select student.sno,sname from student,sc,course where student.sno=sc.sno and sc.cno=course.cno and cname='數(shù)據(jù)庫(kù)原理與應(yīng)用'

方法二
select student.sno,sname from student join sc on student.sno=sc.sno join course on sc.cno=course.cno where cname='數(shù)據(jù)庫(kù)原理與應(yīng)用'

3.使用別名實(shí)現(xiàn)查詢所有學(xué)生的學(xué)號(hào)、姓名、選修課程號(hào)和成績(jī)
select x.sno,sname,cno,grade from student x,sc y where x.sno=y.sno

自身連接查詢
4.查詢所有年齡比張文寶大的學(xué)生的姓名、性別和年齡
select A.sname,A.ssex,A.sage from student A,student B where B.sname='張文寶' and A.sage>B.sage

使用第二種格式實(shí)現(xiàn)內(nèi)連接查詢(JOIN ON)
5.用格式二實(shí)現(xiàn)查詢所有學(xué)生的學(xué)號(hào)、姓名、選修課程號(hào)和成績(jī)
SELECT student.sno,sname,cno,grade from student join sc on student.sno=sc.sno

外連接(左外連接)
6.查詢所有學(xué)生的學(xué)號(hào)、姓名及對(duì)應(yīng)選課的信息,如果該學(xué)生沒(méi)有選課,也需要顯示該生的學(xué)號(hào)和姓名
SELECT student.sno,sname,cno,grade from student left outer join sc on student.sno=sc.sno

右外連接
7.查詢選課學(xué)生的基本信息(若實(shí)際上有外鍵約束,這種情況是不存在的)
select sc.sno,sname,cno,grade from sc right outer join student on student.sno=sc.sno

8.采用右外連接查詢學(xué)生的學(xué)號(hào)、選修的課程號(hào)、課程名及學(xué)分,同時(shí)也列出無(wú)學(xué)生選修的課程信息
select sc.sno,course.cno,cname,credit from sc right outer join course on course.cno=sc.cno

全外連接
9.student和sc表實(shí)現(xiàn)全外連接
select * from sc full outer join student on student.sno=sc.sno

UNION聯(lián)合查詢
10.從student表中查詢年齡為‘19’和‘20’的學(xué)生的系部,不包括重復(fù)行
select sdept from student where sage='19' union select sdept from student where sage='20'

11.從student表中查詢年齡為‘19’和‘20’的學(xué)生的系部,包括重復(fù)行
select sdept from student where sage='19' union all select sdept from student where sage='20'

使用IN或NOT IN 的子查詢
12.查詢所有選修課程的學(xué)生的學(xué)號(hào)和姓名
select sno,sname from student where sno in (select sno from sc)

改為連接查詢實(shí)現(xiàn)
select distinct student.sno,sname from student join sc on student.sno=sc.sno

使用比較運(yùn)算符的子查詢
13.查詢年齡高于平均年齡的學(xué)生的學(xué)號(hào)、姓名和年齡
select sno,sname,sage from student where sage> (select AVG(sage) from student)

使用ANY或ALL的子查詢
14.查詢比CS系的任一學(xué)生年齡都大的學(xué)生姓名和年齡
select sname,sage from student where sage>any (select sage from student where sdept='CS') AND sdept!='CS' select * from student

使用EXISTS的子查詢
15.查詢已有學(xué)生選修的課程信息
select * from course where exists (select * from sc where course.cno=sc.cno)

16.查詢尚沒(méi)有學(xué)生選修的課程信息
select * from course where not exists (select * from sc where course.cno=sc.cno)

查看course表

抽取數(shù)據(jù)到另一個(gè)表
17.查詢CS系學(xué)生的信息,生成一個(gè)新表temp
select * into temp from student where sdept='CS' select * from temp

INSERT語(yǔ)句中的子查詢
18.將所有的學(xué)號(hào)和課程號(hào)信息生成一個(gè)新表SCL
INSERT INTO SCL(sno,cno) select sno,cno from student,course


UPDATE 語(yǔ)句中的子查詢
19.將選修了“前臺(tái)頁(yè)面設(shè)計(jì)”課程的學(xué)生成績(jī)?cè)黾?分
UPDATE sc set grade=grade+5 where cno= (select cno from course where sc.cno=course.cno and cname='前臺(tái)頁(yè)面設(shè)計(jì)')

刪除語(yǔ)句中的子查詢
20.刪除選修了“前臺(tái)頁(yè)面設(shè)計(jì)”課程的選課信息
delete from sc where cno= (select cno from course where sc.cno=course.cno and cname='前臺(tái)頁(yè)面設(shè)計(jì)')

總結(jié)
到此這篇關(guān)于SQL Server數(shù)據(jù)庫(kù)連接查詢和子查詢的文章就介紹到這了,更多相關(guān)SQLServer連接查詢和子查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 全面講解MySQL子查詢
- MySQL復(fù)合查詢(多表查詢、子查詢)的實(shí)現(xiàn)
- MySQL多表聯(lián)合查詢、連接查詢、子查詢的實(shí)現(xiàn)
- 關(guān)于Mysql子查詢的三個(gè)應(yīng)用場(chǎng)景
- mysql子查詢(單行子查詢,多行子查詢,多列子查詢)
- MySQL子查詢的空值問(wèn)題解決
- 一文了解MySQL的四大子查詢
- 一文帶你了解MySQL中的子查詢
- SQL Server的子查詢?cè)斀?/a>
- MySQL實(shí)例講解子查詢的使用
- MySQL子查詢?cè)敿?xì)教程
- MySql數(shù)據(jù)庫(kù)基礎(chǔ)之子查詢?cè)斀?/a>
- SQL子查詢的具體使用
相關(guān)文章
分組后分組合計(jì)以及總計(jì)SQL語(yǔ)句(稍微整理了一下)
這篇文章主要介紹了分組后分組合計(jì)以及總計(jì)SQL語(yǔ)句,需要的朋友可以參考下2017-02-02
mssql查找備注(text,ntext)類型字段為空的方法
在sql語(yǔ)句中,如果查找某個(gè)文本字段值為空的,可以用select * from 表 where 字段='' ,但是如果這個(gè)字段數(shù)據(jù)類型是text或者ntext,那上面的sql語(yǔ)句就要出錯(cuò)了。2008-08-08
sql中時(shí)間以5分鐘半個(gè)小時(shí)任意間隔分組的實(shí)現(xiàn)方法
這篇文章主要介紹了sql中時(shí)間以5分鐘半個(gè)小時(shí)任意間隔分組的實(shí)現(xiàn)方法,在文中給大家提到了sql server時(shí)間查詢的代碼,需要的朋友可以參考下2019-06-06
清空所有表中的數(shù)據(jù)的存儲(chǔ)過(guò)程
清空所有表中的數(shù)據(jù)的sql語(yǔ)句,需要的朋友可以參考下,利用了存儲(chǔ)過(guò)程。2010-06-06
MSSQL 多字段根據(jù)范圍求最大值實(shí)現(xiàn)方法
MSSQL 多字段根據(jù)范圍求最大值實(shí)現(xiàn)語(yǔ)句,大家可以參考下2009-09-09

