VF課件(第4章)1分析_第1頁
VF課件(第4章)1分析_第2頁
VF課件(第4章)1分析_第3頁
VF課件(第4章)1分析_第4頁
VF課件(第4章)1分析_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章關系數(shù)據(jù)庫標準語言SQL

SQL結構化查詢語言

使用查詢向導或設計器創(chuàng)建查詢文件標準函數(shù)視圖的創(chuàng)建與使用

結構化查詢語言SQLSQL(StructuredQueryLanguage,結構化查詢語言)SQL標準是于1986年10月美國國家標準局(ANSI)的數(shù)據(jù)庫委員會X3H2批準作為關系數(shù)據(jù)庫語言的美國標準,隨之,國際化標準組織(ISO)也作出了同樣的決定.數(shù)據(jù)定義語言DDL、數(shù)據(jù)查詢語言DQL、數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言DCL第4章關系數(shù)據(jù)庫標準語言SQL一體化語言高度非過程化簡潔實用兩種使用方法4.1SQL結構化查詢語言

4.1.1SQL語言概述SQL包括數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)查詢和數(shù)據(jù)控制4個部分,是一種功能齊全的數(shù)據(jù)庫語言。特點是:

SQL功能

命令動詞

——————————————————————

數(shù)據(jù)查詢

SELECT

數(shù)據(jù)定義

CREATE、DROP、ALTER

數(shù)據(jù)操作

INSERT、UPDATE、DELETE

數(shù)據(jù)控制

GRANT、REVOKE創(chuàng)建表結構4.1.2

數(shù)據(jù)定義語言數(shù)據(jù)定義的功能是定義數(shù)據(jù)庫的結構,簡稱DDL

CREATETABLE|DBF<表名>[FREE](<字段名1><類型>[(<寬度>[,小數(shù)位])][NULL|NOTNULL][CHECK<條件表達式1>[ERROR<提示信息1>]][DEFAULT<表達式1>][PRIMARYKEY|UNIQUE][REFERENCES表名2[TAG索引名1]][,<字段名2>…][,PRIMARYKEY表達式2TAG索引名2|,UNIQUE表達式3TAG索引名3][,FOREIGNKEY表達式4TAG索引名4REFERENCES表名3[TAG索引名5]][,CHECK<條件表達式2>[ERROR<提示信息2>]]第4章關系數(shù)據(jù)庫標準語言SQL4.1.2

數(shù)據(jù)定義語言

TABLE和DBF是等價的,前者是標準的SQL語言的關鍵詞,后者是VisualFoxPro的關鍵詞??蛇x項FREE用于設定創(chuàng)建自由表??蛇x項NULL或NOTNULL用于設定該字段是否允許保存為空值??蛇x項CHECK用于設定字段的有效性規(guī)則,ERROR設定當違反有效性規(guī)則時,顯示錯誤信息的內容。可選項DEFAULT用于設定字段的默認值??蛇x項PRIMARYKEY或UNIQUE用于設定該字段是否是主關鍵字或唯一關鍵字,即建立主索引或候選索引??蛇x項FOREIGNKEY和REFERENCES用于建立表的普通索引,并通過該索引建立與REFERENCES后面表(作為主表)的關系。建立一個名為“學生數(shù)據(jù)庫1”的數(shù)據(jù)庫,在其中建立一個“學生檔案表1”,表結構和學生檔案表類似。CreateDatabase學生數(shù)據(jù)庫1Createtable學生檔案表1(學號C(6)

PrimaryKey,姓名C(6)

Unique,;性別C(2)

check性別=“男”or性別=”女”Error“性別是男或女”,;入學成績N(5,1)check入學成績>400default550,所在系C(10),;出生日期D,團員否L)打開”學生數(shù)據(jù)庫1“,創(chuàng)建“學生成績表1”,并通過“學號”字段與“學生檔案表1”建立關系。OpenDatabase學生數(shù)據(jù)庫1Createtable學生成績表1(學號C(6)

,課程編號C(6),平時成績N(5,1),;期末成績N(5,1),foreignkey學號Tag學號references學生檔案表1)修改表的結構

【格式1】ALTERTABLE<表名1>ADD|ALTER[COLUMN]<字段名><字段類型>[(<寬度>[,小數(shù)位數(shù)])][NULL|NOTNULL][CHECK<條件表達式>][ERROR<提示信息>]][DEFAULT<表達式>][PRIMARYKEY|UNIQUE][REFERENCES表名2[TAG索引名]]功能:修改數(shù)據(jù)表的結構,為其添加新字段或修改已有字段的類型、寬度、有效性規(guī)則、錯誤信息、默認值,定義主關鍵字和聯(lián)系等。說明:該格式的命令不能修改字段名,不能刪除字段,也不能刪除已定義的規(guī)則等

