selectfromwhere_格式詳解_第1頁
selectfromwhere_格式詳解_第2頁
selectfromwhere_格式詳解_第3頁
selectfromwhere_格式詳解_第4頁
selectfromwhere_格式詳解_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、select from where 格式詳解一、SELECT語句的完整語法為:SELECTALL|DISTINCT|DISTINCTROW|TOP*|talbe.*|table.field1AS alias1,table.field2AS alias2,FROM tableexpressio n,IN externaldatabaseWHERE 訂GROUP BYHAVINGORDER BYWITH OWNERACCESS OPTION說明:用中括號 () 括起來的部分表示是可選的, 用大括號 () 括起來的部分是表示必須從中選擇 其中的一個。1 FROM 子句FROM 子句指定了 SELEC

2、T 語句中字段的來源。 FROM 子句后面是包含一個或多個的表 達式 (由逗號分開 ),其中的表達式可為單一表名稱、已保存的查詢或由INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的復(fù)合結(jié)果。如果表或查詢存儲在外部數(shù)據(jù)庫, 在 IN 子 句之后指明其完整路徑。例:下列 SQL 語句返回所有有定單的客戶:SELECT OrderID,Customer.customerIDFROM Orders CustomersWHERE Orders.CustomerID=Customers.CustomeersID2 ALL、DISTINCT 、DISTINCTROW 、TOP 謂詞

3、(1) ALL 返回滿足 SQL 語句條件的所有記錄。如果沒有指明這個謂詞,默認為 ALL 。 例:SELECT ALL FirstName,LastNameFROM Employees(2) DISTINCT 如果有多個記錄的選擇字段的數(shù)據(jù)相同,只返回一個。(3) DISTINCTROW 如果有重復(fù)的記錄,只返回一個(4) TOP 顯示查詢頭尾若干記錄。 也可返回記錄的百分比, 這是要用 TOP N PERCENT 子 句(其中 N 表示百分比)例:返回 5%定貨額最大的定單SELECT TOP 5 PERCENT*FROM Order DetailsORDER BY UnitPrice*Q

4、uantity*(1-Discount) DESC3 用 AS 子句為字段取別名如果想為返回的列取一個新的標題, 或者,經(jīng)過對字段的計算或總結(jié)之后, 產(chǎn)生了一個新 的值,希望把它放到一個新的列里顯示,則用 AS 保留。例:返回 FirstName 字段取別名為 NickNameSELECT FirstName AS NickName ,LastName ,CityFROM Employees例:返回新的一列顯示庫存價值SELECT ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS valueInStock FROM

5、Products二 .WHERE 子句指定查詢條件1 比較運算符 比較運算符 含義= 等于 大于= 大于等于= 小于等于 不等于! 不大于!#1/1/96# AND OrderDate#96-1-1#也可以表示為:WHERE OrderDateDatevalue( 1/1/96 )使用 NOT 表達式求反。例:查看 96 年 1 月 1 日以后的定單WHERE Not OrderDateQuantity 另一種方法是用 Microsof JET SQL 獨有的 JNNER JOIN 語法:FROM table1 INNER JOIN table2ON table1.field1 compari

6、sion table2.field2其中 comparision 就是前面 WHERE 子句用到的比較運算符。SELECT FirstName,lastName,OrderID,CustomerID,OrderDateFROM EmployeesINNER JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID、I 、+ :注意:INNER JOIN 不能連接 Memo OLE Object Single Double 數(shù)據(jù)類型字段。在一個 JOIN 語句中連接多個 ON 子句語法:SELECT fieldsFROM table1 INNER

