第一篇:SQL語言數(shù)據(jù)查詢操作
實(shí)驗(yàn)三 SQL語言——數(shù)據(jù)查詢操作
一、實(shí)驗(yàn)時(shí)間
二、實(shí)驗(yàn)地點(diǎn):317室
三、實(shí)驗(yàn)條件與環(huán)境
1. 通用PC機(jī)
2. PC機(jī)必須安裝Windows 2000系列、Windows XP系列或Windows NT操作系統(tǒng)平臺(tái)
3. PC機(jī)還須安裝Microsoft SQL Server 2000 任意一版本(個(gè)人版、標(biāo)準(zhǔn)版、企業(yè)版)
4. 最好有一臺(tái)公用的SQL Server 2000 服務(wù)器
四、實(shí)驗(yàn)?zāi)康?. 通過上機(jī)實(shí)驗(yàn)進(jìn)一步加深對SQL查詢語句的基本語法格式的掌握
2. 通過上機(jī)實(shí)驗(yàn)掌握單表查詢的實(shí)現(xiàn)過程
3. 通過上機(jī)實(shí)驗(yàn)掌握多表關(guān)聯(lián)查詢的實(shí)現(xiàn)過程
4. 通過上機(jī)實(shí)驗(yàn)掌握嵌套查詢的實(shí)現(xiàn)過程
5. 通過上機(jī)實(shí)驗(yàn)掌握集函數(shù)與謂詞在Select語句中的使用
6. 通過上機(jī)實(shí)驗(yàn)加深了解Select語句與關(guān)系代數(shù)運(yùn)算(如選擇、投影、連接、除法等)兩者之間的聯(lián)系與區(qū)別
五、實(shí)驗(yàn)要求:
1. 本實(shí)驗(yàn)所有實(shí)驗(yàn)內(nèi)容要求在規(guī)定時(shí)間(2課時(shí))內(nèi)完成2. 實(shí)驗(yàn)內(nèi)容中涉及到的各查詢操作均通過SQL語言來實(shí)現(xiàn)
3.實(shí)驗(yàn)完成后需要書寫實(shí)驗(yàn)報(bào)告
六、實(shí)驗(yàn)內(nèi)容:
1.查詢?yōu)楣こ蘆1供應(yīng)零件的供應(yīng)商號(hào)碼SNO
2.查詢?yōu)楣こ蘆1供應(yīng)零件P1的供應(yīng)商號(hào)碼SNO
3.查詢?yōu)楣こ蘆1供應(yīng)紅色零件的供應(yīng)商號(hào)碼SNO
4.查詢沒有使用天津供應(yīng)商生產(chǎn)的零件并且當(dāng)前工程所使用零件的顏色全部為紅色的工程號(hào)JNO
5.查詢至少選用了供應(yīng)商S1所供應(yīng)的全部零件的工程號(hào)JNO
6.找出所有供應(yīng)商的名稱和所在城市
7.找出所有零件的名稱、顏色和重量
8.找出使用供應(yīng)商S1所供應(yīng)零件的工程號(hào)碼
9.找出工程項(xiàng)目J2使用的各種零件的名稱及其重量
10.找出上海廠商供應(yīng)的所有零件號(hào)碼
11.找出使用上海產(chǎn)的零件的工程名稱
12.找出沒有使用天津產(chǎn)的零件的工程號(hào)碼
13.找出重量最輕的紅色零件的零件編號(hào)PNO
14.找出供應(yīng)商與工程所在城市相同的供應(yīng)商提供的零件號(hào)碼
15.找出所有這樣的一些<CITY,CITY,PNAME>三元組,使得第一個(gè)城市的供應(yīng)商為第二個(gè)城市的工程供應(yīng)零件的名稱為PNAME
16.重復(fù)第15題,但不檢索兩個(gè)CITY值相同的三元組
17.找出供應(yīng)商S1為工程名中含有“廠”字的工程供應(yīng)的零件數(shù)量總和
18.找出為工程供應(yīng)零件的總數(shù)量不低于500的供應(yīng)商號(hào)碼及供應(yīng)總數(shù)量,結(jié)果按供應(yīng)商號(hào)碼分類并且按供應(yīng)總數(shù)量降序排列
七、實(shí)驗(yàn)總結(jié):
數(shù)據(jù)查詢是一種極為重要的面向數(shù)據(jù)庫的數(shù)據(jù)操縱方式。實(shí)驗(yàn)完成后,請同學(xué)們總結(jié)一下SELECT語
句實(shí)現(xiàn)各種類型查詢?nèi)蝿?wù)的一般過程和操作實(shí)現(xiàn)方法,并對利用SELECT語句實(shí)現(xiàn)各類查詢?nèi)蝿?wù)的解題規(guī)律與方法作一總結(jié)。
第二篇:SQL查詢語言
《SQL查詢語言》教學(xué)設(shè)計(jì)
一、教學(xué)目標(biāo)分析
認(rèn)知目標(biāo)
學(xué)習(xí)SQL查詢語言的使用方法。
掌握SQL語言當(dāng)中的SELECT語句
能力目標(biāo)
培養(yǎng)學(xué)生應(yīng)用查詢語句查詢數(shù)據(jù)的應(yīng)用能力
情感目標(biāo)
體驗(yàn)SQL語言查詢方法
主動(dòng)將數(shù)據(jù)庫管理信息的思想、方法創(chuàng)造性地應(yīng)用到生活、學(xué)習(xí)之中。
二、教學(xué)內(nèi)容分析
課前需要為學(xué)生準(zhǔn)備名為SCHOOL數(shù)據(jù)庫文件,里面放著名為CLASS的表,供學(xué)生練習(xí)使用。提供這個(gè)數(shù)據(jù)庫文件可以避免學(xué)生在建立表以及表中錄入記錄上花費(fèi)太多的時(shí)間,而把重點(diǎn)放在對本節(jié)內(nèi)容的學(xué)習(xí)上,可以讓教師更好地進(jìn)行目標(biāo)調(diào)控,做到有的放矢。這個(gè)數(shù)據(jù)庫文件放置于網(wǎng)絡(luò)共享文件夾中,并將其快捷方式置于學(xué)生機(jī)的桌面上。教學(xué)重點(diǎn):
1、使用“在設(shè)計(jì)視圖中創(chuàng)建查詢”。
2、SQL查詢語言的格式。
教學(xué)難點(diǎn):
運(yùn)行、調(diào)試SQL命令。
解決措施:
通過老師講解、演示及設(shè)置的任務(wù),讓學(xué)生在學(xué)習(xí)的過程中,自己動(dòng)手,以不斷解決問題為手段,有機(jī)結(jié)合各種知識(shí),以任務(wù)驅(qū)動(dòng)的方式發(fā)展能力,一步步完成學(xué)習(xí)任務(wù)。
三、學(xué)生學(xué)習(xí)狀態(tài)分析
本課的教學(xué)對象是大二的學(xué)生,由于學(xué)生的理論知識(shí)薄弱,加上數(shù)據(jù)庫比較抽象,比較難理解的特點(diǎn),從而造成學(xué)生對數(shù)據(jù)庫的認(rèn)識(shí)還很模糊。學(xué)生在本節(jié)課之前,已經(jīng)掌握數(shù)據(jù)庫和表的創(chuàng)建、打開及表中輸入、修改記錄的方法,初步掌握SQL的一些基本操作,在此基礎(chǔ)上,如何學(xué)會(huì)在數(shù)據(jù)庫眾多表中查詢記錄變得至關(guān)重要了,所以為了學(xué)生更好地掌握這一點(diǎn)知識(shí)點(diǎn),應(yīng)廣泛調(diào)動(dòng)他們的學(xué)習(xí)興趣,增強(qiáng)學(xué)習(xí)的主動(dòng)性。
四、教學(xué)策略
職業(yè)技術(shù)學(xué)院課程本身的特點(diǎn)、知識(shí)及技能的傳授應(yīng)以典型“任務(wù)”為主,創(chuàng)造學(xué)生自主探究學(xué)習(xí)的平臺(tái),學(xué)生在教師的指導(dǎo)下帶著任務(wù)通過實(shí)際操作、探究學(xué)習(xí)等方式,逐步完成任務(wù)。
五、教學(xué)過程
合理安排教學(xué)過程是教學(xué)成功的關(guān)鍵。因此,我把教學(xué)過程分為“情境感知,揭示課題——任務(wù)驅(qū)動(dòng),講授新知——課堂小結(jié),鞏固新知”三部分。
(一)情境感知,揭示課題
為了讓同學(xué)們對自己班級(jí)同學(xué)的情況有所了解,我們?nèi)绾魏啽愕夭樵兡??我們可以通過輸入一些命令解決問題。這些命令就是我們這節(jié)課所要學(xué)習(xí)的SQL查詢語言。設(shè)計(jì)思路:
SQL所包含的數(shù)據(jù)具有一定的規(guī)模,并且能快速地從眾多表中查詢到某個(gè)同學(xué)的情況,讓學(xué)生體會(huì)到數(shù)據(jù)庫在現(xiàn)實(shí)生活中的應(yīng)用。
(二)任務(wù)驅(qū)動(dòng),講授新知
1. 如何在SQL中使用查詢命令?
任務(wù)一:
在SCHOOL數(shù)據(jù)庫的CLASS表中查詢所有的記錄
Select * from class
1)步驟:略
2)分析剛才寫的查詢命令:
SELECT:表示這是一個(gè)查詢語句
*:表示顯示出符合條件記錄的所有字段內(nèi)容,如果在這輸入的是一些逗號(hào)分隔的字段名,則查詢結(jié)果只顯示響應(yīng)字段的內(nèi)容。
FROM:表示從哪個(gè)表里查詢。
3)寫SQL命令時(shí)應(yīng)注意的事項(xiàng):
命令必須是英文的半角字母
字符型數(shù)據(jù)要用英文的單引號(hào)包含起來。
設(shè)計(jì)思路:
這既是課堂重點(diǎn)也是難點(diǎn),通過兩個(gè)層次推進(jìn)的設(shè)疑,教師適當(dāng)?shù)乩斫?、演示,使學(xué)生對SQL查詢語言已消除了陌生感,并有了一定的理解。
2. 嘗試練習(xí)
任務(wù)二:
查詢表中頭三條記錄
通過本例講解讓學(xué)生掌握TOP關(guān)鍵字的用法
任務(wù)三:
查詢姓名和年齡兩列數(shù)據(jù)
通過本例講解讓學(xué)生掌握部分字段內(nèi)容的查詢
任務(wù)四:
查詢年齡大于等于17而小于等于19的數(shù)據(jù)
通過本例講解,讓學(xué)生掌握比較運(yùn)算符和邏輯運(yùn)算符的應(yīng)用,以及另一種方法BETWEEN…AND…關(guān)鍵字的用法
任務(wù)五:
查詢健康狀況為良好的所有數(shù)據(jù)
通過本例講解,讓學(xué)生掌握WHERE關(guān)鍵字的用法
任務(wù)六:
查詢姓李的學(xué)生所有數(shù)據(jù)
通過本例講解,讓學(xué)生掌握LIKE關(guān)鍵字的用法
任務(wù)七:
查詢健康狀況為良好或一般的數(shù)據(jù)
通過本例講解,讓學(xué)生掌握IN關(guān)鍵字的用法
任務(wù)八:
查詢中文成績及格的數(shù)據(jù)
通過本例講解,讓學(xué)生掌握比較運(yùn)算符的應(yīng)用
任務(wù)九:
查詢英語和中文的總成績
通過本例講解,讓學(xué)生掌握為派生列起別名的方法
任務(wù)十:
學(xué)生練習(xí):
查詢一班各位同學(xué)的英語、中文成績總分。
任務(wù)十一:
將中文成績俺降序排列(升序asc)
通過本例講解,讓學(xué)生掌握ORDER BY關(guān)鍵字的應(yīng)用
任務(wù)十二:
查詢一班同學(xué)中文成績排名狀況(按降序)
通過本例講解,讓學(xué)生掌握WHERE條件和ORDER BY關(guān)鍵字綜合應(yīng)用
任務(wù)十三
查詢各班中文總成績
通過本例講解,讓學(xué)生掌握聚合函數(shù)和GROUP BY關(guān)鍵字的應(yīng)用
任務(wù)十四
查詢一班中文總成績
通過本例講解,讓學(xué)生掌握聚合函數(shù)和GROUP BY關(guān)鍵字以及HAVING關(guān)鍵字的應(yīng)用 任務(wù)十五:
利用class表中的姓名、中文、英文成績創(chuàng)建一個(gè)名為jjnn的新表。
通過本例講解,讓學(xué)生掌握從源表中篩選一部分?jǐn)?shù)據(jù)產(chǎn)生新表的方法。
設(shè)計(jì)思路:
這個(gè)環(huán)節(jié)我拋出了一個(gè)個(gè)任務(wù),促使學(xué)生去自我探索和自主學(xué)習(xí),達(dá)到掌握操作和使用的目的,激發(fā)學(xué)生的學(xué)習(xí)熱情和創(chuàng)造積極性。
(三)課堂小結(jié),鞏固新知
這節(jié)課我們學(xué)習(xí)了SQL語言查詢的使用方法,綜合以上任務(wù),不難得出SELECT語句的使用格式和方法(板書SELECT語句的格式):
? 〈SELECT語句〉::=
SELECT [ALL|DISTINCT]〈目標(biāo)列表達(dá)式〉[別名] [ ,〈目標(biāo)列表達(dá)式〉[別
名]]?
FROM 〈表名或視圖名〉[別名][ ,〈表名或視圖名〉[別名]]?
[WHERE〈條件表達(dá)式〉]
[GROUP BY 〈列名1〉[HAVING〈條件表達(dá)式〉]]
[ORDER BY 〈列名2〉[ASC|DESC]];
? 〈目標(biāo)列表達(dá)式〉::=
*
|〈表名〉.*
|[〈表名〉.]〈列名表達(dá)式〉{,[〈表名〉.]〈列名表達(dá)式〉}
|〈集函數(shù)名〉([DISTINCT|ALL] *|列名)
? 〈集函數(shù)名〉::=
COUNT
|SUM
|AVG
|MAX
|MIN
? 〈條件表達(dá)式〉::=
1.? θ ?
2.? [NOT] BETWEEN ? AND ?
3.? [NOT] IN(?)
4.? [NOT] LIKE '?'
5.? IS [NOT] NULL
6.[NOT] EXISTS 〈SELECT語句〉
7.〈條件表達(dá)式〉〈AND|OR〉〈條件表達(dá)式〉
對學(xué)生在操作中出現(xiàn)的問題再一次強(qiáng)調(diào)書寫命令的注意事項(xiàng)。
六、教學(xué)反思
本節(jié)課,我的設(shè)計(jì)任務(wù)與學(xué)生的成績有關(guān),容易激起學(xué)生很大的關(guān)注。隨著任務(wù)的深入,學(xué)習(xí)目標(biāo)得到很好的落實(shí),力爭以學(xué)習(xí)目標(biāo)為起點(diǎn),又以學(xué)習(xí)目標(biāo)為歸宿。學(xué)習(xí)過程中要時(shí)刻關(guān)注學(xué)生的進(jìn)展及出現(xiàn)的問題,對于學(xué)生的點(diǎn)滴進(jìn)步給予及時(shí)的肯定;對于出現(xiàn)的問題,也是一種動(dòng)態(tài)生成的教學(xué)資源,應(yīng)善于捕捉,適時(shí)提出,引導(dǎo)學(xué)生分析并解決,實(shí)現(xiàn)“問題從學(xué)生中來,最終回到學(xué)生中去”,從而完善學(xué)生的意義建構(gòu)。
第三篇:《數(shù)據(jù)的查詢操作》
第八次作業(yè)1
1.檢索年齡大于18歲的女學(xué)生的學(xué)號(hào)和姓名(注意:要給列起別名);use 學(xué)生課程數(shù)據(jù)庫
select sno ,sname
from studentwhere sage>18 and ssex='女'
2.檢索所有男學(xué)生選修的課程號(hào)和課程名稱(僅在結(jié)果中列出10%的數(shù)據(jù)行)。use 學(xué)生課程數(shù)據(jù)庫
select top(10)percent course.cno,cname
from student,sc,course
where student.sno=sc.sno and sc.cno=course.cno and ssex='男'
3.查詢年齡大于18,并不是信息管理也不是計(jì)算機(jī)科學(xué)的學(xué)生的姓名和性別(復(fù)合查詢);
select sname,ssex
from studentwhere sage>18 and sdept not in('信息管理','計(jì)算機(jī)科學(xué)')
4..查詢以“DB_”開頭,和倒數(shù)第二個(gè)漢字為“導(dǎo)”字的課程信息(模糊查詢);select *
from course
where cname like 'DB_%' or cname like '%導(dǎo)_'
5.查詢student表和sc表的交叉連接;
select *
from student cross join sc
6.檢索王同學(xué)不學(xué)的課程的課程號(hào)和課程名稱;
select cno,cname
from course
where cno not in(select cno from sc where sno in(select snofrom student
where sname='王%'))
7.檢索全部學(xué)生都選修的課程號(hào)和課程名稱;
SELECT cno,cname
FROM course
WHERE NOT EXISTS
(SELECT *FROM student
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE SC.Sno= Student.Sno AND SC.Cno= Course.Cno))
8.檢索所有課程的成績均高于90分的學(xué)生的姓名和年齡;
select sname, sage
from student
where sno in
(select sno
from sc
group by sno
having MIN(grade)>90)
go
9.求劉老師所授的每門課程的平均成績;
select cno,AVG(grade)
from sc
where cno in(select cno from course where cname in(select job from
teacher
where ename like '劉%'))
Group by cno
10.求年齡大于所有女同學(xué)的男學(xué)生的姓名和年齡
select sname,sage
from student
where sage> all(select sage from student where ssex='女')and ssex='男'
11.求每個(gè)學(xué)生的總分,要求輸出學(xué)號(hào)和總分?jǐn)?shù)(要求依然保持學(xué)生原有的明細(xì)分?jǐn)?shù),并按學(xué)號(hào)分組匯總)
select sno,grade
from sc
order by sno
COMPUTE SUM(grade)by sno
12.查詢各不同平均成績所對應(yīng)的學(xué)生人數(shù)(要求顯示各組的單項(xiàng)人數(shù))
select avgr,COUNT(*)
from(select sno,AVG(grade)from sc
group by sno)as sg(sno,avgr)GROUP BY avgr
13.查詢年齡小于18歲和大于20歲的學(xué)生的所有信息(要求用并運(yùn)算實(shí)現(xiàn)union);select *
from student
where sage<18
union
select *
from student
where sage>20
14.查詢即選修了‘1001’號(hào)課程有選修了‘1003’號(hào)課程的學(xué)生的學(xué)號(hào)(要求用用交運(yùn)算實(shí)現(xiàn)intersect);
select sno
from sc
where cno='1001'
intersect
select sno
from scwhere cno='1003'
15.查詢選修了‘1002’號(hào)課程,但不是工業(yè)工程系的學(xué)生的學(xué)號(hào)(要求用差運(yùn)算實(shí)現(xiàn)except)
select sno
from sc
where cno=1002
exceptselect sno
from student
where sdept!='工業(yè)工程'
16.創(chuàng)建一個(gè)公用表,該表由課程號(hào)、人數(shù)和最高分組成,用于存放各門課程的課程號(hào)、選修該課的人數(shù)及該門課的最高分?jǐn)?shù),查詢該公用表,并按照課程號(hào)排序。
WITH gongyongbiao(cno,amount,maxgrade)
AS(SELECT sc.cno, COUNT(*), MAX(grade)
FROM course,sc
WHERE sc.cno IS NOT NULL
GROUP BY sc.cno)
SELECT cno,amount,maxgrade
FROM gongyongbiao
第八次作業(yè)
21.在學(xué)生信息表中進(jìn)行自聯(lián)接查詢,并在連接時(shí)使用內(nèi)鏈接,返回籍貫是“河南”或者“北
京”的學(xué)生學(xué)號(hào)、姓名、班級(jí)編號(hào)及籍貫信息。
select student.sno,sname,class,jiguan
from student
where jiguan=‘河南’or jiguan=‘北京’
2.查詢?nèi)藬?shù)超過45人所在班級(jí)中的學(xué)生的學(xué)號(hào)、姓名和班級(jí)名稱。
Select 學(xué)號(hào),姓名,班級(jí)名稱
From 學(xué)生信息a,班級(jí)信息b
Where a.班級(jí)編號(hào)=b.班級(jí)編號(hào) and a.班級(jí)編號(hào) in(select 班級(jí)編號(hào) from 班級(jí)信息 where 人數(shù)>45)
3.對于成績大于等于90的數(shù)據(jù)進(jìn)行查詢,并返回考試成績的學(xué)生的學(xué)號(hào)、姓名、性別、籍
貫和所在班級(jí)名稱及年級(jí)信息。(用EXISTS編寫語句)
Select a.sno,a.sname,a.ssex,a.jiguan,b.class,b.grade
From 學(xué)生信息a inner join 班級(jí)信息b
On a.班級(jí)編號(hào)=b.班級(jí)編號(hào)
Where exists(select* from 成績表 where 學(xué)號(hào)=a.學(xué)號(hào) and grade>=90)
4.查詢出任意一個(gè)大于平均成績的學(xué)生的學(xué)號(hào)、姓名、班級(jí)編號(hào)、課程編號(hào)和成績信息。
Select a.sno,a.sname,a.class,b.cno,b.grade
From 學(xué)生信息a inner join 成績表b
On a.學(xué)號(hào)=b.學(xué)號(hào)
Where grade>any(select avg(grade)from 成績表)
5.查詢學(xué)生姓名為“李文東”所在班級(jí)的學(xué)生信息,要求返回學(xué)生的學(xué)號(hào)、姓名、性別、班級(jí)編號(hào)、班級(jí)名稱和年級(jí)信息
Select a.sno,a.sname,a.ssex,b.banjibianhao,b.banjimingcheng,b.nianjixinxi From 學(xué)生信息a inner join 班級(jí)信息b on a.班級(jí)編號(hào)=b.班級(jí)編號(hào)
Where a.班級(jí)編號(hào)=(select 班級(jí)編號(hào) from 學(xué)生信息 where sname=‘李文東’)
6.查詢出所有非計(jì)算機(jī)系的學(xué)生信息,并顯示出這些學(xué)生的考試成績,成績按降序排列顯示,要求返回學(xué)生的學(xué)號(hào)、姓名、班級(jí)編號(hào)、課程編號(hào)和成績信息。
Select a.學(xué)號(hào),a.姓名,a.班級(jí)編號(hào),b.課程編號(hào),b.成績
From 學(xué)生信息a inner join 成績表b
On a.學(xué)號(hào)=b.學(xué)號(hào)
Where a.學(xué)號(hào) not in(select 學(xué)號(hào) from 學(xué)生信息 where 班級(jí)編號(hào) in
(select 班級(jí)編號(hào) from 課程信息 where 開課系別=‘計(jì)算機(jī)系’))
Order by 成績 desc
或
Select a.學(xué)號(hào),a.姓名,a.班級(jí)編號(hào),b.課程編號(hào),b.成績
From 學(xué)生信息a inner join 成績表b
On a.學(xué)號(hào)=b.學(xué)號(hào)
Where a.班級(jí)編號(hào) not in((select 班級(jí)編號(hào) from 課程信息 where 開課系別=‘計(jì)算機(jī)系’))Order by 成績 desc
第四篇:SQL-數(shù)據(jù)查詢語言
寧波工程學(xué)院
數(shù)據(jù)庫理論與技術(shù)課程實(shí)驗(yàn)報(bào)告
學(xué)院: 電子與信息工程學(xué)院 專業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 年級(jí): 計(jì)科10-2 實(shí)驗(yàn)時(shí)間: 2012年4月15日
組長: 何亞玲 學(xué)號(hào): 10401010201 指導(dǎo)教師簽字: 成績:
實(shí)驗(yàn)
三、SQL-數(shù)據(jù)查詢語言
一、實(shí)驗(yàn)?zāi)康暮鸵?/p>
1、實(shí)驗(yàn)?zāi)康模荷钊肜斫膺B接查詢和嵌套查詢的語句格式、執(zhí)行過程,掌握它們的使用方法;理解數(shù)據(jù)更新語言INSERT、UPDATE、DELETE語句的格式和作用,掌握它們的使用方法和應(yīng)用范圍;理解視圖的概念,掌握其定義方法和應(yīng)用方法。
2、實(shí)驗(yàn)要求:在每次實(shí)驗(yàn)前,學(xué)生必須根據(jù)實(shí)驗(yàn)指導(dǎo)書設(shè)計(jì)出實(shí)驗(yàn)方案(程序和實(shí)驗(yàn)步驟);在實(shí)驗(yàn)過程中要求獨(dú)立進(jìn)行程序調(diào)試和排錯(cuò),學(xué)會(huì)使用在線幫助來解決實(shí)驗(yàn)中遇到的問題,同時(shí)運(yùn)用理論的知識(shí)來分析問題和解決問題,記錄下實(shí)驗(yàn)過程和結(jié)果。上機(jī)結(jié)束后寫出實(shí)驗(yàn)報(bào)告,并對實(shí)驗(yàn)過程進(jìn)行分析和總結(jié)。
二、實(shí)驗(yàn)內(nèi)容與步驟
1、在SQL SERVER 2005上附加數(shù)據(jù)庫jxgl和ReadBook。
2、在jxgl中完成下列查詢
(1)查詢選修課程學(xué)生的學(xué)號(hào)、姓名、所選課程號(hào)、課程名稱以及所取得的成績(2)查詢每一門課程及其先修課程,查詢結(jié)果中顯示課程號(hào)、課程名和先修課程名(3)查詢和“劉濤”在一個(gè)班級(jí)的學(xué)生的信息 思考:該查詢可用幾種方法實(shí)現(xiàn)?
(4)查詢選修了‘計(jì)算機(jī)基礎(chǔ)’課的學(xué)生的學(xué)號(hào)、姓名(分別用連接查詢和嵌套查詢的方法實(shí)現(xiàn))
(5)查詢沒有選修課程的學(xué)生的信息
(6)查詢其他班中比“03計(jì)算應(yīng)用1”所有學(xué)生入學(xué)成績高的學(xué)生的姓名和入學(xué)成績(用兩種方法實(shí)現(xiàn))
(7)查詢每個(gè)學(xué)生超過該門課程平均成績的課程號(hào)
1(8)查詢至少選修了“0311102”學(xué)生所選全部課程的學(xué)生的學(xué)號(hào)(9)查詢既選修了“計(jì)算機(jī)基礎(chǔ)”又選修了“C語言基礎(chǔ)”的學(xué)生的學(xué)號(hào)(10)同時(shí)顯示students中學(xué)生以及teachers中教師的姓名、性別
3、在jxgl中完成下列數(shù)據(jù)更新
(1)向course表添加一個(gè)新的元組。
(2)將“0301102”學(xué)生所選的“0000002”課程的成績改為100分,績點(diǎn)改為2(3)刪除(1)中在course表中添加的記錄
(4)統(tǒng)計(jì)每門課程的平均成績并將統(tǒng)計(jì)結(jié)果存入到j(luò)xgl數(shù)據(jù)庫中
思考:如何將students表中班級(jí)名 “03計(jì)算應(yīng)用1”改為“03計(jì)算機(jī)應(yīng)用1”(可調(diào)用函數(shù)完成)
4、查詢教師的編號(hào)、姓名、上課的課程號(hào)、課程名稱及班級(jí)。將該查詢定義為一個(gè)視圖。
5、在第4題定義的視圖中完成下列查詢
(1)查詢“姚明”所上課程和班級(jí)。(2)統(tǒng)計(jì)每一位教師上課的數(shù)量
6、利用數(shù)據(jù)庫ReadBook完成下列查詢及視圖設(shè)計(jì)。(在SQL SERVER2005上附加數(shù)據(jù)庫ReadBook)
(1)設(shè)計(jì)一個(gè)查詢,要求用連接和嵌套兩種方式完成。(2)設(shè)計(jì)一個(gè)查詢,要求用外連接的方式完成。
(3)設(shè)計(jì)一個(gè)查詢,要求用帶exists或not exists相關(guān)子查詢完成(4)設(shè)計(jì)一個(gè)集合查詢
(5)設(shè)計(jì)一個(gè)帶復(fù)合條件連接的查詢
(6)設(shè)計(jì)一個(gè)視圖,并在該視圖中完成添加、修改、刪除數(shù)據(jù)的操作。
(7)設(shè)計(jì)一個(gè)視圖,并在該視圖完成兩個(gè)統(tǒng)計(jì):a.每位讀者以及他的借書數(shù)量,按借書數(shù)量作降序排列 b.每本書以及被借出的次數(shù),按借出次數(shù)作降序排列。
注意在實(shí)驗(yàn)報(bào)告中說明查詢的目的和對應(yīng)的語句。
三、實(shí)驗(yàn)過程及數(shù)據(jù)記錄
1、在SQL SERVER 2005上附加數(shù)據(jù)庫jxgl和ReadBook。
2、在jxgl中完成下列查詢
(1)查詢選修課程學(xué)生的學(xué)號(hào)、姓名、所選課程號(hào)、課程名稱以及所取得的成績
select Students.sno,sname,SC.cno,cname,grade from Students,SC,Course where Students.sno=SC.sno and SC.cno=Course.cno
(2)查詢每一門課程及其先修課程,查詢結(jié)果中顯示課程號(hào)、課程名和先修課程名 select cno,cname from
Course
(3)查詢和“劉濤”在一個(gè)班級(jí)的學(xué)生的信息 select * from
students where class=(select class from
students where sname='劉濤')
思考:該查詢可用幾種方法實(shí)現(xiàn)?
(4)查詢選修了‘計(jì)算機(jī)基礎(chǔ)’課的學(xué)生的學(xué)號(hào)、姓名(分別用連接查詢和嵌套查詢的方法實(shí)現(xiàn))連接查詢:
select Students.sno,sname from students,SC,Course where cname='計(jì)算機(jī)基礎(chǔ)'and Students.sno=SC.sno and SC.cno=Course.cno 嵌套查詢:
select s1.sno,sname from
students s1,SC s2,Course s3 where cname='計(jì)算機(jī)基礎(chǔ)'and s1.sno=s2.sno and s2.cno=s3.cno 執(zhí)行結(jié)果同上
(5)查詢沒有選修課程的學(xué)生的信息
select * from
Students where sno not in(select sno from sc)
(5)查詢其他班中比“03計(jì)算應(yīng)用1”所有學(xué)生入學(xué)成績高的學(xué)生的姓名和入學(xué)成績(用兩種方法實(shí)現(xiàn))
1:select sname,mgrade from students where
mgrade>(select max(mgrade)
from students where class='03計(jì)算應(yīng)用')
2:select sname,mgrade from students where
mgrade>all(select mgrade from students where class='03計(jì)算應(yīng)用1')
(6)查詢每個(gè)學(xué)生超過該門課程平均成績的課程號(hào)
select
cno from sc sc1 ,students where
grade>(select avg(grade)from sc sc2
where sc2.cno=sc1.cno)
(9)查詢既選修了“計(jì)算機(jī)基礎(chǔ)”又選修了“C語言基礎(chǔ)”的學(xué)生的學(xué)號(hào) where sc2.cno=sc1.cno)
select
s1.sno from
course c1,course c2,sc sc1,sc sc2,students s1,students s2 where
c1.cname='計(jì)算機(jī)基礎(chǔ)'
and
c2.cname='C語言基礎(chǔ)' and c1.cno=sc1.cno
and
sc1.sno=s1.sno and c2.cno=sc2.cno and
sc2.sno=s2.sno and
s1.sno=s2.sno(10)同時(shí)顯示students中學(xué)生以及teachers中教師的姓名、性別 因?yàn)榻處煵]有標(biāo)明性別,所以不顯示
select sname,ssex from students select tname from teachers
3、在jxgl中完成下列數(shù)據(jù)更新
(1)向course表添加一個(gè)新的元組。增加的元組為學(xué)習(xí)的學(xué)期cterm: use jxgl_1 alter table course add cterm char(1)
(2)將“0301102”學(xué)生所選的“0000002”課程的成績改為100分,績點(diǎn)改為2 update sc set grade='100',point='2' where sno='0301102'
and cno='0000002'(3)刪除(1)中在course表中添加的記錄 use jxgl_1 alter table course drop column
cterm(4)統(tǒng)計(jì)每門課程的平均成績并將統(tǒng)計(jì)結(jié)果存入到j(luò)xgl數(shù)據(jù)庫中
select cno,avg(grade)as avg_grade from SC group by cno
思考:如何將students表中班級(jí)名 “03計(jì)算應(yīng)用1”改為“03計(jì)算機(jī)應(yīng)用1”(可調(diào)用函數(shù)完成)update
students set class='03計(jì)算機(jī)應(yīng)用' where class='03計(jì)算應(yīng)用'
4、查詢教師的編號(hào)、姓名、上課的課程號(hào)、課程名稱及班級(jí)。將該查詢定義為一個(gè)視圖。
create
view teacher_information(tno,tname,cno,cname,class)as select teachers.tno,tname,TC.cno,cname,class from Course,TC,Teachers where Course.cno=TC.cno and TC.tno=Teachers.tno
5、在第4題定義的視圖中完成下列查詢
(1)查詢“姚明”所上課程和班級(jí)。select cname,class from teacher_information where
tname='姚明'
(2)統(tǒng)計(jì)每一位教師上課的數(shù)量 select tname,count(cno)the_all from teachers_view group by tno,tname
6、利用數(shù)據(jù)庫ReadBook完成下列查詢及視圖設(shè)計(jì)。(在SQL SERVER2005上附加數(shù)據(jù)庫ReadBook)
(1)設(shè)計(jì)一個(gè)查詢,要求用連接和嵌套兩種方式完成。
連接:
select
rname,bookname from
books,L_R,readers where books.bookid=L_R.bookid and
L_R.rno=readers.rno 嵌套:
select rname,bookname from books b1,L_R lr1 ,readers r1 where b1.bookid=lr1.bookid and
lr1.rno=r1.rno(2)設(shè)計(jì)一個(gè)查詢,要求用外連接的方式完成。select classid,rno from books right outer join L_R on
books.bookid=L_R.bookid
(3)設(shè)計(jì)一個(gè)查詢,要求用帶exists或not exists相關(guān)子查詢完成 select distinct bookname from books where exists(select bookid from
L_R where
books.bookid=L_R.bookid and rno='04201')(4)設(shè)計(jì)一個(gè)集合查詢
select * from readers where rsex='男' union
select * from readers where spet='網(wǎng)絡(luò)'(5)設(shè)計(jì)一個(gè)帶復(fù)合條件連接的查詢
select rname,bookname from books,L_R,readers where books.bookid=L_R.bookid and L_R.rno=readers.rno(6)設(shè)計(jì)一個(gè)視圖,并在該視圖中完成添加、修改、刪除數(shù)據(jù)的操作。create
view books_information(bookid,classid,bookname)as select bookid,classid,bookname from books
select * from books_information
insert into books_information(bookid,classid,bookname)values('sn911','yy','計(jì)算機(jī)維修')
update books_information set classid='yy' where bookid='sn9001'
delete from
books_information where classid='sn9007'
(7)設(shè)計(jì)一個(gè)視圖,并在該視圖完成兩個(gè)統(tǒng)計(jì):a.每位讀者以及他的借書數(shù)量,按借書數(shù)量作降序排列 b.每本書以及被借出的次數(shù),按借出次數(shù)作降序排列。create view lr(rno,rname,bookid)6 as select readers.rno,rname,bookid from readers,L_R where readers.rno=L_R.rno
select rno,rname,count(bookid)as 借書數(shù)量 from lr group by rno,rname order by 借書數(shù)量desc
select bookid,count(bookid)as 借書次數(shù) from lr group by bookid order by 借書次數(shù)desc drop view lr
注:圖很多,不一一附上
四、實(shí)驗(yàn)結(jié)果分析
這次實(shí)驗(yàn)的內(nèi)容是熟悉連接查詢和嵌套查詢的語句格式、執(zhí)行過程,并掌握它們的使用方法;理解數(shù)據(jù)更新語言INSERT、UPDATE、DELETE語句的格式和作用,掌握它們的使用方法和應(yīng)用范圍;理解視圖的概念,掌握其定義方法和應(yīng)用方法。
按照課本的指導(dǎo),導(dǎo)入數(shù)據(jù)庫,才可以進(jìn)行相關(guān)查詢。編寫程序時(shí)會(huì)出現(xiàn)很多錯(cuò)誤,很多分析時(shí)還正確,卻不能執(zhí)行,自己不斷獨(dú)立糾錯(cuò)改正,才可以實(shí)現(xiàn)查詢結(jié)果。
第五篇:SQL 結(jié)構(gòu)化查詢語言速學(xué)寶典
第二章
create database db_sqlserver2--創(chuàng)建db_sqlserver2數(shù)據(jù)庫on
(name= db_sqlserver2_data,--文件的邏輯名稱
filename='e:mydatadb_sqlserver2_data.mdf',--數(shù)據(jù)庫文件要保存路徑及文件名
size=4,--文件的大小
maxsize=10,--文件可增大到的最大大小filegrowth=10%--文件的自動(dòng)增量)
log on
(name= db_sqlserver2_log,filename='e:mydatadb_sqlserver12_log.ldf',size=1,maxsize=6,filegrowth=1)
create database db_sqlserver3
on
(name=db_sqlserver3_data,--第一個(gè)數(shù)據(jù)文件的邏輯名稱filename='e:mydatadb_sqlserver31_data.mdf',size=4,maxsize=10,filegrowth=10%),(name=Mydatabase22_data,--第二個(gè)數(shù)據(jù)文件的邏輯名稱filename='e:mydatadb_sqlserver32_data.mdf',size=3,maxsize=10,filegrowth=1)
log on
(name=Mydatabase21_log,--第一個(gè)日志文件的邏輯名稱filename='e:mydatadb_sqlserver31_log.ldf',size=1,maxsize=6,filegrowth=1),(name=Mydatabase22_log,--第二個(gè)日志文件的邏輯名稱filename='e:mydatadb_sqlserver32_log.ldf',size=1,maxsize=6,filegrowth=10%)