1.為“學生成績表1”增加一個”總評成績“字段,并為該字段設置有效性規(guī)則2.修改“學生成績表1”的平時成績字段的寬度Altertable學生成績表1Alter平時成績N(4,1)check平時成績<=100;Error“平時成績不能超過100分”Default80Altertable學生成績表1add總評成績N(4,1)check總評成績<=100;Error“總評成績不能超過100分”Default90修改表的結構

【格式2

】ALTERTABLE<表名>ALTER[COLUMN]<字段名>[NULL|NOTNULL][SETDEFAULT<表達式>][SETCHECK<條件表達式>[ERROR<提示信息>]][DROPDEFAULT][DROPCHECK]功能:主要用于定義、修改和刪除有效性規(guī)則和默認值定義

說明:該格式的命令不能修改字段名和刪除字段1.刪除“學生成績表1”的”總評成績”的有效性規(guī)則2.修改(定義)“學生成績表1”的”平時成績”的有效性規(guī)則3.修改“學生成績表1”的”總評成績”的默認值4.刪除“學生成績表1”的”總評成績”的默認值Altertable學生成績表1alter總評成績DropcheckAltertable學生成績表1alter平時成績Setdefault70Setcheck‘平時成績<90’error’平時成績不能大于90’Altertable學生成績表1alter總評成績Setdefault100Altertable學生成績表1alter總評成績dropdefault修改表的結構

【格式3

】ALTERTABLE<表名>[DROP[COLUMN]<字段名>][RENAMECOLUMN<原字段名>TO<新字段名>][SETCHECK<條件表達式>[ERROR<提示信息>]][DROPCHECK][ADDPRIMARYKEY<表達式>TAG<索引標識>[FOR<邏輯表達式>]][DROPPRIMARYKEY][ADDUNIQUE<表達式>[TAG<索引標識>[FOR<邏輯表達式>]]][DROPUNIQUETAG<索引標識>][ADDFOREIGNKEY<表達式>TAG<索引標識>[FOR<邏輯表達式>]REFERENCES<表名2>[TAG<索引標識>]][DROPFOREIGNKEYTAG<索引標識>]功能:該格式可以刪除字段、可以修改字段名、可以定義、修改和刪除表一級的有效性規(guī)則等1.把“學生檔案表1”中的“所在系”的名字改成“系別”2.為“學生檔案表1”設置“學號和姓名不能同時為空”的規(guī)則3.刪除“學生檔案表1”中的“團員否”的字段4.將“學生檔案表1”中“學號+課程編號“定義成主索引Altertable學生成績表1renamecolumn‘所在系’to‘系別‘Altertable學生成績表1setcheck學號<>nulland姓名<>nullAltertable學生成績表1drop團員否Altertable學生成績表1addprimarykey‘學號+課程編號’tagxk第4章關系數(shù)據(jù)庫標準語言SQL刪除數(shù)據(jù)表【格式】DROPTABLE<表名>功能:刪除指定的表插入記錄

4.1.3數(shù)據(jù)操縱命令

【格式1】INSERTINTO<表名>[(<字段名1>[,<字段名2>,...])]VALUES(<表達式1>[,<表達式2>,...])功能:向指定數(shù)據(jù)表的末端插入一條新記錄說明:當需要插入表中的所有字段的數(shù)據(jù)時,表名后面的字段名可以缺省,但插入數(shù)據(jù)的格式及順序必須與表的結構完全吻合;若只需要插入表中某些字段的數(shù)據(jù),就需要列出插入數(shù)據(jù)的字段名,相應的表達式的數(shù)據(jù)位置應與之相對應。insertinto學生檔案表111;

(學號,姓名,性別,入學成績);values('00101','amy','女',560)【格式2】INSERTINTO<表名>FROMARRAY數(shù)組名|FROMMEMVAR功能:向指定數(shù)據(jù)表的末端插入一條新記錄,其值來自于數(shù)組或對應的同名內存變量說明:數(shù)組中各元素與表中各字段順序對應。如果數(shù)組中元素的數(shù)據(jù)類型與其對應的字段類型不一致,則新記錄對應的字段為空值;如果表中字段個數(shù)大于數(shù)組元素的個數(shù),則多出的字段為空值

