SQLserver2008高级查询语句应用实例
生活随笔
收集整理的這篇文章主要介紹了
SQLserver2008高级查询语句应用实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
--1、查詢學生表,課程表,輸出每個學生的姓名和對應的選課課名,及成績。
--SELECT 姓名,課程名稱,成績
--FROM 學生表 ,選課成績表 ,課程表?
--WHERE 選課成績表 .學生編號=學生表 .學生編號 AND 課程表 .課程編號=選課成績表 .課程編號
--2、查詢每門課對應的任課教師的教師姓名。
--select 課程名稱,姓名
--from 教師表,課程表
--where 教師表.教師編號=課程表 .任課教師
--3 ? 查詢“C語言”的平均分數。
--SELECT AVG(成績) AS C語言平均分
--from 選課成績表 ,課程表?
--WHERE 選課成績表 .課程編號=課程表 .課程編號 AND 課程表.課程名稱 ='C語言'
--4 ? 查詢成績在80分以上的學生的學生編號,姓名,課程名稱,成績。
--SELECT 學生表.學生編號 ,姓名,課程名稱,成績?
--from 學生表 ,選課成績表 ,課程表?
--WHERE 選課成績表 .課程編號=課程表 .課程編號 AND 學生表 .學生編號=選課成績表 .學生編號 AND 成績>=80
--5 ? 查詢姓李的老師所講授的課程。
--SELECT 課程名稱 AS 李老師所受課程
--FROM 教師表 ,課程表?
--WHERE 課程表 .任課教師=教師表 .教師編號 AND 教師表 .姓名 LIKE '李%'
--6 ? 查詢男同學所選修的課的平均成績。
--SELECT 課程表 .課程名稱,AVG(成績) AS 男同學
--FROM 課程表 ,選課成績表 ,學生表 ?
--WHERE 選課成績表 .課程編號=課程表 .課程編號 AND 學生表 .學生編號=選課成績表 .學生編號 AND 學生表 .性別='男'
--GROUP BY 課程表 .課程名稱
--7. 查詢年齡大于18歲,小于20歲的學生所選修的課程名稱。
--SELECT 學生表.學生編號,學生表 .姓名,課程表 .課程名稱
--FROM 課程表 ,選課成績表 ,學生表?
--WHERE 選課成績表 .課程編號=課程表 .課程編號 AND 學生表 .學生編號=選課成績表 .學生編號 AND 學生表.年齡>18 AND 學生表 .年齡<20
--8 ? 查詢計算機系并且是副教授職稱的老師所教授的課的名稱。
--SELECT 教師表 .姓名,教師表 .職稱,課程表 .課程名稱
--FROM 教師表 ,課程表?
--WHERE 課程表 .任課教師=教師表 .教師編號 AND 教師表 .系別='計算機系' AND 教師表 .職稱='副教授'
-- 下面題用子查詢做。
--1. 查詢與張爽老師在同一個系工作的老師。
--SELECT 教師表.姓名 AS 與張爽老師同系老師
--FROM 教師表?
--WHERE 系別 in (SELECT 系別 FROM 教師表 WHERE 姓名='張爽') AND 姓名!='張爽'
--2、查詢選修了數據結構課程的學生的學號和姓名。
--SELECT 學生表.學生編號,學生表.姓名
--from 學生表?
--where 學生編號 in
--(
--select 學生編號?
--from 選課成績表?
--where 課程編號 ? in
--(
--select 課程編號?
--from 課程表?
--where 課程名稱 ='數據結構'
--)
--)
--第二種方法:
--SELECT 學生表.學生編號,學生表.姓名
--FROM 學生表,選課成績表,課程表
--WHERE 學生表.學生編號=選課成績表 .學生編號 AND 課程表 .課程編號=選課成績表 .課程編號 AND 課程表 .課程名稱='數據結構'
--3. 查詢選修了Java語言課程的學生姓名。
-- ?SELECT 學生表.姓名?
--FROM 學生表?
--WHERE 姓名 in( SELECT DISTINCT 學生表 .姓名?
?-- ? ? ? ? ? ? ? ?FROM 學生表 ,選課成績表 ,課程表 ?
?-- ? ? ? ? ? ? ? ? WHERE 學生表 .學生編號=選課成績表 .學生編號 AND 課程表.課程編號=選課成績表 .課程編號 AND 課程表 .課程名稱='Java語言'?
? -- ? ? ? ? ? ? ? ? )
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
--第二種方法:
--SELECT 學生表.姓名 AS 選修Java語言
--FROM 學生表 ,選課成績表 ,課程表?
--WHERE 學生表 .學生編號=選課成績表 .學生編號 AND 課程表 .課程編號=選課成績表 .課程編號 AND 課程表 .課程名稱='Java語言'
--4.查詢江西學生的平均成績。
--SELECT 課程表 .課程名稱,AVG(成績) 平均分
--FROM 學生表 ,選課成績表 ,課程表?
--WHERE 學生表 .學生編號=選課成績表 .學生編號 AND 課程表 .課程編號=選課成績表 .課程編號 AND 學生表 .籍貫 LIKE '江西%'
--GROUP BY 課程表 .課程名稱
--5.查詢選修了103號課程,且成績高于該課程平均分數的學生信息。
--SELECT 學生表 .*
--FROM 學生表 ?,選課成績表?
--WHERE 學生表.學生編號 =選課成績表 .學生編號 AND 選課成績表.課程編號='103' AND 選課成績表.成績>(SELECT AVG(成績) FROM 選課成績表 ?WHERE 選課成績表 .課程編號='103'
--6.查詢沒有選修Java語言的學生姓名。
? --SELECT 學生表.姓名?
--FROM 學生表?
--WHERE 姓名 NOT in( SELECT DISTINCT 學生表 .姓名?
? ? ? ? ? ? ? ? ?-- ? FROM 學生表 ,選課成績表 ,課程表 ?
? ? ? ? ? ? ? -- ? ? ?WHERE 學生表 .學生編號=選課成績表 .學生編號 AND 課程表.課程編號=選課成績表 .課程編號 AND 課程表 .課程名稱='Java語言'?
? ?-- ? ? ? ? ? ? ? ? )
--7. 查詢比江西省所有學生年齡都小的其他省的學生的學號和姓名。
--SELECT 學生編號,姓名
--FROM 學生表?
--WHERE 學生表.籍貫 NOT LIKE '江西%' AND 學生表.年齡<( SELECT MIN(年齡)
?-- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FROM 學生表
? -- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? WHERE 學生表.籍貫 LIKE '江西%'
? ? ? ?-- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)
--8.查詢選修了107號課程的學生的學號和姓名。
--select 學生表.學生編號,學生表.姓名?
--from 學生表?
--where 學生編號 ?in
--(select 學生編號?
--from 選課成績表?
--where 課程編號 ='107'
--)
--第二種方法
--SELECT 學生表.學生編號,學生表.姓名?
--FROM 學生表,選課成績表?
--WHERE 學生表.學生編號=選課成績表 .學生編號 AND 選課成績表 .課程編號='107'?
--9、查詢沒有選修Java語言的學生姓名。
?-- SELECT 學生表.姓名?
--FROM 學生表?
--WHERE 姓名 NOT in( SELECT DISTINCT 學生表 .姓名?
-- ? ? ? ? ? ? ? ? ? FROM 學生表 ,選課成績表 ,課程表 ?
?-- ? ? ? ? ? ? ? ? WHERE 學生表 .學生編號=選課成績表 .學生編號 AND 課程表.課程編號=選課成績表 .課程編號 AND 課程表 .課程名稱='Java語言'?
? -- ? ? ? ? ? ? ? ? )
--10. 查詢每個學生超過他選修課程平均成績的學號和課程號。
--SELECT x.學生編號, t.課程編號
--FROM 學生表 ?x,選課成績表 ?t
--WHERE ? x.學生編號=t.學生編號?
?-- ? ? ? AND t.成績>( SELECT AVG(成績)
? ?-- ? ? ? ? ? ? ? ? ? ?FROM 選課成績表?
?-- ? ? ? ? ? ? ? ? ? ? ?WHERE 選課成績表 .學生編號=t.學生編號
? ? -- ? ? ? ? ? ? ? ? ?)
--SELECT 姓名,課程名稱,成績
--FROM 學生表 ,選課成績表 ,課程表?
--WHERE 選課成績表 .學生編號=學生表 .學生編號 AND 課程表 .課程編號=選課成績表 .課程編號
--2、查詢每門課對應的任課教師的教師姓名。
--select 課程名稱,姓名
--from 教師表,課程表
--where 教師表.教師編號=課程表 .任課教師
--3 ? 查詢“C語言”的平均分數。
--SELECT AVG(成績) AS C語言平均分
--from 選課成績表 ,課程表?
--WHERE 選課成績表 .課程編號=課程表 .課程編號 AND 課程表.課程名稱 ='C語言'
--4 ? 查詢成績在80分以上的學生的學生編號,姓名,課程名稱,成績。
--SELECT 學生表.學生編號 ,姓名,課程名稱,成績?
--from 學生表 ,選課成績表 ,課程表?
--WHERE 選課成績表 .課程編號=課程表 .課程編號 AND 學生表 .學生編號=選課成績表 .學生編號 AND 成績>=80
--5 ? 查詢姓李的老師所講授的課程。
--SELECT 課程名稱 AS 李老師所受課程
--FROM 教師表 ,課程表?
--WHERE 課程表 .任課教師=教師表 .教師編號 AND 教師表 .姓名 LIKE '李%'
--6 ? 查詢男同學所選修的課的平均成績。
--SELECT 課程表 .課程名稱,AVG(成績) AS 男同學
--FROM 課程表 ,選課成績表 ,學生表 ?
--WHERE 選課成績表 .課程編號=課程表 .課程編號 AND 學生表 .學生編號=選課成績表 .學生編號 AND 學生表 .性別='男'
--GROUP BY 課程表 .課程名稱
--7. 查詢年齡大于18歲,小于20歲的學生所選修的課程名稱。
--SELECT 學生表.學生編號,學生表 .姓名,課程表 .課程名稱
--FROM 課程表 ,選課成績表 ,學生表?
--WHERE 選課成績表 .課程編號=課程表 .課程編號 AND 學生表 .學生編號=選課成績表 .學生編號 AND 學生表.年齡>18 AND 學生表 .年齡<20
--8 ? 查詢計算機系并且是副教授職稱的老師所教授的課的名稱。
--SELECT 教師表 .姓名,教師表 .職稱,課程表 .課程名稱
--FROM 教師表 ,課程表?
--WHERE 課程表 .任課教師=教師表 .教師編號 AND 教師表 .系別='計算機系' AND 教師表 .職稱='副教授'
-- 下面題用子查詢做。
--1. 查詢與張爽老師在同一個系工作的老師。
--SELECT 教師表.姓名 AS 與張爽老師同系老師
--FROM 教師表?
--WHERE 系別 in (SELECT 系別 FROM 教師表 WHERE 姓名='張爽') AND 姓名!='張爽'
--2、查詢選修了數據結構課程的學生的學號和姓名。
--SELECT 學生表.學生編號,學生表.姓名
--from 學生表?
--where 學生編號 in
--(
--select 學生編號?
--from 選課成績表?
--where 課程編號 ? in
--(
--select 課程編號?
--from 課程表?
--where 課程名稱 ='數據結構'
--)
--)
--第二種方法:
--SELECT 學生表.學生編號,學生表.姓名
--FROM 學生表,選課成績表,課程表
--WHERE 學生表.學生編號=選課成績表 .學生編號 AND 課程表 .課程編號=選課成績表 .課程編號 AND 課程表 .課程名稱='數據結構'
--3. 查詢選修了Java語言課程的學生姓名。
-- ?SELECT 學生表.姓名?
--FROM 學生表?
--WHERE 姓名 in( SELECT DISTINCT 學生表 .姓名?
?-- ? ? ? ? ? ? ? ?FROM 學生表 ,選課成績表 ,課程表 ?
?-- ? ? ? ? ? ? ? ? WHERE 學生表 .學生編號=選課成績表 .學生編號 AND 課程表.課程編號=選課成績表 .課程編號 AND 課程表 .課程名稱='Java語言'?
? -- ? ? ? ? ? ? ? ? )
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?
--第二種方法:
--SELECT 學生表.姓名 AS 選修Java語言
--FROM 學生表 ,選課成績表 ,課程表?
--WHERE 學生表 .學生編號=選課成績表 .學生編號 AND 課程表 .課程編號=選課成績表 .課程編號 AND 課程表 .課程名稱='Java語言'
--4.查詢江西學生的平均成績。
--SELECT 課程表 .課程名稱,AVG(成績) 平均分
--FROM 學生表 ,選課成績表 ,課程表?
--WHERE 學生表 .學生編號=選課成績表 .學生編號 AND 課程表 .課程編號=選課成績表 .課程編號 AND 學生表 .籍貫 LIKE '江西%'
--GROUP BY 課程表 .課程名稱
--5.查詢選修了103號課程,且成績高于該課程平均分數的學生信息。
--SELECT 學生表 .*
--FROM 學生表 ?,選課成績表?
--WHERE 學生表.學生編號 =選課成績表 .學生編號 AND 選課成績表.課程編號='103' AND 選課成績表.成績>(SELECT AVG(成績) FROM 選課成績表 ?WHERE 選課成績表 .課程編號='103'
--6.查詢沒有選修Java語言的學生姓名。
? --SELECT 學生表.姓名?
--FROM 學生表?
--WHERE 姓名 NOT in( SELECT DISTINCT 學生表 .姓名?
? ? ? ? ? ? ? ? ?-- ? FROM 學生表 ,選課成績表 ,課程表 ?
? ? ? ? ? ? ? -- ? ? ?WHERE 學生表 .學生編號=選課成績表 .學生編號 AND 課程表.課程編號=選課成績表 .課程編號 AND 課程表 .課程名稱='Java語言'?
? ?-- ? ? ? ? ? ? ? ? )
--7. 查詢比江西省所有學生年齡都小的其他省的學生的學號和姓名。
--SELECT 學生編號,姓名
--FROM 學生表?
--WHERE 學生表.籍貫 NOT LIKE '江西%' AND 學生表.年齡<( SELECT MIN(年齡)
?-- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FROM 學生表
? -- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? WHERE 學生表.籍貫 LIKE '江西%'
? ? ? ?-- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?)
--8.查詢選修了107號課程的學生的學號和姓名。
--select 學生表.學生編號,學生表.姓名?
--from 學生表?
--where 學生編號 ?in
--(select 學生編號?
--from 選課成績表?
--where 課程編號 ='107'
--)
--第二種方法
--SELECT 學生表.學生編號,學生表.姓名?
--FROM 學生表,選課成績表?
--WHERE 學生表.學生編號=選課成績表 .學生編號 AND 選課成績表 .課程編號='107'?
--9、查詢沒有選修Java語言的學生姓名。
?-- SELECT 學生表.姓名?
--FROM 學生表?
--WHERE 姓名 NOT in( SELECT DISTINCT 學生表 .姓名?
-- ? ? ? ? ? ? ? ? ? FROM 學生表 ,選課成績表 ,課程表 ?
?-- ? ? ? ? ? ? ? ? WHERE 學生表 .學生編號=選課成績表 .學生編號 AND 課程表.課程編號=選課成績表 .課程編號 AND 課程表 .課程名稱='Java語言'?
? -- ? ? ? ? ? ? ? ? )
--10. 查詢每個學生超過他選修課程平均成績的學號和課程號。
--SELECT x.學生編號, t.課程編號
--FROM 學生表 ?x,選課成績表 ?t
--WHERE ? x.學生編號=t.學生編號?
?-- ? ? ? AND t.成績>( SELECT AVG(成績)
? ?-- ? ? ? ? ? ? ? ? ? ?FROM 選課成績表?
?-- ? ? ? ? ? ? ? ? ? ? ?WHERE 選課成績表 .學生編號=t.學生編號
? ? -- ? ? ? ? ? ? ? ? ?)
總結
以上是生活随笔為你收集整理的SQLserver2008高级查询语句应用实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UEditor 如何进行二次开发
- 下一篇: Jeecg-P3 1.0版本发布,JAV