當前位置:首頁 » 編程語言 » 用sql語句寫查詢的題庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

用sql語句寫查詢的題庫

發布時間: 2023-02-27 16:22:14

sql 資料庫習題謝謝

1. select '類別為:'+tushuleibie 圖書分類 from T_Book
2. select shuming 書名,zuozhe 作者,jiage*0.7 價格 from T_Book where chubanshe ='機械工業出版社'
3. select shuming 書名,zuozhe 作者,jiage 價格, chubanshe 出版社 from T_Book where jiage between 30 and 60
4. select top 3 shuming 書名,zuozhe 作者,chubanshe 出版社, jiage 價格 from T_Book order by jiage desc

6.select chubanshe 出版社,AVG(jaige) 平均價,MAX(jiage) 最高價 ,MIN(jaige) 最低價 from T_Book group by chubanshe order by SUM(jiage) desc

10.select top 1 chubanshe 出版社, count(*) 出版圖書個數 from T_Book group by chubanshe order by COUNT(*) desc
book表的做好了 reader的自己做吧 欄位名我用拼音做代替的 你自己替換成你表中的欄位

Ⅱ sql語句相關測試

sql語句相關測試

篇一:SQL語句測試

1、(10分)要求:

選擇受理時間在2008-5-1 到 2008-6-1之間的所有申請人姓氏為「劉」的數據,並把「新受理編號」列表示成當前機器時間的年月和原受理編號年月後的數值組合

格式如下:

受理編號,新受理編號,受理時間, 申請人

200801112 201008112 2008-01-13劉XX

需要的表

I_Optinst 業務實例表

REGDATE(受理日期)

Regnum(受理編號)

Proposer(申請人)

解答:select Regnum as 受理編號, as 新受理編號,REGDATE as 受理時間,Proposer as申請人 from Optinst 2、(15分)要求:

前提:只統計業務小類「存量房買賣」

①按照月份分12月列出2008年每個月份的月份對應月份的交易總面積

②按照月份分12月列出2008年每個月份的月份對應月份的交易均價(申報價格/建築面積)

格式

年度月份 交易總面積 年度月份交易均價(元/平方米)

2008-01 23232 2008-01 2323

2008-02 23232008-02 232

2008-03 232323 2008-03 7656

2008-04 232323 2008-03 565

2008-05 232323 2008-03 5656

2008-06 232323 2008-03 565

2008-07 232323 2008-03 67

2008-08 232323 2008-03 676

2008-09 232323 2008-03 6767

2008-10 232323 2008-03 8686

2008-11 232323 2008-03 867

2008-12 232323 2008-03 454

需要的表:

Fc_room 房間表

BAREA(建築面積)

I_Optinst業務實例表

regdate(受理時間)

fc_owner 產權表

COSTVAL(申報價格)

EVLVAL(評估價格)

fc_owoom 房間明細表

1.select regdate as年度月份,BAREA as 交易總面積 from Fc_room,Optinst where

3、(20分)要求:

①:按照時間統計收費明細 統計格式如下

受理編號繳費人收費日期 收費名稱收費金額核費人收費人

②:按照時間匯總(2008年度)統計收費項目分類 統計格式如下

收費名稱 總金額

需要的表:

I_OptInst(業務實例表)

Regnum 受理編號

Proposer 申請人

I_Charge(收費實例表)

HEFEIMAN 核費人

PAYEE 收款人

CDATE 收費日期