declarr(4)arr(1)='00102'arr(2)='tom'arr(3)='男'arr(4)=578insertinto學生檔案表111fromarrayarr更新記錄

4.1.3數(shù)據(jù)操縱命令

【格式】UPDATE<表名>SET<字段名1>=<表達式1>[,<字段名2>=<表達式2>……][WHERE<條件表達式>]功能:對表中的記錄進行修改,實現(xiàn)記錄數(shù)據(jù)更新說明:一般使用WHERE子句指定條件,以更新滿足條件的一些記錄的字段值,并且一次可以更新多個字段;如果不使用WHERE子句,則更新全部記錄1.將”學生檔案表”中”劉輝“同學的所在系改成”計算機系“2.將”學生成績表”中計算機系學生的”總評成績“等于”平時成績“的30%加上”期末成績“的70%。Update學生檔案表set系別=‘計算機系’where姓名=‘劉輝’Altertable學生成績表set總評成績=平時成績*0.3+期末成績*0.7where系別=‘計算機系’刪除記錄

4.1.3數(shù)據(jù)操縱命令

【格式】DELETEFROM<表名>[WHERE<條件表達式>]功能:從指定的表中,根據(jù)指定的條件邏輯刪除記錄說明:使用FROM指定從哪個表中刪除,WHERE指定被刪除的記錄所滿足的條件,如果不使用WHERE子句,則刪除該表中的全部記錄。

該命令是加邏輯刪除標記,并沒有從物理上刪除。只有執(zhí)行了PACK命令,邏輯刪除的記錄才真正地從物理上刪除。4.1.4SELECT數(shù)據(jù)查詢命令

查詢命令SELECT是SQL語言的核心,SELECT命令的基本結構是SELECT…FROM…WHERE,它包含輸出字段、數(shù)據(jù)來源、條件查詢等基本子句。在這種固定格式中,可以不要WHERE,但是SELECT和FROM是必備的。例4-1查詢全體學生的學號、姓名和年齡。

程序清單如下:

SELECT學號,姓名,年齡

FROMS例4-2查詢學生的全部信息。

程序清單如下:

SELECT*FROMS注意:用‘*’表示表的全部列名,而不必逐一列出。4.1.4SELECT數(shù)據(jù)查詢命令

基本查詢

【格式】SELECT[ALL|DISTINCT][別名.]<選項>

[[AS]<列名>]...]FROM[<數(shù)據(jù)庫名>!]<表名>DISTINCT和ALL選項的用法在SQL語句中,ALL表示輸出所有記錄,包括重復記錄;DISTINCT表示輸出無重復結果的記錄。系統(tǒng)默認ALL選項。AS選項的用法在默認情況下,在數(shù)據(jù)查詢結果中所顯示出來的列標題就是在創(chuàng)建表時使用的字段名。但有時用AS選項給列或字段指定一個新的顯示別名。新列名應遵循字段名的規(guī)定,中間不能有空格。使用時也可省略ASStudentSnumberSnameSsex

SdeptSdateSgrade001小紅女信息系19569002小剛男稅務系20589003小明男金融系185681。查詢學生數(shù)據(jù)庫中的”學生檔案表“的所有學生的”姓名“”學號“2。根據(jù)學生檔案表,列出所有系的系名3。輸出學生數(shù)據(jù)庫中的”學生檔案表“的所有學生的”姓名“”學號“‘年齡’,其中沒有年齡字段名,但有”出生日期“selectSnumber,SnamefromstudentselectdistinctSdeptfromstudent3。輸出學生數(shù)據(jù)庫中的”學生檔案表“的所有學生的”姓名“”學號“‘年齡’,其中沒有年齡字段名,但有”出生日期“selectSnumberas學號,Snameas姓名,;year(date())-year(Sdate)as年齡fromstudent第4章關系數(shù)據(jù)庫標準語言SQL4.1.4SELECT數(shù)據(jù)查詢命令