7、 JOIN table2ON table1.field1 compopr table2.field1 ANDON table1.field2 compopr table2.field2 ORON table1.field3 compopr table2.field3也可以SELECT fieldsFROM table1 INNER JOIN(table2 INNER JOIN ( table3INNER JOER ( tablexINNER JOINON table1.field1 compopr table2.field1ON table1.field2 compopr table2.fie

8、ld2ON table1.field3 compopr table2.field3外部連接返回更多記錄, 在結(jié)果中保留不匹配的記錄, 不管存不存在滿足條件的記錄都要 返回另一側(cè)的所有記錄。FROM table LEFT|RIGHTJOIN table2ON table1.field1comparision table.field2 用左連接來建立外部連接,在表達式的左邊的表會顯示其所有的數(shù)據(jù) 例:不管有沒有定貨量,返回所有商品SELECT ProductName ,OrderIDFROM ProductsLEFT JOIN Orders ON Products.PrductsID=Orders

9、.ProductID 右連接與左連接的差別在于: 不管左側(cè)表里有沒有匹配的記錄, 它都從左側(cè)表中返回所有 記錄。例:如果想了解客戶的信息, 并統(tǒng)計各個地區(qū)的客戶分布, 這時可以用一個右連接,即使 某個地區(qū)沒有客戶,也要返回客戶信息??罩挡粫嗷テヅ?,可以通過外連接才能測試被連接的某個表的字段是否有空值。 SELECT *FROM talbe1LEFT JOIN table2 ON table1.a=table2.c1 連接查詢中使用 Iif 函數(shù)實現(xiàn)以 0 值顯示空值Iif 表達式: Iif(IsNull(Amount,0,Amout)例:無論定貨大于或小于Y 50,都要返回一個標志。Iif(

10、Amount50,?Big order?,?Small order?)五 . 分組和總結(jié)查詢結(jié)果在 SQL 的語法里, GROUP BY 和 HAVING 子句用來對數(shù)據(jù)進行匯總。 GROUP BY 子句 指明了按照哪幾個字段來分組,而將記錄分組后,用 HAVING 子句過濾這些記錄。 GROUP BY 子句的語法SELECT fidldlistFROM tableWHERE criteriaGROUP BY groupfieldlist HA VING groupcriteria注:Microsoft Jet數(shù)據(jù)庫Jet不能對備注或OLE對象字段分組。GROUP BY字段中的Null值以備分

11、組但是不能被省略。在任何 SQL 合計函數(shù)中不計算 Null 值。GROUP BY 子句后最多可以帶有十個字段,排序優(yōu)先級按從左到右的順序排列。例:在WA地區(qū)的雇員表中按頭銜分組后,找出具有同等頭銜的雇員數(shù)目大于1人的所有頭銜。SELECT Title ,Count(Title) as TotalFROM EmployeesWHERE Region = WAGROUP BY TitleHAVING Count(Title)1JET SQL 中的聚積函數(shù)聚集函數(shù) 意義SUM ( ) 求和AVG ( ) 平均值COUNT ( ) 表達式中記錄的數(shù)目COUNT (* ) 計算記錄的數(shù)目MAX 最大值

12、MIN 最小值VAR 方差STDEV 標準誤差FIRST 第一個值LAST 最后一個值六 . 用 Parameters 聲明創(chuàng)建參數(shù)查詢Parameters聲明的語法:PARAMETERS name datatype, name dfeatype, 其中 name 是參數(shù)的標志符 ,可以通過標志符引用參數(shù) .Datatype說明參數(shù)的數(shù)據(jù)類型.使用時要把 PARAMETERS 聲明置于任何其他語句之前 .例:PARAMETERSLow price Currency,Beginning datedatatimeSELECT OrderID ,OrderAmountFROM OrdersWHERE

13、 OrderAMountlow priceAND OrderDate=Beginning date七 . 功能查詢所謂功能查詢 ,實際上是一種操作查詢 ,它可以對數(shù)據(jù)庫進行快速高效的操作 .它以選擇查 詢?yōu)槟康?挑選出符合條件的數(shù)據(jù) ,再對數(shù)據(jù)進行批處理 .功能查詢包括更新查詢 ,刪除查詢 , 添加查詢 ,和生成表查詢 .1 更新查詢UPDATE 子句可以同時更改一個或多個表中的數(shù)據(jù) .它也可以同時更改多個字段的值 . 更新查詢語法 :UPDATE 表名SET 新值WHERE 準則例 :英國客戶的定貨量增加 5%,貨運量增加 3%UPDATE OEDERSSET OrderAmount = O

14、rderAmount *1.1Freight = Freight*1.03WHERE ShipCountry = UK2 刪除查詢DELETE 子句可以使用戶刪除大量的過時的或冗于的數(shù)據(jù) .注 :刪除查詢的對象是整個記錄 .DELETE 子句的語法 :DELETE 表名.*FROM 來源表WHERE 準則例: 要刪除所有 94 年前的定單DELETE *FROM OrdersWHERE OrderData#94-1-1#3 追加查詢INSERT 子句可以將一個或一組記錄追加到一個或多個表的尾部 .INTO 子句指定接受新記錄的表 valueS 關(guān)鍵字指定新記錄所包含的數(shù)據(jù)值 .INSERT 子

15、句的語法 :INSETR INTO目的表或查詢(字段1,字段2,)values(數(shù)值1,數(shù)值2,)例:增加一個客戶INSERT INTO Employees(FirstName,LastName,title)valueS( Harry , Washington , Trainee )4 生成表查詢可以一次性地把所有滿足條件的記錄拷貝到一張新表中.通常制作記錄的備份或副本或作為報表的基礎(chǔ) .SELECT INTO 子句用來創(chuàng)建生成表查詢語法 :SELECT 字段 1,字段 2, INTO 新表IN外部數(shù)據(jù)庫FROM 來源數(shù)據(jù)庫 WHERE 準則 例:為定單制作一個存檔備份SELECT *INTO

16、 OrdersArchiveFROM Orders八 . 聯(lián)合查詢UNION 運算可以把多個查詢的結(jié)果合并到一個結(jié)果集里顯示 .UNION 運算的一般語法 :表查詢 1 UNION ALL查詢 2 UNION 例:返回巴西所有供給商和客戶的名字和城市 SELECT CompanyName,CityFROM Suppliers WHERE Country = Brazil UNIONSELECT CompanyName,CityFROM Customers WHERE Country = Brazil 注:缺省的情況下 ,UNION 子句不返回重復(fù)的記錄 .如果想顯示所有記錄 ,可以加 ALL

17、選項 UNION 運算要求查詢具有相同數(shù)目的字段 .但是,字段數(shù)據(jù)類型不必相同 .每一個查詢參數(shù)中可以使用 GROUP BY 子句 或 HAVING 子句進行分組 .要想以指定的 順序來顯示返回的數(shù)據(jù) ,可以在最后一個查詢的尾部使用 OREER BY 子句.九 . 交叉查詢交叉查詢可以對數(shù)據(jù)進行總和 ,平均 ,計數(shù)或其他總和計算法的計算 ,這些數(shù)據(jù)通過兩種信 息進行分組 :一個顯示在表的左部 ,另一個顯示在表的頂部 .Microsoft Jet SQL 用 TRANSFROM 語句創(chuàng)建交叉表查詢語法 : TRANSFORM aggfunctionSELECT 語句GROUP BY 子句PIVO

18、T pivotfiel dIN(value1 ,value2, ) Aggfounction 指 SQL 聚積函數(shù) ,SELECT 語句選擇作為標題的的字段 , GROUP BY 分組說明:Pivotfield 在查詢結(jié)果集中創(chuàng)建列標題時用的字段或表達式,用可選的 IN 子句限制它的取值.value 代表創(chuàng)建列標題的固定值 . 例:顯示在 1 996年里每一季度每一位員工所接的定單的數(shù)目 : TRANSFORM Count(OrderID)SELECTFirstName& &LastName AS FullNeamFROM Employees INNER JOIN OrdersONEmploy

19、ees.EmployeeID = Orders.EmployeeIDWHERE DatePart( “yyyy”,OrderDate)= 1996 GROUP BY FirstName& &LastName ORDER BY FirstName& &LastNamePOVOT DatePart( “q”,OrderDa季度十 . 子查詢子查詢可以理解為 套查詢 .子查詢是一個 SELECT 語句 .1 表達式的值與子查詢返回的單一值做比較語法:表達式 comparision ANY|ALL|SOME( 子查詢 )說明:ANY 和 SOME 謂詞是同義詞 ,與比較運算符 (=,=)一起使用 .返回一個布爾值 True或False.ANY的意思是,

溫馨提示

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

評論

0/150

提交評論