I_ChrDtl(收費實例明細表

CNAME 收費名稱

MONEY 收費金額

4、(15分)要求:用途是住宅並且建築面積<=140>140 定義為 「非普通住宅」

用途是商業並且建築面積>140 定義為 「商業A級」

其他情況定義為「非住宅」

根據用途和面積列表出所有數據

格式

受理編號, 用途

200406000386 普通住宅

200406004631 非普通住宅

200406004633 普通住宅

200406004638 普通住宅

200406004641 非住宅

200501000004 普通住宅

200406004568 非住宅

200406005677 商業A級

表:

fc_room

barea 建築面積

BUse 用途

i_optinst

regnum 受理編號

5、(30分)工作量統計

① 選擇出以下格式的數據;並創建視圖名稱為view_AAAA

業務小類業務實例 交易價格建築面積 登記時間

1 存量房買賣 14100 19400.0029.98 2005-11-10 11:32:50 2 新建商品房 15041 229530.00 124.07 2005-11-21 08:59:36 3 新建商品房 15043 177363.00 101.35 2005-11-21 09:15:59 4 新建商品房 13046 71130.0023.71 2005-11-02 10:15:37 5 新建商品房 11280 148563.00 87.39 2005-10-11 09:50:48 6 新建商品房 11353 267369.00 116.04 2005-10-11 15:34:53 7 房改售房 2689 35.22 2004-06-17 08:43:00 8 產權人名稱變更 11701 724.18 2005-10-17 10:05:20 9 新建商品房 7206 158257.00 88.69 2005-09-16 14:50:57 10 存量房買賣 (轉 載於:wWw.cnboThwiN.cOM 博 威範文 網: sql語句測試 )10100 103.07 2005-08-31 20:27:06 11 存量房買賣 12980 51500.0046.66 2005-11-01 14:41:32 12 新建商品房 13000 136782.00 80.46 2005-11-01 15:37:05 13 新建商品房 16946 300844.00 146.33 2005-12-15 14:15:07 14 存量房買賣 10091 509.18 2005-08-31 19:19:25 ② 使用視圖 view_AAAA 當做表 選擇出如下樣式數據

業務小類 件數合計金額 合計面積

1 用途變更 1151.3

2 轉移登記 184.03

3 新建商品房 31 263243643197.34

4 房改售房 8252.43

5 產權人名稱變更 3 778.6

6 單位產新建 311697.49

7 贈與 1 28.48

8 存量房買賣 24 4379004134.67

9 判決仲裁 2 439.41

10 繼承遺贈 1 49.17

11 換證 2 228.88

12 新建房屋 17 928.91

③ 用水晶報表關聯視圖 view_AAAA 設計出類似於②的數據格式 需要的表

FC_Owner

EvlVal交易價格

I_OptInst,

SOName 業務小類

fc_owoom,

BArea 建築面積

FC_Room

regdate 受理日期

篇二:sql查詢語句學習測試答案

第一部分SQL查詢語句的學習

單表查詢 1、--查詢訂購日期在1996年7月1日至1996年7月15日之間的訂單的訂購日期、訂單ID、客戶ID和雇員ID等欄位的值

use eee

SELECT 訂購日期,訂單ID,客戶ID,

雇員ID

FROM 訂單

WHERE 訂購日期BETWEEN '1996-7-1 00:00:00' AND '1996-7-15 23:59:59'

2、--查詢「Northwind」示例資料庫中供應商的ID、公司名稱、地區、城市和電話欄位的值。條件是「地區等於華北」並且「聯系人頭銜等於銷售代表」。

use eee

SELECT 供應商ID,公司名稱,地區,城市,電話

FROM 供應商

WHERE 地區='華北' AND 聯系人職務='銷售代表'

3、--查詢「Northwind」示例資料庫中供應商的ID、公司名稱、地區、城市和電話欄位的值。其中的一些供應商位於華東或華南地區,另外一些供應商所在的城市是天津 use eee

SELECT 供應商ID,公司名稱,地區,城市,電話

FROM 供應商

WHERE 地區IN('華東', '華南') OR 城市='天津'

4、--查詢「Northwind」示例資料庫中位於「華東」或「華南」地區的供應商的ID、公司名稱、地區、城市和電話欄位的值

use eee

SELECT 供應商ID,公司名稱,地區,城市,電話

FROM 供應商

WHERE 地區IN('華東', '華南')

多表查詢 5、--查詢訂購日期在1996年7月1日至1996年7月15日之間的訂單的訂購日期、訂單ID、相應訂單的客戶公司名稱、負責訂單的雇員的姓氏和名字等欄位的值,並將查詢結果按雇員的「姓氏」和「名字」欄位的升序排列,「姓氏」和「名字」值相同的記錄按「訂單 ID」的降序排列

use eee

SELECT 訂購日期,訂單ID,公司名稱,姓氏,名字

FROM 訂單,雇員,客戶

WHERE 訂購日期BETWEEN '1996-7-1 00:00:00' AND '1996-7-15 23:59:59'

AND 訂單.雇員ID = 雇員.雇員ID

AND 訂單.客戶ID = 客戶.客戶ID

ORDER BY 姓氏,名字ASC,訂單ID DESC

6、--查詢「10248」和「10254」號訂單的訂單ID、運貨商的公司名稱、訂單上所訂購的產品的名稱

use eee

SELECT 訂單.訂單ID,公司名稱,產品名稱

FROM 訂單,運貨商,產品,訂單明細

WHERE 訂單.訂單ID IN('10248','10254')

AND 訂單.訂單ID = 訂單明細.訂單ID

AND 訂單明細.產品ID = 產品.產品ID

AND

訂單.運貨商= 運貨商.運貨商ID

7、--查詢「10248」和「10254」號訂單的訂單ID、訂單上所訂購的產品的名稱、數量、單價和折扣

use eee

SELECT 訂單.訂單ID,產品名稱,數量,訂單明細.單價,折扣

FROM 訂單,產品,訂單明細

WHERE 訂單.訂單ID IN('10248','10254')

AND 訂單.訂單ID = 訂單明細.訂單ID

AND 訂單明細.產品ID = 產品.產品ID

篇三:sql語句練習題及答案

一 在資料庫 school 中建立student , sc, course 表。

學生表、課程表、選課表屬於資料庫 School ,其各自的數據結構如下:

學生 Student (Sno,Sname,Ssex,Sage,Sdept)

課程表 course(Cno,Cname,Cpno,Ccredit)

學生選課 SC(Sno,Cno,Grade)

二 設定主碼

1 Student表的主碼:sno2 Course表的主碼:cno 3 Sc表的主碼:sno,cno

1寫出使用 Create Table 語句創建表 student , sc, course 的SQL語句

2

3 刪除student表中的元組

4在資料庫school中刪除關系student

5在student表添加屬性sbirthdate 類型 datetime

Delete

1 刪除所有 JSJ 系的男生 from Student where Sdept=』JSJ』 and Ssex=』男』; 2 刪除「資料庫原理」的課的選課紀錄

from SC where Cno in (select Cno fromCourse where Cname=』資料庫原理』);

Update

1 修改 0001 學生的系科為: JSJ

2 把陳小明的年齡加1歲,性別改為女。 2 修改李文慶的1001課程的成績為 93 分 3 把「資料庫原理」課的成績減去1分

Select 查詢語句

一 單表

1查詢年齡在19至21歲之間的女生的學號,姓名,年齡,按年齡從大到小排列。 2查詢姓名中第2個字為「明」字的學生學號、性別。 3查詢 1001課程沒有成績的學生學號、課程號

4查詢JSJ 、SX、WL 系的年齡大於25歲的學生學號,姓名,結果按系排列 5按10分制查詢學生的sno,cno,10分製成績

(1-10分 為1 ,11-20分為2 ,30-39分為3,。。。90-100為10) 6查詢 student 表中的學生共分布在那幾個系中。(distinct) 7查詢0001號學生1001,1002課程的成績。

二 統計

1查詢姓名中有「明」字的學生人數。 2計算『JSJ』系的平均年齡及最大年齡。 3查詢學生中姓名為張明、趙英的人數

4計算每一門課的總分、平均分,最高分、最低分,按平均分由高到低排列 5 計算 1001,1002 課程的'平均分。

6 查詢平均分大於80分的學生學號及平均分 7 統計選修課程超過 2 門的學生學號

8 統計有10位成績大於85分以上的課程號。 9 統計平均分不及格的學生學號

10 統計有大於兩門課不及格的學生學號

三 連接

1查詢 JSJ 系的學生選修的課程號

2查詢選修1002 課程的學生的學生姓名 (不用嵌套及嵌套2種方法) 3查詢資料庫原理不及格的學生學號及成績

4查詢選修「資料庫原理」課且成績 80 以上的學生姓名(不用嵌套及嵌套2種方法) 5查詢平均分不及格的學生的學號,姓名,平均分。 6查詢女學生平均分高於75分的學生姓名。

7查詢男學生學號、姓名、課程號、成績。(一門課程也沒有選修的男學生也要列出,不能

四 嵌套、相關及其他

1 查詢平均分不及格的學生人數

2 查詢沒有選修1002 課程的學生的學生姓名

3 查詢平均分最高的學生學號及平均分 (2種方法 TOP , any , all) *4 查詢沒有選修1001,1002課程的學生姓名。

5 查詢1002課程第一名的學生學號(2種方法) 6 查詢平均分前三名的學生學號

7 查詢 JSJ 系的學生與年齡不大於19歲的學生的差集

8 查詢1001號課程大於90分的學生學號、姓名及平均分大於85分的學生學號、姓名 9 查詢每門課程成績都高於該門課程平均分的學生學號 10 查詢大於本系科平均年齡的學生姓名

答案

參考答案

1 create table student (sno6), sname var8), ssex2), sagesmallint, sdept var15), primary key(sno));