條件查詢【格式】WHERE<條件表達式1>[AND|OR<條件表達式2>…]使用邏輯運算符用邏輯操作符AND、OR和NOT來連接一系列的表達式,及優(yōu)化查詢過程。使用邏輯運算符時,遵循下列原則使用AND返回滿足所有條件的行使用OR返回滿足任一條件的行使用NOT返回不滿足條件的行使用圓括號為表達式分組改變表達式求值順序增加表達式的可讀性使用邏輯運算符(續(xù))搜索條件的順序MicrosoftSQLServer2000首先求NOT表達式的值,然后是AND,最后是OR當表達式中所有的操作符優(yōu)先級相同時,求值順序由左到右使用邏輯運算符(續(xù))SELECT學號,姓名,年齡,

系別FROM學生信息表

WHERE(姓名LIKE‘張%’OR系別

=信息系)

AND(年齡>16)學號姓名年齡系別014張霞21外語029梁咪22信息062張曉天21金融示例

BETWEEN用法

【格式】<字段>BETWEEN<范圍始值>AND<范圍終值>功能:字段內容在指定的范圍內。IN用法

【格式IN(<數(shù)據(jù)項列表>)功能:字段內容是結果集合或子查詢中的內容1.根據(jù)學生檔案表,輸出計算機系入學成績不低于90分的學生的姓名,學號2.根據(jù)學生檔案表,輸出計算機系入學成績介于80分到90分之間的學生的姓名,學號3.根據(jù)學生檔案表,輸出計算機系和金融系學生的姓名,學號(兩種表示方法)selectSnumberas學號,Snameas姓名fromstudentWhereScore>=90andsdept=‘計算機系’selectSnumberas學號,Snameas姓名fromstudentWhere(Scorebetween80and90)andsdept=‘計算機系’selectSnumber,SnamefromstudentWheresdept=‘計算機系’orsdept=‘金融系’selectSnumber,SnamefromstudentWheresdeptin(‘計算機系’,‘金融系’)檢索一定范圍內的值使用BETWEEN來查詢在一定范圍內的值,使用BETWEEN時,注意SQLServer返回的結果集中,包含范圍內的邊緣值盡量使用BETWEEN,而不用AND和比較操作符表示的表達式(>=xAND<=y)。要使結果集不包含邊緣值,則使用(>xAND<y)要返回不在指定區(qū)域的行時,使用NOTBETWEEN使用值列表作為搜索條件使用IN語句指定一個值的列表作為查詢條件。使用IN時,注意使用IN搜索條件和使用由OR操作符連起來的一系列比較操作符,其效果是等價的在搜索條件中不能包含NULL值,這將返回不可預測的結果集使用NOTIN搜索條件來返回值不在指定列表中的行。使用NOT會降低數(shù)據(jù)檢索速度4.1.4SELECT數(shù)據(jù)查詢命令

條件查詢LIKE及通配符

【格式】<字段>LIKE<字符表達式>功能:對字符型數(shù)據(jù)進行字符串比較,提供兩種通配符,即下劃線“_”和百分號“%”,下劃線表示1個字符,百分號表示0個或多個字符

NULL用法

【格式】IS[NOT]NULL

功能:測試字段值是否為空值說明:在查詢時用“字段名IS[NOT]NULL”的形式,而不能寫成“字段名=NULL”或“字段名!=NULL”1。輸出學生數(shù)據(jù)庫中的“學生檔案表”的所有“李”姓學生的“姓名”“學號”。2。輸出學生數(shù)據(jù)庫中的”學生檔案表”的所有“李”姓,且名字只有一個字的學生的“姓名”“學號”。3。輸出”學生檔案表“的所有添加了簡歷的學生的”姓名“”學號”。selectSnumber,SnamefromstudentWheresnamelike’李%’selectSnumber,SnamefromstudentWheresnamelike’李_’selectSnumber,SnamefromstudentWhereSresumeisnotnull使用比較運算符操作符描述=等于>大于<小于>=大于或等于<=小于或等于<>不等于使用比較操作符來比較表中的值與指定的值或表達式的值使用比較運算符(續(xù))SELECTlastname,cityFROMstudentWHEREcountry='USA'lastnamecityDavolioSeattleFullerTacomaLeverlingKirklandPeacockRedmondCallahanSeattle示例簡單的計算查詢

4.1.4SELECT數(shù)據(jù)查詢命令

用于計算查詢的函數(shù)很多,常用的函數(shù)及其功能如下:

