《vfp關系數據庫標準語言SQL課件》由會員分享,可在線閱讀,更多相關《vfp關系數據庫標準語言SQL課件(45頁珍藏版)》請在裝配圖網上搜索。
1、,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Click to edit Master title style,查看數據庫,倉庫管理,Click to edit Master text styles,Second level,Third le
2、vel,Fourth level,Fifth level,Click to edit Master title style,*,第四章,關系數據庫標準語言,SQL,Visual FoxPro,數據庫程序設計,蘇州科技學院電子與信息工程學院,USTS,計算機,基礎教學部,目 錄,4.1,SQL,概述,1,4.2,查詢功能,2,4.3,操作功能,3,4.4,定義功能,4,4.1 SQL,概述,ANSI,提出,SQL,1986,年,1987,年,ISO,采納,SQL,1989,年,ISO,提出,SQL89,1992,年,ISO,提出,SQL92,SQL,功能,命令動詞,數據查詢,SELECT,數據定
3、義,CREATE,、,DROP,、,ALTER,數據操縱,INSERT,、,UPDATE,、,DELETE,數據控制,GRANT,、,REVOKE,目 錄,4.2.1,簡單查詢,4.2.2,簡單的連接查詢,4.2.3,嵌套查詢,4.2.4,幾個特殊的運算符,4.2.5,排序,4.2.6,簡單的計算查詢,4.2.7,分組與計算查詢,4.2.8,利用空值查詢,4.2.9,別名與自連接查詢,內外層相關嵌套查詢,使用量詞和謂詞的查詢,超連接查詢,集合的并運算,中,SELECT,的幾個特殊選項,4.1,SQL,概述,1,4.2,查詢功能,2,4.3,操作功能,3,4.4,定義功能,4,SELECT SQ
4、L,SELECT ALL|DISTINCT TOP,nExpr,PERCENT,Alias,.,Select_Item,AS,Column_Name,Alias,.,Select_Item,AS,Column_Name,.,FROM FORCE,DatabaseName,!,Table,AS,Local_Alias,INNER,|LEFT OUTER|RIGHT OUTER|FULL OUTER,JOIN,DatabaseName,!,Table,AS,Local_Alias,ON,JoinCondition,INTO,Destination,|TO FILE,FileName,ADDITIV
5、E,|TO PRINTER PROMPT|TO SCREEN,PREFERENCE,PreferenceName,NOCONSOLE,PLAIN,NOWAIT,WHERE,JoinCondition,AND,JoinCondition,.AND|OR,FilterCondition,AND|OR,FilterCondition,.,GROUP BY,GroupColumn,GroupColumn,.,HAVING,FilterCondition,UNION ALL,SELECT,命令,ORDER BY,Order_Item,ASC|DESC,Order_Item,ASC|DESC.,問題,需要
6、訪問的數據涉及到多張表,查詢學生名、課程名、成績,xs.xm kc.kcm cj.cj,需要訪問的只是部分數據,工商管理系的學生,xh,xm,需要訪問計算或統(tǒng)計數據,每個學生的平均分,xs.xm,平均,(cj.cj),分組,xs.xm,每門課程,80,分以上的人數,kc.kcm,個數,(),條件,cj.cj=80,分組,cj.kcdh,解決辦法,查詢和視圖!,共同點,從表中檢索或統(tǒng)計所需的數據,區(qū)別,查詢是只讀的;視圖可以被修改,并且可以將更新結果送回源表,查詢以獨立的文件存儲;視圖不以獨立文件存儲,系統(tǒng)將其名稱及定義存儲在數據庫中,SELECT SQL,定義,數據源,指定數據源表,FROM,
7、子句,確定源表間的聯(lián)接,JOINON,子句,定義,結果,篩選源表記錄,WHERE,子句,指定輸出字段,字段、函數和表達式的列表或*,指定輸出類型,INTO,子句和,TO,子句,定義記錄的分組,GROUP BY,子句,指定結果順序,ORDER BY,子句,篩選結果記錄,HAVING,子句,指定有無重復記錄,ALL/DISTINCT,指定結果的范圍,TOP nExprPERCENT,簡單查詢,例,4.1,:從職工表中檢索所有工資值。,例,4.2,:檢索倉庫關系中的所有元組。,例,4.3,:檢索工資多于,1230,的職工號。,例,4.4,:檢索哪些倉庫有工資多于,1210,的職工。,例,4.5,:給
8、出在倉庫“,WH1”,或“,WH2”,工作并且工資少于,1250,員的職工號。,簡單連接查詢,例,4.7,:找出工作在面積大于,400,的倉庫的職工號以及這些職工工作的城市。,Select,職工號,城市,from,倉庫,職工,;where(,面積,400)and(,職工,.,倉庫號,=,倉庫,.,倉庫號,),Select,職工號,城市,from,倉庫,inner join,職工,;On(,職工,.,倉庫號,=,倉庫,.,倉庫號,)where,面積,400,嵌套查詢,例,4.9,:查詢所有職工的工資都多于,1210,元的倉庫的信息。,沒有一個職工的工資少于或等于,1210,元的倉庫信息。,Sel
9、ect*from,倉庫,where,倉庫號,not in;,(select,倉庫號,from,職工,where,工資,=1210);,and,倉庫號,in(select,倉庫號,from,職工,),幾個特殊運算符,例,4.11:,檢索出工資在,1220,元到,1240,元范圍內的職工信息。,Select*from,職工,;,where,工資,between,1220,and,1240,例,4.12:,從供應商關系中檢索出全部公司的信息(不要工廠或其他供應商的信息)。,Select*from,供應商,;,where,供應商名,like,“%,公司”,4.2.5,排序,例,4.15,先按倉庫號排序
10、,再按工資排序輸出全部職工信息。,Select*from,職工,order by,倉庫號,工資,分組計算查詢,Count(),、,sum(),、,avg(),、,max(),、,min(),例:查詢,cj,表中每個學生的考試門數、最高分、最低分、平均分及總分,結果按學號升序排序。,Select,cj.xh,count,(*)as,考試門數,;,max,(,cj.cj)as,最高分,min,(cj.cj)as,最低分,;,avg,(cj.cj)as,平均分,sum,(cj.cj)as,總分,;,from,cj;,group by,cj.xh;,order by,1,利用空值查詢,例,4.23,:
11、找出尚未確定供應商的訂購單。,Select*from,訂購單,;,where,供應商號,is null,別名與自連接查詢,在,FROM,子句中使用:,雇員關系:雇員(雇員號,雇員姓名,經理),雇員號,雇員姓名,經理,E3,趙勇,E4,錢潮,E3,E6,孫潔,E3,E8,李淥,E6,Select s.,雇員姓名,“,領導,”,e.,雇員姓名,;,from,雇員,s,雇員,e,where,s.,雇員號,=e.,經理,內外層互相關嵌套查詢,例:列出每個職工經手的具有最高金額的訂購單信息。,Select,out.,職工號,out.,供應商號,out.,訂購單號,out.,訂購日期,out.,總金額,;
12、,from,訂購單,out where,總金額,=;,(select max(,總金額,)from,訂購單,inner1;,where,out.,職工號,=inner1.,職工號,),使用量詞和謂詞查詢,ANY|ALL|SOME(,子查詢,),ANY,與,SOME,是同義詞,在進行比較運算時只要子查詢中有一行能使結果為真,則結果為真。,ALL,要求子查詢中的所有行都能使結果為真時,結果才為真。,NOT EXISTS(,子查詢,),not Exists,是謂詞,用來檢查在子查詢中是否有結果返回(即存在元組或不存在元組),例:查詢那些倉庫中還沒有職工的倉庫信息。,SELECT*FROM,倉庫,WH
13、ERE NOT EXISTS;,(SELECT*FROM,職工,where,倉庫號,=,倉庫,.,倉庫號,),select*from,倉庫,where,倉庫號,not in;,(select,倉庫號,from,職工,),例:檢索有職工的工資大于或等于,WH1,倉庫中任何一名職工的工資的倉庫號。,Select distinct,倉庫號,from,職工,;,where,工資,=any;,(select,工資,from,職工,where,倉庫號,=“WH1”),超連接查詢,SELECT,from,table,inner|left|right|full join,table,On,joincondit
14、ion,Where,例:普通連接,Select,倉庫,.,倉庫號,城市,面積,職工號,工資,;,from,倉庫,inner join,職工,on,倉庫,.,倉庫號,=,職工,.,倉庫號,例:左連接,Select,倉庫,.,倉庫號,城市,面積,職工號,工資,;,from,倉庫,left join,職工,on,倉庫,.,倉庫號,=,職工,.,倉庫號,例:右連接,Select,倉庫,.,倉庫號,城市,面積,職工號,工資,;,from,倉庫,right join,職工,on,倉庫,.,倉庫號,=,職工,.,倉庫號,例:全連接,Select,倉庫,.,倉庫號,城市,面積,職工號,工資,;,from,倉庫
15、,full join,職工,on,倉庫,.,倉庫號,=,職工,.,倉庫號,集合的并運算,UNION,:兩個查詢結果具有相同結構的關系并在一起。,查詢全校教師與學生的姓名和類別信息。,Select js.xm as,姓名,教師,as,類別,from js;,Union,;,Select xs.xm as,姓名,學生,as,類別,from xs,4.2.14Visual FoxPro SQL SELECT,的幾個特殊選項,顯示部分數據:,1.,顯示工資最高的,3,位職工信息,Select*top 3 from,職工,order by,工資,desc,2.,顯示工資最低的那,30%,職工的信息,Se
16、lect*top 30 percent from,職工,order by,工資,查詢結果的去處:,INTO ARRAY,ArrayName,INTO CURSOR,CursorName,INTO TABLE|DBF,TableName,TO FILE,FileName,ADDITIVE,TO PRINTER PROMPT,目 錄,4.3.1,插入數據,4.3.2,更新數據,4.3.3,刪除,4.1,SQL,概述,1,4.2,查詢功能,2,4.3,操作功能,3,4.4,定義功能,4,插入數據,INSERT INTO,dbf_name,(,fname1,fname2,),VALUES,(,eExpression1,eExpression2,),Insert into,訂購單,values(E7,S4,OR01,2001-05-25,5000),更新數據,UPDATE,TableName,SET,Column_Name1=eExpression1,Column_Name2=eExpression2,.,WHERE,Condition,為,js,表添加一個年齡字段,并計算所有男教師的年齡。,A