create table sc

(sno6), cno 4),

grade decimal(12,2), primary key(sno,cno));

into student

values( 』4001』,』趙茵』,』男』,20,』SX』)

from student

student

alter table student add sbirthdate datetime

1 select sno, sname, sage from student

where ssex=』女』 and sage between 19 and 21order by sage desc; 2 select sno, ssexfrom student

where sname like 』_明% 』 ; 3 select sno, cnofrom sc

where grade is null and cno=』1001』 ; 4 select sno, sname from student

where sdept in (』JSJ』,』SX』,』WL』) and sage>25 group by sdept;

select sno, cno, grade/10.0+1 as levelfrom sc ;

select distinct sdept from student ; select grade from sc

where sno=』0001』 and (cno=』1001』 or cno=』1002』) ;

select count(*) from student where sname like 』%明% 』 ; select avg(sage),max(sage) from student where sdept=』JSJ』 ; select cno,sum(grade),avg(grade),max(grade),min(grade) from sc group by cno

order by avg(grade) desc ;

select cno, avg(grade) from sc where cno in(『1001』,』1002』) group by cno ;

select sc.sno ,avg(grade) from scgroup by sc.sno

having avg(grade)>80 ;

select sno from sc group by sno having count(*)>2 ;

select cno from sc where grade>85 group by cno having count(*)=10 ; select sno from sc group by sno having avg(grade)<60 ;