聚合函數(shù)描述AVG計算表達式中平均值COUNT表達式中值的數(shù)目COUNT(*)所選擇的行的數(shù)目MAX表達式中的最大值MIN表達式中最小值SUM計算表達式中所有值的和STDEV樣本標準偏差STDEVP填充標準偏差VAR樣本方差VARP總體方差函數(shù)功能AVG(<字段名>)求一列數(shù)據(jù)的平均值SUM(<字段名>)給出一列數(shù)據(jù)的和COUNT(<*>)輸出查詢的行數(shù)MIN(<字段名>)給出列中的最小值MAX(<字段名>)給出列中的最大值1。輸出“學生檔案表”中學生入學成績的最高分,最低分,平均分,總分。2。統(tǒng)計“學生檔案表”中計算機系的女生的人數(shù)。selectmax(Score),min(Score),avg(Score),sum(Score)fromstudentselectcount(*)fromstudentwheresex=‘女’【1】在student表中,找出系的數(shù)目。

SELECTCOUNT(DISTINCTsdept)FROMstudent

說明:

除非對關系中的元組個數(shù)進行計數(shù),一般應用COUNT函數(shù)應該使用DISTINCT。例如:

SELECTCOUNT(*)FROMstudent

將給出學生的記錄數(shù)是6個。

【2】在職工表中,求支付的工資總數(shù)。

SELECTSUM(工資)FROM職工結果是:6160。這個結果是職工關系中的工資值的總和,它并不管是否有重復值。這時若使用命令:

SELECTSUM(DISTINCT工資)FROM職工

將得出錯誤的結果4910。原因是DISTINCT命令去掉重復值1250。

【5】在student中,求在計算機系的學生的最高分SELECTMAX(score)FROMstudentWHEREsdept=“計算機系"

結果是:1250

與MAX函數(shù)相對應的是MIN函數(shù)(求最小值)。比如,求最低分可以有如下命令:

SELECTMIN(score)FROMstudentWHEREsdept=“計算機系"

多表查詢

4.1.4SELECT數(shù)據(jù)查詢命令

在多表之間進行查詢就比較復雜,必須處理表和表間的等值連接關系。等值連接是按對應字段的共同值將一個表中的記錄與另一個表中的記錄相連接。學號姓名性別出生日期所在系團員否入學成績簡歷照片030102王蕭麗女1981-12-23信息系F521.5MemoGen030221張宇輝男1982-05-16稅務系F543MemoGen030101李俊明男1981-09-09會計系T499MemoGen030105劉少波男1982-11-15會計系F520MemoGen030104白蘭蘭女1980-05-22稅務系F531MemoGen030219張曦女1981-09-03稅務系T545MemoGen030108陳志寒男1982-07-12信息系T526MemoGen030216錢宇龍男1982-05-08金融系F522MemoGenstudent課程編號課程名稱學時學分020469計算機原理543020489數(shù)據(jù)庫理論543010350VB543020499C語言543020301計算機導論543020490數(shù)據(jù)結構724010304平面圖形設計362sc學號課程編號平時成績期末成績總評0301010203812685860301010203012687900301020204892575780301030204692788890301040103502467710301040204992994950301050203013081.587sg學號姓名性別出生日期所在系團員否入學成績簡歷照片030102王蕭麗女1981-12-23信息系F521.5MemoGen030221張宇輝男1982-05-16稅務系F543MemoGen030101李俊明男1981-09-09會計系T499MemoGen030105劉少波男1982-11-15會計系F520MemoGen030104白蘭蘭女1980-05-22稅務系F531MemoGen030219張曦女1981-09-03稅務系T545MemoGen030108陳志寒男1982-07-12信息系T526MemoGen030216錢宇龍男1982-05-08金融系F522MemoGenstudent課程編號課程名稱學時學分020469計算機原理543020489數(shù)據(jù)庫理論543010350VB543020499C語言543020301計算機導論543020490數(shù)據(jù)結構724010304平面圖形設計362學號課程編號平時成績期末成績總評0301010203812685860301010203012687900301020204892575780301030204692788890301040103502467710301040204992994950301050203013081.5871.輸出所有學生的成績單,要求給出學號,姓名,課程編號,課程名稱,期末成績

selectStudent.學號,姓名,課程編號,課程名稱,總評fromstudent,sc,sgwhereStudent.學號=sg.學號andsg.課程編號=sc.課程編號selecta.學號,a.姓名,b.課程編號,b.期末成績,c.課程名稱from學生檔案表a,成績表b,課程表cwherea.學號=b.學號andb.課程編號=c.課程編號第4章關系數(shù)據(jù)庫標準語言SQL連接查詢

