第一篇:網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿(表數(shù)據(jù)操作)
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
一、插入數(shù)據(jù)
P131 1.INSERT … VALUES …
(1)VALUES所提供的值的個(gè)數(shù)、順序、數(shù)據(jù)類(lèi)型,必須與字段名列表中的相一致。(2)關(guān)于NULL 和 DEFAULT
P133 CREATE TABLE NULLDEFAULT(ID SMALLINT IDENTITY(1,2), XM CHAR(8)NOT NULL, XB CHAR(2)DEFAULT '男', NL TINYINT, MZ CHAR(10)NOT NULL DEFAULT '漢族')INSERT NULLDEFAULT values('張三','女',30,'回族')
①如果省略了列名表和值表中的一列,那么當(dāng)該列有默認(rèn)值存在時(shí),將使用默認(rèn)值;如果默認(rèn)值不存在,SQL會(huì)嘗試使用NULL值。
INSERT NULLDEFAULT(XM,MZ)values('張三','回族')INSERT NULLDEFAULT(XM)values('張三')
如果列已聲明了NOT NULL,嘗試的NULL值會(huì)失敗。
INSERT NULLDEFAULT(XM,MZ)values(NULL,'回族')INSERT NULLDEFAULT(MZ)values('回族')②如果在值表中明確指定了NULL,那么即使該列默認(rèn)值存在,也仍會(huì)插入NULL值(假設(shè)該列允許NULL)。
③當(dāng)在一個(gè)允許NULL且沒(méi)有聲明默認(rèn)值的列中使用DEFAULT,會(huì)在該列插入NULL值。
INSERT NULLDEFAULT values('張三',NULL,default,'蒙古族')④如果在一個(gè)聲明NOT NULL且沒(méi)有聲明默認(rèn)值的列中指定NULL或DEFAULT、或者省略了該值,會(huì)導(dǎo)致錯(cuò)誤。
INSERT NULLDEFAULT values(NULL,NULL,default,'蒙古族')INSERT NULLDEFAULT values(DEFAULT,NULL,default,'蒙古族')INSERT NULLDEFAULT(MZ)values('回族')⑤可以把NULL插入到允許NULL且沒(méi)有默認(rèn)值的列中。
INSERT NULLDEFAULT(XM,NL)values('張三',NULL)⑥具有標(biāo)識(shí)屬性的列中不能使用關(guān)鍵字DEFAULT,不能在列名表中和值表中列出具有標(biāo)識(shí)屬性的列和值。
INSERT NULLDEFAULT values(DEFAULT,DEFAULT,NULL,default,'蒙古族')2.INSERT … SELECT … 3.SELECT … INTO …
二、更新數(shù)據(jù)
P137
三、刪除數(shù)據(jù)
P141 1.DELETE 2.TRUNCATE TABLE
四、OUTPUT子句
P307 內(nèi)存邏輯表INSERTED和DELETED。
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
INSERT NULLDEFAULT(XM)OUTPUT INSERTED.ID,INSERTED.XM,INSERTED.XB,INSERTED.NL,INSERTED.MZ values('趙一')INSERT NULLDEFAULT OUTPUT INSERTED.ID values('錢(qián)二','女',30,'回族')INSERT NULLDEFAULT OUTPUT INSERTED.ID,INSERTED.XM,INSERTED.XB,INSERTED.NL values('孫三',NULL,default,'蒙古族')UPDATE NULLDEFAULT SET MZ='維吾爾族' OUTPUT DELETED.ID,DELETED.XM,DELETED.XB,DELETED.MZ, INSERTED.ID,INSERTED.XM,INSERTED.XB,INSERTED.NL,INSERTED.MZ WHERE XM='趙一'
如果使用INTO子句,INTO子句中的表必須已存在。
CREATE TABLE ABC(ID SMALLINT, XM CHAR(8)NOT NULL, XB CHAR(2)DEFAULT '男', NL TINYINT, MZ CHAR(10)NOT NULL DEFAULT '漢族')
UPDATE NULLDEFAULT SET MZ='維吾爾族' OUTPUT DELETED.ID,DELETED.XM,DELETED.XB,DELETED.NL,DELETED.MZ INTO ABC WHERE XM='張三' OR XM='李四'
第二篇:數(shù)據(jù)庫(kù)--數(shù)據(jù)查詢(xún)和操作
《數(shù)據(jù)查詢(xún)與操作》實(shí)驗(yàn)
一、實(shí)驗(yàn)?zāi)康呐c要求
1、理解簡(jiǎn)單查詢(xún)和復(fù)合查詢(xún)的意義。
2、掌握SELECT語(yǔ)句和各子句的使用。
3、掌握多表查詢(xún)和子查詢(xún)的使用。
4、掌握INSERT、UPDATE和DELETE語(yǔ)句的使用。
二、實(shí)驗(yàn)平臺(tái)
1、操作系統(tǒng):Windows XP或Windows 2003
2、數(shù)據(jù)庫(kù)管理系統(tǒng):SQL Server 2005
三、實(shí)驗(yàn)內(nèi)容
1.在“人事管理系統(tǒng)”中,新增一個(gè)員工信息(員工編號(hào)?100508?、員工姓名?小龍女?、所在部門(mén)編號(hào)?10001?、籍貫?河南?)。
insert into 員工信息(員工編號(hào),員工姓名,所在部門(mén)編號(hào),籍貫)values('100508','小龍女','10001','河南')
2.將“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)的“員工信息”表中籍貫為“河南”并且所在部門(mén)編號(hào)為”10001”數(shù)據(jù)插入到“新員工信息”表中。
insert into 新員工信息(員工編號(hào),員工姓名,所在部門(mén)編號(hào))select 員工編號(hào),員工姓名,所在部門(mén)編號(hào)from 員工信息 where 籍貫='河南'and 所在部門(mén)編號(hào)='10001'
3.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)“部門(mén)信息”表中,將部門(mén)的員工人數(shù)設(shè)置為10。
4.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)“員工信息”表中,將文化程度為“大專(zhuān)”,并且在“2005-05-01”到“2007-05-01”之間入職的所有員工調(diào)動(dòng)到編號(hào)為“10006”的部門(mén)去。
5.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)中對(duì)部門(mén)進(jìn)行了重組和調(diào)整,原來(lái)編號(hào)為10006的部門(mén)名稱(chēng)變?yōu)椤笆袌?chǎng)開(kāi)發(fā)部”,人數(shù)也調(diào)整為20人。
6.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)中,編號(hào)為“100503”的新員工升級(jí)為正式員工,需要在“新員工信息”表中刪除他的記錄。
7.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)中,刪除“新員工信息”表中所有在編號(hào)為“10005”部門(mén)工作的員工記錄。
delete 20 percent from 員工信息
8.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)中,需要?jiǎng)h除20%的員工信息。
9.在“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)“班級(jí)信息”表中,查詢(xún)分配了班主任的班級(jí)信息。
10.在“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)“學(xué)生信息”表中,根據(jù)籍貫查詢(xún)各省學(xué)生人數(shù),并顯示省份和人數(shù)信息。
11.在“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)中,根據(jù)相關(guān)表的內(nèi)容,查詢(xún)平均成績(jī)大于70的課程信息。
select *
from 課程信息 where 課程編號(hào)In(select 課程編號(hào)
from 成績(jī)表
group by 課程編號(hào) having avg(成績(jī))>70)
12.在commidtysell數(shù)據(jù)庫(kù)中,根據(jù)相關(guān)表的內(nèi)容,查詢(xún)銷(xiāo)售同類(lèi)產(chǎn)品的商場(chǎng)編號(hào)(去除相同的行)。
select distinct e1.empID as 商場(chǎng)編號(hào) from EmporiumSell e1,EmporiumSell e2 where e1.ProdID=e2.ProdID
13.在commidtysell數(shù)據(jù)庫(kù)中,根據(jù)相關(guān)表的內(nèi)容,查詢(xún)買(mǎi)出產(chǎn)品數(shù)量最多的商場(chǎng)編號(hào)和銷(xiāo)售總量信息。
select e1.EmpID,sum(e1.SellAmout)as 銷(xiāo)售總量 from EmporiumSell e1 group by e1.EmpID having sum(e1.SellAmout)>=all(select sum(SellAmout)from EmporiumSell group by EmpID
14.在TeachingManageSYS數(shù)據(jù)庫(kù)中,根據(jù)相關(guān)表的內(nèi)容,統(tǒng)計(jì)年齡大于平均年齡的教師的Tname、Tsex、Tage、Trank,所教授課程的Cname,Credit,CouresHour。
select T.Tname,T.Tsex,T.Tage,T.Trank,Cname,Credit,CouresHour from Teach,CourseInfo,TeacherInfo T where T.Tno=Teach.Tno and Teach.Cno=CourseInfo.Cno and Tage>(select avg(Tage)from TeacherInfo)
15.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)“員工信息”表中,查詢(xún)工齡大于4年的員工信息
16.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)“員工信息”表中,把政治面貌是“黨員”的職工信息保存到表名為“黨員信息”新表中。
將學(xué)生“陳霞”所在班級(jí)的其他學(xué)生并且成績(jī)不合格的學(xué)生成績(jī)刪除
select 成績(jī)表.學(xué)號(hào),成績(jī)表.成績(jī),學(xué)生信息.姓名,學(xué)生信息.班級(jí)編號(hào) from 成績(jī)表,學(xué)生信息
where 成績(jī)表.成績(jī)<60 and 學(xué)生信息.班級(jí)編號(hào)in(select 班級(jí)編號(hào) from 學(xué)生信息 where 姓名='陳霞')
17.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)中,使用TRUNCATE TABLE語(yǔ)句刪除“黨員信息”表中的所有記錄。
18.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)“員工信息”表中,把員工“李朋”所任職位更改為“副經(jīng)理”。
19.查詢(xún)“學(xué)生信息”表中姓名包含“紅”字的學(xué)生的學(xué)號(hào)、姓名、性別、民族、籍貫和班級(jí)編號(hào)信息。
20.查詢(xún)“學(xué)生信息”表中姓氏為“徐”的學(xué)生的學(xué)號(hào)、姓名、性別、民族、籍貫和班級(jí)編號(hào)信息。
21.從“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)中,查詢(xún)?nèi)藬?shù)超過(guò)45人所在班級(jí)中的學(xué)生的學(xué)號(hào)、姓名和班級(jí)名稱(chēng)。(使用子查詢(xún))
22.查詢(xún)“學(xué)生信息”表中姓名不包含“紅”字的學(xué)生的學(xué)號(hào)、姓名、性別、民族、籍貫和班級(jí)編號(hào)信息。
23.在“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)中,查詢(xún)還未分配班主任的班級(jí)信息。
24.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)“員工信息”表中,將文化程度為“大專(zhuān)”,并且在“2005-05-01”到“2007-05-01”之間入職的所有員工調(diào)動(dòng)到編號(hào)為“10006”的部門(mén)去。
25.查詢(xún)數(shù)據(jù)表ProductInfo中前5條記錄。
26.從ProductInfo表中,查詢(xún)產(chǎn)品名稱(chēng)為“丙電視機(jī)”的產(chǎn)品信息。
27.從ProductInfo表中,查詢(xún)FactAddr為“四川綿陽(yáng)”或“廣東東莞”,同時(shí)StockAmount大于110的產(chǎn)品的ProdID、StockAmount和FactAddr信息,并且給列名分別取別名為產(chǎn)品編號(hào)、庫(kù)存數(shù)量和廠商地址。
28.從ProductInfo表中,查詢(xún)StockAmount在250和400(包含200和400)之間的產(chǎn)品的ProdName和StockAmount。
29.創(chuàng)建一個(gè)學(xué)生補(bǔ)考表,表中數(shù)據(jù)來(lái)自成績(jī)表,條件為成績(jī)小于60分,要求補(bǔ)考表中僅顯示學(xué)生的學(xué)號(hào)和補(bǔ)考課程的編號(hào)。編寫(xiě)SELECT INTO語(yǔ)句完成這操作。
30.在“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)中,查詢(xún)出所有非計(jì)算機(jī)系的學(xué)生信息,并顯示出這些學(xué)生的考試成績(jī),再按成績(jī)進(jìn)行降序排列顯示,要求返回學(xué)生的學(xué)號(hào)、姓名、班級(jí)編號(hào)、課程編號(hào)和成績(jī)信息。(多表查詢(xún))
31.在“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)中,查詢(xún)學(xué)生姓名為“朱文娟”所在班級(jí)的學(xué)生信息,要求返回學(xué)生的學(xué)號(hào)、姓名、性別、班級(jí)編號(hào)、班級(jí)名稱(chēng)和年級(jí)信息。
select 學(xué)生信息.學(xué)號(hào),學(xué)生信息.姓名,學(xué)生信息.性別,班級(jí)信息.班級(jí)編號(hào),班級(jí)信息.班級(jí)名稱(chēng),班級(jí)信息.年級(jí) from 學(xué)生信息,班級(jí)信息
where 學(xué)生信息.班級(jí)編號(hào)=班級(jí)信息.班級(jí)編號(hào)
and 學(xué)生信息.姓名='朱文娟'
32.查詢(xún)空調(diào)產(chǎn)品在ProductInfo的相關(guān)信息,要求該產(chǎn)品在EmporiumSell中的銷(xiāo)售總量超過(guò)10臺(tái)。
33.在“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)中,查詢(xún)出任意一個(gè)大于平均成績(jī)的學(xué)生的學(xué)號(hào)、姓名、班級(jí)編號(hào)、課程編號(hào)和成績(jī)信息。
select 學(xué)生信息.學(xué)號(hào),學(xué)生信息.姓名,學(xué)生信息.班級(jí)編號(hào),成績(jī)表.課程編號(hào),成績(jī)表.成績(jī) from 學(xué)生信息,成績(jī)表
where 學(xué)生信息.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)and 成績(jī)>any(select avg(成績(jī))from 成績(jī)表
group by 課程編號(hào))
34.在“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)中,對(duì)于成績(jī)大于等于90的數(shù)據(jù)行進(jìn)行查詢(xún),并返回考試成績(jī)的學(xué)生的學(xué)號(hào)、姓名、性別、籍貫和所在班級(jí)名稱(chēng)及年級(jí)信息。
select 學(xué)生信息.學(xué)號(hào),姓名,性別,籍貫,班級(jí)名稱(chēng),班級(jí)信息.年級(jí) from 學(xué)生信息,成績(jī)表,班級(jí)信息
where 學(xué)生信息.班級(jí)編號(hào)=班級(jí)信息.班級(jí)編號(hào)and 學(xué)生信息.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)and 成績(jī)>=90
35.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)的“員工信息”表中,查詢(xún)“所任職位”為“經(jīng)理”的員工編號(hào)和員工姓名信息,并為其增加新列“所在位置”,列的內(nèi)容為“員工信息表”;從“部門(mén)信息”表中查詢(xún)所有的部門(mén)編號(hào)和部門(mén)名稱(chēng)信息,并定義新增列的內(nèi)容為“部門(mén)信息表”;最后將兩個(gè)查詢(xún)結(jié)果聯(lián)合在一起。
select 員工編號(hào),員工姓名 from 員工信息
where 所任職位='經(jīng)理' alter table 員工信息 add 所在位置 nvarchar(20)
select 部門(mén)編號(hào),部門(mén)名稱(chēng) from 部門(mén)信息
alter table 部門(mén)信息
add 部門(mén)信息表 nvarchar(20)
select 員工編號(hào),員工姓名
from 員工信息 FULL join 部門(mén)信息
on 員工信息.所在部門(mén)編號(hào)=部門(mén)信息.部門(mén)編號(hào)
36.在“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)的“學(xué)生信息”表和“成績(jī)”表中,查詢(xún)出所有考試及格的學(xué)生的成績(jī)信息,包括學(xué)生的學(xué)號(hào)、姓名、性別、年級(jí)、班級(jí)編號(hào)及考試成績(jī),并且按照成績(jī)進(jìn)行降序排列。
select 學(xué)生信息.學(xué)號(hào),姓名,性別,年級(jí),班級(jí)編號(hào),成績(jī) from 學(xué)生信息,成績(jī)表 group by 學(xué)生信息.學(xué)號(hào) having 成績(jī)>60 order by 成績(jī)desc
37.從“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)中的“學(xué)生信息”和“班級(jí)信息”兩表中,查詢(xún)學(xué)生和對(duì)應(yīng)的班級(jí)信息,要求返回的結(jié)果中包含學(xué)生的學(xué)號(hào)、姓名、性別和班級(jí)名稱(chēng)及年級(jí)。
select 學(xué)號(hào),姓名,性別,班級(jí)信息.年級(jí),班級(jí)名稱(chēng) from 學(xué)生信息,班級(jí)信息
where 學(xué)生信息.班級(jí)編號(hào)=班級(jí)信息.班級(jí)編號(hào)
38.在“教務(wù)管理系統(tǒng)”數(shù)據(jù)庫(kù)的“學(xué)生信息”表和“成績(jī)”表中,查詢(xún)所有學(xué)生的考試成績(jī)信息,包括學(xué)生學(xué)號(hào)、姓名、課程編號(hào)和成績(jī)信息。(左、右、全外連接)
select 學(xué)生信息.學(xué)號(hào),姓名,課程編號(hào),成績(jī) from 學(xué)生信息left join 成績(jī)表 on 學(xué)生信息.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)
select 學(xué)生信息.學(xué)號(hào),姓名,課程編號(hào),成績(jī) from 學(xué)生信息right join 成績(jī)表 on 學(xué)生信息.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)
select 學(xué)生信息.學(xué)號(hào),姓名,課程編號(hào),成績(jī) from 學(xué)生信息full join 成績(jī)表 on 學(xué)生信息.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)
39.在“人事管理系統(tǒng)”數(shù)據(jù)庫(kù)中,對(duì)“員工信息”表和“部門(mén)信息”表進(jìn)行交叉查詢(xún),要求查詢(xún)返回所任職位為“職員”的員工編號(hào)、員工姓名、所任職位、文化程度和部門(mén)名稱(chēng),并按照員工編號(hào)降序排序列。
select 員工編號(hào),員工姓名,所任職位,文化程度,部門(mén)名稱(chēng) from 員工信息,部門(mén)信息
where 員工信息.所在部門(mén)編號(hào)=部門(mén)信息.部門(mén)編號(hào)
四、實(shí)驗(yàn)過(guò)程
寫(xiě)出相應(yīng)的T-SQL語(yǔ)句,并寫(xiě)出T-SQL語(yǔ)句執(zhí)行結(jié)果的前兩行記錄。
五、實(shí)驗(yàn)總結(jié)
簡(jiǎn)述實(shí)驗(yàn)完成情況、實(shí)驗(yàn)過(guò)程中各自碰到的問(wèn)題、各自對(duì)實(shí)驗(yàn)?zāi)康恼莆涨闆r。
第三篇:網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿(查詢(xún))
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
一、簡(jiǎn)單的SELECT
P95 1.SELECT … FROM …(1)DISTINCT(2)TOP n [PERCENT](3)字段別名
有三種書(shū)寫(xiě)格式。
2.WHERE子句(SELECT … FROM … WHERE …)
P101(1)比較運(yùn)算符(2)邏輯運(yùn)算符
(3)范圍運(yùn)算符BETWEEN(4)列表(包含)運(yùn)算符 IN(5)字符匹配運(yùn)算符LIKE及通配符(6)空值NULL 3.ORDER BY子句(SELECT … FROM … WHERE … ORDER BY …)
P107 ORDER BY子句必須放在SELECT語(yǔ)句的最后。
4.GROUP BY子句(SELECT … FROM … WHERE …GROUP BY … ORDER BY …)P109(1)GROUP BY子句中的列名必須是原表中的列名,不能是別名。(2)當(dāng)SELECT子句中有聚合函數(shù)時(shí),GROUP BY子句實(shí)現(xiàn)分組統(tǒng)計(jì)。
(3)當(dāng)SELECT子句中同時(shí)有字段名列和聚合函數(shù)列時(shí),必須使用GROUP BY子句。例如
select 班級(jí),SUM(已修學(xué)分)from 學(xué)生GROUP BY 班級(jí)
(4)在SELECT子句中出現(xiàn)的列名必須出現(xiàn)在GROUP BY子句中、或聚合函數(shù)中。GROUP BY子句中的列名則不一定出現(xiàn)在SELECT子句中。(5)ROLLUP返回第一個(gè)分組列的統(tǒng)計(jì)行。例如:
select 班級(jí),性別,SUM(已修學(xué)分)from 學(xué)生GROUP BY 班級(jí),性別WITH ROLLUP(6)CUBE是ROLLUP的擴(kuò)展。(7)ALL短語(yǔ)
P109 select 班級(jí),性別,SUM(已修學(xué)分)from 學(xué)生
WHERE已修學(xué)分>4 GROUP BY ALL 班級(jí),性別
ALL不能與WITH同用。6.HAVING子句
(SELECT … FROM … WHERE …GROUP BY … HAVING … ORDER BY …)P111(1)HAVING應(yīng)與GROUP BY配對(duì)使用,否則沒(méi)必要使用。(2)HAVING的主要作用是第二次篩選。
(3)HAVING中可以包含聚合函數(shù)(WHERE中不可以)。
(4)HAVING中非聚合函數(shù)中的字段名,必須出現(xiàn)在GROUP BY中。(5)SELECT列表中命名的別名,不能在HAVING中使用。7.COMPUTE子句,按排序字段分組求和。
SELECT 姓名,分?jǐn)?shù)FROM 學(xué)生,成績(jī)WHERE 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào) ORDER BY 姓名COMPUTE SUM(分?jǐn)?shù))
SELECT 姓名,分?jǐn)?shù)FROM 學(xué)生,成績(jī)WHERE 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào) ORDER BY 姓名COMPUTE SUM(分?jǐn)?shù))BY 姓名
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
SELECT 姓名,分?jǐn)?shù)FROM 學(xué)生,成績(jī)WHERE 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào) ORDER BY 姓名COMPUTE SUM(分?jǐn)?shù))BY 姓名COMPUTE SUM(分?jǐn)?shù))
Compute By 必須與 Order By 子句一起使用,而且Compute By 子句中的統(tǒng)計(jì)列名列表也必須與之相同。
8.SELECT INTO,將查詢(xún)結(jié)果保存到永久表中。
P136
二、多表查詢(xún)
P112 1.內(nèi)、外連接
內(nèi)外連接中用ON<條件> 2.交叉連接
交叉連接中用WHERE<條件>,用WHERE<條件>的交叉連接等同于內(nèi)連接。3.合并兩個(gè)查詢(xún)
(1)聯(lián)合查詢(xún)
P120 SELECT 員工編號(hào),員工姓名,'員工信息表' FROM 員工信息WHERE 所任職位='經(jīng)理' UNION SELECT 部門(mén)編號(hào),部門(mén)名稱(chēng),'部門(mén)信息表' FROM 部門(mén)信息
(2)INTERSECT
P305 SELECT 學(xué)號(hào)FROM 成績(jī)表 INTERSECT SELECT 學(xué)號(hào)FROM 學(xué)生信息
(3)EXCEPT SELECT 學(xué)號(hào)FROM 學(xué)生信息 EXCEPT SELECT 學(xué)號(hào)FROM 成績(jī)表
三、子查詢(xún)
P121
第四篇:網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿(觸發(fā)器)
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
3/26/2013
觸發(fā)器
P191
一、觸發(fā)器概述
1.是一種特殊的存儲(chǔ)過(guò)程。
2.不能被顯式調(diào)用,只能由一些特定的操作(命令)引發(fā)(激活),這些命令是:INSERT、DELETE、UPDATE、CREATE、ALTER、DROP、GRANT、DENY、REVOKE等。3.每個(gè)觸發(fā)器由三部分組成
①觸發(fā)器名稱(chēng):命名規(guī)則與變量名、存儲(chǔ)過(guò)程名相同; ②激活該觸發(fā)器的操作(命令動(dòng)詞)。③一個(gè)存儲(chǔ)過(guò)程。
4.使用觸發(fā)器可強(qiáng)制實(shí)現(xiàn)數(shù)據(jù)的一致性和完整性。
二、觸發(fā)器的分類(lèi)(按引發(fā)命令分類(lèi))及其工作原理
1.DML觸發(fā)器(表級(jí))(1)觸發(fā)器必須依附于某一個(gè)表(觸發(fā)器必須被包含在某一個(gè)表中)。(2)激活該觸發(fā)器的操作:可以是INSERT、DELETE、UPDATE之一。(3)當(dāng)上述操作發(fā)生在包含觸發(fā)器的表上時(shí),觸發(fā)器中的過(guò)程被自動(dòng)執(zhí)行。(4)支持兩種類(lèi)型的觸發(fā)器: ①AFTER 可以為同一表的同一操作定義多個(gè)該類(lèi)型的觸發(fā)器,并可定義執(zhí)行順序; ②INSTEAD OF 同一表的同一操作只能定義一個(gè)該類(lèi)型的觸發(fā)器。(5)工作原理
P193 臨時(shí)邏輯表INSERTED和DELETED。2.DDL觸發(fā)器(數(shù)據(jù)庫(kù)級(jí)和服務(wù)器級(jí))(1)觸發(fā)器必須依附于某一個(gè)數(shù)據(jù)庫(kù)(觸發(fā)器必須被包含在某一個(gè)數(shù)據(jù)庫(kù)中)。
(2)激活該觸發(fā)器的操作:可以是CREATE、ALTER、DROP、GRANT、DENY、REVOKE等之一。
(3)當(dāng)上述操作發(fā)生在包含觸發(fā)器的數(shù)據(jù)庫(kù)上時(shí),觸發(fā)器中的過(guò)程被自動(dòng)執(zhí)行。(4)只有AFTER型觸發(fā)器。
三、創(chuàng)建DML觸發(fā)器
P194 用命令CREATE TRIGGER創(chuàng)建 例: 1.
CREATE TRIGGER 增加學(xué)生學(xué)分 ON 成績(jī)
//只能增加一條記錄
FOR INSERT AS DECLARE @XH CHAR(6),@KCH CHAR(8),@FS DECIMAL(4,1)SELECT @XH=學(xué)號(hào),@KCH=課程編號(hào),@FS=分?jǐn)?shù) FROM INSERTED IF @FS>=60
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
3/26/2013
UPDATE 學(xué)生 SET 已修學(xué)分
=已修學(xué)分+(SELECT 學(xué)分 FROM 課程 WHERE 課程編號(hào)=@KCH)
WHERE 學(xué)號(hào)=@XH 2.
CREATE TRIGGER 減少學(xué)生學(xué)分 ON 成績(jī) FOR DELETE AS UPDATE 學(xué)生 SET 已修學(xué)分=已修學(xué)分-(SELECT SUM(學(xué)分)FROM 課程 WHERE 課程編號(hào) IN(SELECT DISTINCT 課程編號(hào) FROM DELETED WHERE 學(xué)生.學(xué)號(hào)=DELETED.學(xué)號(hào) AND 分?jǐn)?shù)>=60))WHERE EXISTS(SELECT DISTINCT 課程編號(hào) FROM DELETED WHERE 學(xué)生.學(xué)號(hào)=DELETED.學(xué)號(hào) AND 分?jǐn)?shù)>=60)3.CREATE TRIGGER 修改學(xué)生學(xué)分 ON 成績(jī) FOR UPDATE AS UPDATE 學(xué)生 SET 已修學(xué)分=已修學(xué)分-(SELECT SUM(學(xué)分)FROM 課程 WHERE 課程編號(hào) IN(SELECT DISTINCT 課程編號(hào) FROM DELETED WHERE 學(xué)生.學(xué)號(hào)=DELETED.學(xué)號(hào) AND 分?jǐn)?shù)>=60))WHERE EXISTS(SELECT DISTINCT 課程編號(hào) FROM DELETED WHERE 學(xué)生.學(xué)號(hào)=DELETED.學(xué)號(hào) AND 分?jǐn)?shù)>=60)UPDATE 學(xué)生 SET 已修學(xué)分=已修學(xué)分+(SELECT SUM(學(xué)分)FROM 課程WHERE 課程編號(hào) IN(SELECT DISTINCT 課程編號(hào) FROM INSERTED WHERE 學(xué)生.學(xué)號(hào)=INSERTED.學(xué)號(hào) AND 分?jǐn)?shù)>=60))WHERE EXISTS(SELECT DISTINCT 課程編號(hào) FROM INSERTED WHERE 學(xué)生.學(xué)號(hào)=INSERTED.學(xué)號(hào) AND 分?jǐn)?shù)>=60)
4.“修改學(xué)生學(xué)分”也可改為:
CREATE TRIGGER 修改學(xué)生學(xué)分 ON 成績(jī) FOR UPDATE AS UPDATE 學(xué)生 SET 已修學(xué)分=(SELECT SUM(學(xué)分)FROM 課程 WHERE 課程編號(hào) IN
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
3/26/2013(SELECT 課程編號(hào) FROM 成績(jī)
WHERE 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào) AND 分?jǐn)?shù)>=60))
然后可執(zhí)行下列命令,并檢驗(yàn)執(zhí)行結(jié)果。
--INSERT INTO 成績(jī) VALUES('200202','L2020308',83)--INSERT INTO 成績(jī) VALUES('200202','L2030501',80)--INSERT INTO 成績(jī) VALUES('200202','L2030506',75)--DELETE FROM 成績(jī) WHERE 學(xué)號(hào)='200202' AND LEFT(課程編號(hào),1)='L'--UPDATE 成績(jī) SET 分?jǐn)?shù)=80 WHERE 學(xué)號(hào)='200202' AND LEFT(課程編號(hào),1)='L'
四、創(chuàng)建DDL觸發(fā)器
P198 例: 1.P199 2.CREATE TRIGGER 禁刪數(shù)據(jù)庫(kù)ON ALL SERVER FOR DROP_DATABASE AS PRINT '請(qǐng)不要?jiǎng)h除數(shù)據(jù)庫(kù)!' ROLLBACK TRANSACTION
DROP DATABASE 訂貨管理
五、嵌套觸發(fā)器和遞歸觸發(fā)器
P199, P200
六、管理觸發(fā)器
P201 1.查看 2.修改 3.禁用 4.刪除
--根據(jù)成績(jī)表計(jì)算每個(gè)學(xué)生的已修學(xué)分
update 學(xué)生set 已修學(xué)分=(select sum(學(xué)分)from 課程 where 課程編號(hào)in(select 課程編號(hào)from 成績(jī)where 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào) and 分?jǐn)?shù)>=60))
--修改插入觸發(fā)器,使得向成績(jī)表中插入多條記錄,也能成功執(zhí)行 CREATE TRIGGER 插入學(xué)生學(xué)分ON 成績(jī) FOR insert
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
3/26/2013 AS UPDATE 學(xué)生SET 已修學(xué)分=已修學(xué)分+(SELECT SUM(學(xué)分)FROM 課程 WHERE 課程編號(hào)IN(SELECT DISTINCT 課程編號(hào)FROM inserted WHERE 學(xué)生.學(xué)號(hào)=inserted.學(xué)號(hào)AND 分?jǐn)?shù)>=60))WHERE EXISTS(SELECT DISTINCT 課程編號(hào)FROM inserted WHERE 學(xué)生.學(xué)號(hào)=inserted.學(xué)號(hào)AND 分?jǐn)?shù)>=60)
select * from 成績(jī)
select 學(xué)號(hào),已修學(xué)分from 學(xué)生
INSERT INTO 成績(jī)VALUES('200202','L2020308',83)INSERT INTO 成績(jī)VALUES('200202','L2030501',80)INSERT INTO 成績(jī)VALUES('200202','L2030506',75)INSERT INTO 成績(jī)VALUES('200201','L2020308',83)INSERT INTO 成績(jī)VALUES('200201','L2030501',80)INSERT INTO 成績(jī)VALUES('200201','L2030506',75)
select * into 備份成績(jī)from 成績(jī) //備份成績(jī)表 select 學(xué)號(hào),姓名,已修學(xué)分from 學(xué)生
insert into 成績(jī) select * from 成績(jī)
INSERT INTO 成績(jī)VALUES('200212','L2030506',75)
第五篇:網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿(復(fù)制)
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
4/20/2013
一、復(fù)制的基本概念
SQL Server復(fù)制是在數(shù)據(jù)庫(kù)之間對(duì)數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象進(jìn)行復(fù)制和分發(fā)并且對(duì)于數(shù)據(jù)的修改進(jìn)行同步,以確保其一致性的一組技術(shù)。使用復(fù)制可以將數(shù)據(jù)分發(fā)到不同位置,通過(guò)局域網(wǎng)、Internet分發(fā)給多個(gè)遠(yuǎn)程服務(wù)器站點(diǎn);還可將多個(gè)用戶(hù)和站點(diǎn)的數(shù)據(jù)進(jìn)行合并。
二、復(fù)制模型
復(fù)制技術(shù)采用發(fā)布(出版)——訂閱模型分發(fā)數(shù)據(jù)。
SQL Server復(fù)制模型由下列對(duì)象組成:發(fā)布服務(wù)器,分發(fā)服務(wù)器,訂閱服務(wù)器,發(fā)布,項(xiàng)目,訂閱。還有幾個(gè)負(fù)責(zé)在發(fā)布服務(wù)器和訂閱服務(wù)器之間復(fù)制和移動(dòng)數(shù)據(jù)的復(fù)制進(jìn)程:快照代理程序,分發(fā)代理程序,日志讀取器代理程序,隊(duì)列讀取器代理程序,合并代理程序。1.服務(wù)器角色
參與復(fù)制的服務(wù)器根據(jù)任務(wù)不同可劃分為以下角色: ①發(fā)布服務(wù)器:數(shù)據(jù)源所在的服務(wù)器。
②分發(fā)服務(wù)器:將出版物從發(fā)布服務(wù)器移動(dòng)到訂閱服務(wù)器。③訂閱服務(wù)器 2.項(xiàng)目
3.發(fā)布(出版物)4.訂閱 5.復(fù)制的類(lèi)型 ①快照復(fù)制 ②事務(wù)復(fù)制 ③合并復(fù)制 6.復(fù)制代理程序
①快照代理程序:與所有復(fù)制類(lèi)型一起使用。
②分發(fā)代理程序:與快照復(fù)制和事務(wù)復(fù)制一起使用。③合并代理程序:與合并復(fù)制一起使用。
④日志讀取器代理程序:與事務(wù)復(fù)制一起使用。
⑤隊(duì)列讀取器代理程序:與快照復(fù)制或事務(wù)復(fù)制一起使用。
三、服務(wù)器的連接方式
1.發(fā)布服務(wù)器與分發(fā)服務(wù)器為同一物理服務(wù)器 2.發(fā)布服務(wù)器與分發(fā)服務(wù)器為不同物理服務(wù)器 3.發(fā)布者與再次發(fā)布者連接方式
4.多發(fā)布服務(wù)器單訂閱服務(wù)器連接方式
四、配置復(fù)制
復(fù)制一般包括以下幾個(gè)階段:配置發(fā)布和分發(fā),生成和應(yīng)用初始快照,修改復(fù)制數(shù)據(jù),同步和傳播數(shù)據(jù)。
復(fù)制過(guò)程中各代理程序的調(diào)度由SQL Server Agent服務(wù)管理,應(yīng)配置SQL Server Agent服務(wù)能夠在系統(tǒng)啟動(dòng)的時(shí)候自動(dòng)啟動(dòng),并且在意外停止時(shí)能夠自動(dòng)重新啟動(dòng),由于復(fù)制操作跨越多個(gè)服務(wù)器傳輸數(shù)據(jù),所以SQL Server Agent服務(wù)的啟動(dòng)帳號(hào)應(yīng)使用域用戶(hù)帳號(hào)。1.配置分發(fā)服務(wù)器
網(wǎng)絡(luò)數(shù)據(jù)庫(kù)講稿
4/20/2013 分發(fā)服務(wù)器是快照復(fù)制和事務(wù)復(fù)制的首要組件。在企業(yè)管理器中運(yùn)行向?qū)?,右擊【?fù)制】,單擊【配置發(fā)布、訂閱服務(wù)器和分發(fā)】啟動(dòng)【配置發(fā)布和分發(fā)向?qū)А?。然后按提示進(jìn)行。
配置完成后,系統(tǒng)在分發(fā)服務(wù)器上創(chuàng)建distribution系統(tǒng)數(shù)據(jù)庫(kù)、復(fù)制文件夾、復(fù)制監(jiān)視器。
2.配置發(fā)布服務(wù)器和創(chuàng)建出版物
出版物是準(zhǔn)備發(fā)布的表、表中數(shù)據(jù)的子集或其它數(shù)據(jù)庫(kù)對(duì)象的集合。出版物是訂閱的單元。
在企業(yè)管理器中運(yùn)行向?qū)?,右擊【?fù)制】,單擊【新建/發(fā)布】啟動(dòng)【創(chuàng)建發(fā)布向?qū)А浚缓蟀刺崾具M(jìn)行。
在“指定項(xiàng)目”步驟,單擊“項(xiàng)目默認(rèn)值”或“對(duì)象”右端的省略號(hào)按鈕,可設(shè)置快照屬性。
可循環(huán)創(chuàng)建多個(gè)發(fā)布。
可查閱和修改已建發(fā)布的屬性。
3.訂閱
訂閱是對(duì)發(fā)布到指定訂閱服務(wù)器的數(shù)據(jù)或數(shù)據(jù)庫(kù)對(duì)象的請(qǐng)求。一個(gè)訂閱服務(wù)器可以向不同發(fā)布請(qǐng)求多個(gè)訂閱。
訂閱可在發(fā)布服務(wù)器上創(chuàng)建(強(qiáng)制訂閱)或在訂閱服務(wù)器上創(chuàng)建(請(qǐng)求訂閱)。(1)強(qiáng)制訂閱
在企業(yè)管理器中:工具/向?qū)?,展開(kāi)【復(fù)制】,啟動(dòng)【創(chuàng)建強(qiáng)制訂閱向?qū)А?,然后按提示進(jìn)行。
(2)請(qǐng)求訂閱 在企業(yè)管理器中:工具/向?qū)?,展開(kāi)【復(fù)制】,啟動(dòng)【創(chuàng)建請(qǐng)求訂閱向?qū)А?,然后按提示進(jìn)行。
也可按教材P175的例子,先創(chuàng)建發(fā)布,再配置發(fā)布和分發(fā)服務(wù)器,最后創(chuàng)建訂閱。