select sno from sc where grade<60 group="" by="" sno="" having="">2 ;

select cno from student,sc where student.sno=sc.sno and sdept=』JSJ』 ; a:select sname from student,sc where student.sno=sc.sno and cno=』1002』

b:select sname from student where sno in (select sno from sc where cno=』1002』)

select sno,grade from sc,course

where sc.cno=course.cno and cname=』資料庫原理』 and grade<60 a:select sname from student ,sc,course

where student.sno=sc.sno and sc.cno=course.cno and grade>80 and cname=』 資料庫原理』 b:select sname from student where sno in (select sno from sc where grade>80 and cno in (select cno from course where cname=』 資料庫原理』)) select sno,sname,avg(grade) from sc,studentwhere student.sno=sc.snogroup by student.sno having avg(grade)<60

a:select sname from student where ssex=』女』 and sno in(select sno from sc group by sno having avg(grade)>75)

b:select sname from sc,student where student.sno=sc.sno and ssex=』女』group by student.sno having avg(grade)>75

select student.sno,sname,cno,grade from student left join sc on student.sno=sc.sno and ssex=』男』

select count(*) from student where sno in( select sno from sc group by sno havingavg(grade)<60)

select sname from student where sno not in(select sno from sc where cno=』1002』)

student

0001 aaX 0002 bb

0003 ccX Sc

0001 1001 0001 1002 0002 1001 0003 1002

Select sname from student where not exists(select* from sc where cno=』1002』 and sc.sno=student.sno)

a:select top 1 sno,avg(grade) from sc group by sno order by avg(grade) desc b:select sno, avg(grade) from sc group by sno

having avg(grade)=(select top 1 avg(grade) from scgroup by sno order by avg(grade) desc) c:select sno, avg(grade) from sc group by sno

having avg(grade)>=all ( select avg(grade) from sc group by sno)