4.1.4SELECT數(shù)據(jù)查詢命令

連接查詢是一種基于多個表的查詢。連接分為內部連接和外部連接。外部連接又分為左外連接、右外連接和全外連接

內部連接(INNERJOIN)指將所有滿足連接條件的記錄都包含在查詢結果中。在VisualFoxPro中連接動詞為INNERJOIN(等價于JOIN),連接條件用ON引出。1.輸出所有學生的成績單,要求給出學號,姓名,課程編號,課程名稱,期末成績selecta.學號,a.姓名,b.課程編號,b.期末成績,c.課程名稱from學生檔案表a,成績表b,課程表cwherea.學號=b.學號andb.課程編號=c.課程編號selecta.學號,a.姓名,b.課程編號,b.期末成績,c.課程名稱from學生檔案表a

innerjoin

成績表bona.學號=b.學號innerjoin

課程表conb.課程編號=c.課程編號SELECTbuyer_name,sales.buyer_id,qtyFROMbuyersINNERJOINsalesONbuyers.buyer_id=sales.buyer_idsalesbuyer_idprod_idqty114323151553711421003buyersbuyer_nameAdamBarrSeanChaiEvaCoretsErinO’Meliabuyer_id1234結果buyer_nameAdamBarrAdamBarrErinO’MeliaEvaCoretsbuyer_idqty11431553711ErinO’Melia41003示例連接查詢

4.1.4SELECT數(shù)據(jù)查詢命令

外部連接(OUTERJOIN)

左外連接(LeftOuterJoin):包括了左表(FROM子句中的第一個表)中的全部記錄以及右表(FROM子句中的第二個表)中與之匹配的記錄。

右外連接(RightOuterJoin):包括了右表中的全部記錄以及左表與之匹配的記錄。

全外部連接(FullOuterJoin):包括了左表和右表所有的記錄。使用外聯(lián)接左(右)外聯(lián)接可以從兩個表中返回符合聯(lián)接條件的記錄,同時也將返回左(右)邊不符合聯(lián)接條件的記錄使用左(右)外聯(lián)接時,請注意不滿足聯(lián)接條件的記錄將顯示空值左聯(lián)接可以顯示第一個表中所有記錄右聯(lián)接可以顯示第二個表中所有記錄可以把LEFTOUTERJOIN或RIGHTOUTERJOIN簡寫為LEFTJOIN或RIGHTJOIN1.從學生檔案表中輸出所有期末成績大于90分的學生的學號,姓名,課程編號,期末成績selecta.學號,a.姓名,b.課程編號,b.期末成績from學生檔案表a

leftouterjoin

成績表bona.學號=b.學號andb.期末成績>90SELECTbuyer_name,sales.buyer_id,qtyFROMbuyersLEFTOUTERJOINsalesONbuyers.buyer_id=sales.buyer_idsalesbuyer_idprod_idqty114323151553711421003buyersbuyer_nameAdamBarrSeanChaiEvaCoretsErinO’Meliabuyer_id1234結果buyer_nameAdamBarrAdamBarrErinO’MeliaEvaCoretsbuyer_idqty11431553711ErinO’Melia41003SeanChaiNULLNULL示例使用全外部連接SELECTbuyer_name,qtyFROMbuyers

fullouterJOINsales結果buyer_nameAdamBarrAdamBarrAdamBarrAdamBarrqty1553711

AdamBarr1003

SeanChai15

SeanChai5

SeanChai37

SeanChai11

SeanChai1003

EvaCorets15

......salesbuyer_idprod_idqty114323151553711421003buyersbuyer_id1234buyer_nameAdamBarrSeanChaiEvaCoretsErinO’Melia示例聯(lián)接兩個以上的表聯(lián)接任意數(shù)目的表都有可能,通過使用共同擁有的字段,任何一個表都可以和其他表聯(lián)接自聯(lián)接(Self-Join)使用自聯(lián)接,可以查詢一個表中各記錄之間的關系使用自聯(lián)接時,應注意

引用表的兩份副本時,必須使用表的別名生成自聯(lián)接時,表中每一行都和自身比較一下,并生成重復的記錄,使用WHERE子句來消除這些重復記錄1.列出經理極其職員的清單雇員號雇員姓名經理E3趙勇E4錢潮E3E6孫潔E3E8李路E6selecta.雇員姓名,‘領導’,b.雇員姓名from雇員表a,雇員表bWherea.雇員號=b.經理趙勇領導錢潮趙勇領導孫潔孫潔領導李路排序查詢

4.1.4SELECT數(shù)據(jù)查詢命令

ORDERBY子句

【格式】ORDERBY<排序項1>[ASC|DESC][,<排序項2>[ASC|DESC]...]

功能:缺省值為升序排列,用ASC表示。降序排列,用DESC表示。如果希望對多字段進行排序,要在ORDERBY后面的字段名與字段名之間加上逗號SELECTproductid,productname,categoryid,Unitprice

FROMproductsORDERBYcategoryid,unitpriceDESCproductidproductnamecategoryidunitprice38CotedeBlaye1263.500043IpohCoffee146.00002Chang119.0000…………63Vegie-spread243.90008NorthwoodsCranberrySauce240.000061Siropd'érable228.5000…………示例1。輸出所有學生的入學成績單,按“所在系”列出學號,姓名,所在系,如果“所在系”相同,再按“期末成績”由高到低排序。selecta.學號,a.姓名,a.所在系from學生檔案表aorderbya.所在系,入學成績desc排序查詢

4.1.4SELECT數(shù)據(jù)查詢命令

TOP用法

【格式】TOP<數(shù)值表達式>[PERCENT]

說明:TOP短語要與ORDERBY短語同時使用才有效。

當不使用PERCENT時,<數(shù)值表達式>是1至32767之間的整數(shù),說明顯示前幾個記錄;當使用PERCENT時,<數(shù)值表達式>是0.01至99.99間的實數(shù),說明顯示結果中前百分之幾的記錄。

TOP短語不在相同值間作選擇。例如指定輸出前5項的記錄,但第5項記錄和第6項值相同,則查詢輸出6項記錄。1。輸出學生檔案表中“入學成績”最高的前3個學生的姓名,所在系,入學成績selecttop3學號,姓名,所在系from學生檔案表orderby入學成績desc限制返回的行數(shù)

SELECTTOP2*

FROMstudentorderbyScore

SELECTTOP20PERCENT*

FROMstudentorderbysage分組查詢

4.1.4SELECT數(shù)據(jù)查詢命令

GROUPBY子句

【格式】GROUPBY<分組列名1>[,<分組列名2>...]

功能:GROUPBY子句可以將查詢結果按指定字段值在行的方向上進行分組。GROUPBY子句與統(tǒng)計函數(shù)一起完成對每一個組生成一行和一個匯總值的功能,即每組產生一個匯總記錄。1、輸出學生檔案表中所在系,各系學生的平均入學成績和各系的人數(shù)select所在系,avg(入學成績)as‘平均成績’,count(*)as‘人數(shù)’from學生檔案表groupby所在系使用GROUPBY子句SELECTproductid,orderid

,quantityFROMorderhist

GOSELECTproductid,SUM(quantity)AStotal_quantityFROMorderhistGROUPBYproductid

GOproductidtotal_quantity115235345productidorderidquantity11511102110222531153230productidtotal_quantity235只對滿足WHERE子句的行分組SELECTproductid,SUM(quantity)AStotal_quantityFROMorderhistWHEREproductid=2GROUPBYproductid

GO示例1示例2分組查詢

4.1.4SELECT數(shù)據(jù)查詢命令

HAVING用法

功能:HAVING子句用來指定每一分組內應滿足的條件。在使用HAVING子句時,它應該與GROUPBY子句連用,并放在GROUPBY子句之后,不可以單獨使用。說明:HAVING子句和WHERE子句不矛盾,在查詢中先用WHERE子句限定元組,然后進行分組,最后再用HAVING子句限定分組。

1。輸出學生檔案表中學生人數(shù)至少有5人的系名和人數(shù)。2。輸出學生檔案表中團員人數(shù)超過3人的系名和人數(shù)。select所在系,count(*)as‘人數(shù)’from學生檔案表groupby所在系having人數(shù)>=5select所在系,count(*)as‘人數(shù)’from學生檔案表where團員否=.t.groupby所在系having人數(shù)>3聯(lián)合使用GROUPBY子句和HAVING子句(續(xù))SELECTproductid,orderid,quantityFROMorderhist

SELECTproductid,SUM(quantity)AStotal_quantityFROMorderhistGROUP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論