select sname from student where not exists(

select * from course where cno in(『1001』,』1002』) and

not exists(select * from sc where sno =student.sno and cno=course.cno) ) a:select top 1 sno from sc cno=』1002』 order by grade desc b:select sno from sc where cno=』1002』 and grade >=all (

;

Ⅲ 求解:用SQL語句書寫下列資料庫商品查詢命令(每道題5分)

1. 查詢所有商品的商品名、單價、數量;
Select商品名,單價,數量
From 商品 ----------、 改為, 號即可
2. 查詢北京的倉庫信息;
1種方法Select * from 倉庫 where 倉庫名=』北京』
2種方法Select倉庫號,倉庫名,地址,面積
From 倉庫
Where 倉庫名=』北京』
(哪個對) -------------都對
3. 查詢面積不低於100的倉庫號及地址;
Select倉庫號,地址
from 倉庫
where面積>=100 ------------ok
4. 檢索進貨超過60天的商品情況;
-----------這個不對得改
select * from 商品 where datediff(day,進貨日期,getdate())>=60
5. 核算所有商品的總價,並填入總價欄位;
-----select sum(總價) as 總價 from 商品
6. 按總價降序查詢商品名、單價、數量和總價;
Select 商品名,單價,數量,總價 from 商品 order by 總價DESC
---------0k
7. 查詢北京倉庫中的商品信息;
--這句也不對
select * from 商品 where 倉庫號=(select 倉庫號 from 倉庫 where 倉庫名=『北京』)

8. 刪除2006年1月1日之前進貨的商品記錄;
---------這句也不對
Delete from 商品 where 進貨日期<』2006-1-1』

9. 查詢電視機的商品信息並將查詢結果存入表TV中;
select * into TV from 商品 where 商品名='電視機'
10. 查詢面積最大的倉庫名及其中存放商品的名稱和進貨日期。
select 商品名稱,進貨日期,倉庫名 from 商品 left join 倉庫 on 商品.倉庫號=倉庫.倉庫號 where 倉庫號=(select top 1 倉庫號 from 倉庫 order by max(倉庫面積)desc)

--------------注意 我期中的 括弧和逗號 有的是中文 會報錯

Ⅳ 資料庫,SQL查詢題目

--基礎題
--1.查詢讀者最喜愛的3種圖書分類號,即借閱表中出現最多的3類圖書分類號
SELECT TOP 3 [分類號] FROM [圖書] JOIN [借閱] ON [圖書].[圖書編號]=[借閱].[圖書編號]
GROUP BY [分類號] ORDER BY COUNT(*) DESC

--附加題
--1.查詢小於20歲的讀者最喜歡的3類圖書
SELECT TOP 3 [書名] FROM [讀者] JOIN [借閱] ON [讀者].[借書證號]=[借閱].[借書證號]
JOIN [圖書] ON [圖書].[圖書編號]=[借閱].[圖書編號]
WHERE [年齡]<20 GROUP BY [書名] ORDER BY COUNT(*) DESC

--2.查詢至少借閱了 寧靜 所借圖書(書名相同)的人的姓名
SELECT [姓名] FROM [讀者] WHERE [姓名]<>'寧靜' AND [借書證號] IN(SELECT [借書證號] FROM [借閱]
WHERE [圖書編號] IN(SELECT [圖書編號] FROM [讀者] JOIN [借閱] ON [讀者].[借書證號]=[借閱].[借書證號] WHERE [姓名]='寧靜'))

--3.查詢借閱了多於3本書且每本書價均高於60的讀者的借書證號
SELECT [借書證號]
FROM [借閱] JOIN [圖書] ON [圖書].[圖書編號]=[借閱].[圖書編號]
WHERE [單價]>60 GROUP BY [借書證號] HAVING COUNT(*)>3
GO

--4.假定讀者表中所有人姓名均不多於4個漢字,請建立一個查詢語句,要求根據名字中任意1個或兩個或3個或4個漢字,即可找到該讀者的詳細信息(即完全模糊查詢)
CREATE PROCEDURE CX
@XM VARCHAR(8) AS
IF LEN(@XM)=1 SELECT * FROM [讀者] WHERE @XM LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=2 SELECT * FROM [讀者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=3 SELECT * FROM [讀者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=4 SELECT * FROM [讀者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,3,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
GO

Ⅳ 用資料庫SQL語句編寫下列查詢

1.三表鏈接:select p.品名,p.價格 from 商品 as p,顧客 as c,銷售 as s where p.編號=s.商品編號 and s.顧客卡號=c.卡號 c.積分>1002.子查詢:select 售價 from 商品 where 售價>(select 售價 from 商品表 where 品名='伊利乳品')3。內連接:select p.名稱,s.電話 from 商品表 as p ,廠商 as s where p.廠商編號=s.編號 and p.庫存<100

Ⅵ 關於資料庫SQL的一些簡單題

1.select 班級名稱,班級代碼 from 班級 where 系部代碼='02' or 系部代碼='03';
2.在'學生'表中查詢姓'李'學員的學號,姓名,年齡;
3.在'讀者表' 表中查詢名稱中含有'紅'的所有內容;
5.select 姓名,年齡 from 教師 where 姓名 like '?梅%';
4.在'圖書表'表中查詢圖書編號為'100111'的所有內容;
6.在'讀者表'表中查詢'系部名稱'為'自動化'的讀者的最小年齡;
7.在'用戶表'表中查詢姓名,年齡欄位,並按年齡,姓名升序排列;
8.select * from 學生 where 姓名 like '張%' or 姓名 like '羅%' or 姓名 like '劉%' order by 姓名
9.在'讀者表'表中查詢年齡大於60或小於1810的讀者姓名;
10.將編號為'115',姓名為'王梅',性別為'女'的記錄插入'讀者表'表;
11.select 姓名 as name,出生日期 as 'Birthday' from 學生 where 性別='女'.

排版沒排好,看起來有點費力;順序有點亂,不過我都按照你的順序寫了.

Ⅶ 請求解題 要求用SQL語句完成下列題目

按圖中問題和需求,以下會使用mysql環境的sql進行解答。

  • 第一題: 考察主鍵和外鍵的創建表語句,以及基本的創建語句格式。這里提供兩種,其餘可以查閱相關資料。

mysql 插入數據

Ⅷ SQL 查詢語句期中考試題2

--1.分別查詢學生表和學生修課表中的全部數據。
SELECT * FROM student--查詢學生表
SELECT * FROM course--查詢課程表

--2.查詢成績在70到80分之間的學生的學號、課程號和成績。
SELECT Sno 學號,Cno 課程號,Grade 成績
FROM SC
WHERE Grade BETWEEN 70 AND 80

--3.查詢C01號課程成績最高的分數
SELECT TOP 1 Grade
FROM SC
WHERE Cno='C01'
ORDER BY Grade DESC--降序DESC,升序ASC

--4.查詢學生都選修了哪些課程,要求列出課程號。
SELECT Cname AS 學生選修的課程,Cno AS 課程號
FROM course
WHERE Cno IN(SELECT DISTINCT Cno FROM SC)--DISTINCT用來去除重復

--5.查詢Northwind資料庫中orders表的OrderID、CustomerID和OrderDate,
--並將最新的定購日期(OrderDate)列在前邊。
USE Northwind
GO
SELECT OrderID,CustomerID,OrderDate
FROM orders
ORDER BY OrderDate DESC--降序DESC,升序ASC

--6.查詢Northwind資料庫中orders表的ShipCountry列以B,C,D,F --//ShipCountry BCDF
--開始且第三個字元為"a"的OrderID、CustomerID和ShipCountry的信息。//OrderID、CustomerID第三個字元為"a"
USE Northwind
GO
SELECT OrderID,CustomerID,ShipCountry FROM orders
WHERE ShipCountry LIKE '[BCDF]_a%'--_下劃線表示任意一個字元,%表示一個或多個字元

--7.查詢Northwind資料庫中orders表的ShipCountry列不以A,B,C,D,E,F開始且最後一個字
--母是"a"的OrderID、CustomerID和ShipCountry的信息。
USE Northwind
GO
SELECT OrderID,CustomerID,ShipCountry
FROM orders
WHERE ShipCountry LIKE '[^ABCDEF]%a'

--8.查詢修了C02號課程的所有學生的平均成績、最高成績和最低成績。
SELECT AVG(Grade) 平均成績,MAX(Grade) 最高成績,MIN(Grade) 最低成績
FROM SC
WHERE Cno='C02'

--9.統計每個系的學生人數。
SELECT Sdept 系別,COUNT(*) 人數
FROM student
WHERE Sdept IN(SELECT DISTINCT Sdept FROM student)
GROUP BY Sdept

--10.統計每門課程的修課人數和考試最高分。
SELECT Cname 課程名,COUNT(*) 修課人數,MAX(Grade) 考試最高分
FROM SC,course
WHERE SC.Cno IN(SELECT DISTINCT Cno FROM SC ) AND course.Cno=SC.Cno
GROUP BY course.Cname

--11.統計每個學生的選課門數,並按選課門數的遞增順序顯示結果。
SELECT student.Sname 學生姓名,student.Sno 學生學號,COUNT(SC.Sno) 選課門數
FROM student
inner join SC ON SC.Sno=student.Sno
GROUP BY student.Sname,student.Sno
ORDER BY COUNT(SC.Sno) ASC

--12.統計選修課的學生總數和考試的平均成績。
SELECT COUNT(DISTINCT(Sno)) AS 學生總數,AVG(Grade) AS 平均成績
FROM SC --//用DISTINCT消除重復的行

--13.查詢選課門數超過2門的學生的平均成績和選課門數。
SELECT Student.Sname,AVG(Sc.Grade) 平均成績,COUNT(SC.Sno) 選課門數
FROM SC
--內聯接join或inner join,內聯系是比較運算符,只返回符合條件的行
JOIN Student ON (SC.Sno = Student.Sno)
JOIN Course ON (SC.Cno = Course.Cno)
GROUP BY Student.Sname
HAVING COUNT(distinct Course.Cno) >2--分組條件

--14.列出總成績超過200分的學生,要求列出學號、總成績。
SELECT Sno 學號,SUM(Grade) 總成績
FROM SC
GROUP BY Sno
HAVING SUM(Grade)>200

--15.查詢pubs資料庫的titles表中每類圖書的平均價格超過12.0元的書的類型(Type)、
--平均價格和最高價格。
USE pubs
GO
SELECT Type AS 書的類型,AVG(price) AS 平均價格,MAX(price) AS 最高價格
FROM titles
GROUP BY Type
HAVING AVG(price)>12.0

--16.查詢pubs資料庫的titles表中每類圖書中圖書的數目超過3本的圖書的總價格。
USE pubs
GO
SELECT 圖書類型=Type,圖書的數目=count(Type),圖書的總價格=SUM(price)
FROM titles
GROUP BY Type
HAVING count(Type)>3

--17.查詢選修了c02號課程的學生的姓名和所在系。
SELECT Sname 學生姓名,Sdept 所在系,SC.Cno AS 選修課程
FROM student
inner join SC ON student.Sno=SC.Sno
WHERE SC.Cno='C02'

--18.查詢成績80分以上的學生的姓名、課程號和成績,並按成績的降序排列結果。
SELECT Sname 學生姓名,SC.Cno 課程號,SC.Grade 成績
FROM student
inner join SC ON student.Sno=SC.Sno--內連接表SC查詢
WHERE SC.Grade>80
ORDER BY SC.Grade DESC

--19.查詢計算機系男生修了"資料庫基礎"的學生的姓名、性別、成績。
SELECT Sname 姓名,Ssex 性別,SC.Grade 成績
FROM student
inner join SC ON Cno IN(SELECT Cno FROM course WHERE Cname='資料庫基礎') --顯示成績的條件
AND student.Sno=SC.Sno --顯示成績的學生的學號
WHERE Sdept='計算機系' AND Ssex='男'

--20.查詢哪些學生的年齡相同,要求列出年齡相同的學生的姓名和年齡。
--這題使用到了表的自連接,所以需要給表取兩個別名,如A和B
SELECT A.Sname 年齡相同的學生的姓名,A.Sage 年齡
FROM student A
inner join student B ON A.Sage IN(SELECT Sage FROM student WHERE A.Sage=B.Sage AND A.Sname!=B.Sname)
GROUP BY A.Sname,A.Sage
ORDER BY A.Sage

--21.查詢哪些課程沒有人選,要求列出課程號和課程名。
SELECT Cno AS 課程號,Cname AS 課程名
FROM course
WHERE Cno NOT IN(SELECT DISTINCT SC.Cno FROM SC)

--22.查詢有考試成績的所有學生的姓名、修課名稱及考試成績
--要求將查詢結果放在一張新的永久表(假設新表名為new-sc)中。
SELECT student.Sname AS 有考試成績的學生的姓名,course.Cname AS 修課名稱,SC.Grade AS 考試成績
INTO [new_sc] --將查詢結果放入新表new_sc中
FROM student,course,SC
WHERE SC.Grade IS NOT NULL AND student.Sno=SC.Sno AND course.Cno=SC.Cno

--23.分別查詢信息系和計算機系的學生的姓名、性別、修課名稱、修課成績,
--並要求將這兩個查詢結果合並成一個結果集,
--並以系名、姓名、性別、修課名稱、修課成績的順序顯示各列。
--//此題用到了並union查詢
SELECT Sdept 系名,Sname 姓名,Ssex 性別,course.Cname 修課名稱,SC.Grade 修課成績
FROM student
inner join SC ON student.Sno=SC.Sno
inner join course ON course.Cno=SC.Cno
WHERE Sdept='信息系'
UNION
SELECT Sdept 系名,Sname 姓名,Ssex 性別,course.Cname 修課名稱,SC.Grade 修課成績
FROM student
inner join SC ON student.Sno=SC.Sno
inner join course ON course.Cno=SC.Cno
WHERE Sdept='計算機系'

select sdept, sname,ssex,cname,grade from student,sc,course
where student.sno=sc.sno and sc.cno=course.cno and (sdept='信息系' or sdept='計算機系')

--24.用子查詢實現如下查詢:
--(1) 查詢選修了C01號課程的學生的姓名和所在系。
SELECT Sname AS 選修了C01號課程的學生的姓名,Sdept AS 所在系
FROM student
WHERE Sno IN(SELECT Sno FROM SC WHERE Cno='C01')

--(2) 查詢數學系成績80分以上的學生的學號、姓名。
SELECT Sno AS 數學系成績80分以上的學生的學號,Sname AS 姓名
FROM student
WHERE Sno IN(SELECT Sno FROM SC WHERE Grade>80)
AND Sno IN(SELECT Sno FROM student WHERE Sdept='數學系')

--(3) 查詢計算機系學生所選的課程名.
SELECT Cname AS 計算機系學生所選的課程名
FROM course
WHERE
course.Cno IN(SELECT DISTINCT Cno FROM SC WHERE SC.Sno IN(SELECT Sno FROM student WHERE Sdept='計算機系'))

--25.將計算機系成績高於80分的學生的修課情況插入到另一張表中,分兩種情況實現://////////////?????/
--(1) 在插入數據過程中建表。
--使用SELECT INTO插入數據的方法,是在插入數據的過程中建立新表
SELECT student.Sname AS 學生名字,course.Cname AS 選修課程,SC.Cno AS 課程編號
INTO [SC_Info1]--將計算機系成績高於80分的學生的修課情況插入到表SC_Info1中
FROM student,course,SC
WHERE student.Sdept='計算機系' AND SC.Grade>80 AND course.Cno=SC.Cno AND student.Sno=SC.Sno

--(2) 先建一個新表,然後再插入數據。
--創建表SC_Info2
CREATE TABLE SC_Info2
(
Sname char(7),
Cname char(20),
Cno char(10)
)

--往表SC_info2插入查詢得到的結果
INSERT SC_Info2
SELECT student.Sname AS 學生名字,course.Cname AS 選修課程,SC.Cno AS 課程編號
FROM student,course,SC
WHERE student.Sdept='計算機系' AND SC.Grade>80 AND course.Cno=SC.Cno AND student.Sno=SC.Sno

--26.刪除修課成績小於50分的學生的修課記錄
DELETE SC WHERE Grade<50 OR Grade IS NULL

--27.將所有選修了"c01"課程的學生的成績加10分。
UPDATE SC
SET Grade=Grade+10
WHERE Cno='C01'