SQL語句的基本語法_第1頁
SQL語句的基本語法_第2頁
SQL語句的基本語法_第3頁
SQL語句的基本語法_第4頁
SQL語句的基本語法_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、SQL語句的基本語法一.SELECT語句的完整語法為:SELECTALL|DISTINCT|DISTINCTROW|TOP*|talbe.*|table.field1AS alias1,table.field2AS alias2,FROM tableexpression,IN externaldatabaseWHEREGROUP BYHAVINGORDER BYWITH OWNERACCESS OPTION說明:用中括號(hào)()括起來的部分表示是可選的,用大括號(hào)()括起來的部分是表示必須從中選擇其中的一個(gè)。1 FROM子句FROM子句指定了SELECT語句中字段的來源。FROM子句后面是包含一個(gè)或

2、多個(gè)的表達(dá)式(由逗號(hào)分開),其中的表達(dá)式可為單一表名稱、已保存的查詢或由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的復(fù)合結(jié)果。如果表或查詢存儲(chǔ)在外部數(shù)據(jù)庫(kù),在IN 子句之后指明其完整路徑。例:下列SQL語句返回所有有定單的客戶:SELECT OrderID,Customer.customerIDFROM Orders CustomersWHERE Orders.CustomerID=Customers.CustomeersID2 ALL、DISTINCT、DISTINCTROW、TOP謂詞(1) ALL 返回滿足SQL語句條件的所有記錄。如果沒有指明這個(gè)謂詞,默

3、認(rèn)為ALL。例:SELECT ALL FirstName,LastNameFROM Employees(2) DISTINCT 如果有多個(gè)記錄的選擇字段的數(shù)據(jù)一樣,只返回一個(gè)。(3) DISTINCTROW 如果有重復(fù)的記錄,只返回一個(gè)(4) TOP顯示查詢頭尾若干記錄。也可返回記錄的百分比,這是要用 TOP N PERCENT子句(其中N 表示百分比)例:返回5%定貨額最大的定單SELECT TOP 5 PERCENT*FROM Order DetailsORDER BY UnitPrice*Quantity*(1-Discount) DESC3 用 AS 子句為字段取別名如果想為返回的列取

4、一個(gè)新的標(biāo)題,或者,經(jīng)過對(duì)字段的計(jì)算或總結(jié)之后,產(chǎn)生了一個(gè)新的值,希望把它放到一個(gè)新的列里顯示,則用AS保留。例:返回FirstName字段取別名為NickNameSELECT FirstName AS NickName ,LastName ,CityFROM Employees例:返回新的一列顯示庫(kù)存價(jià)值SELECT ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS valueInStockFROM Products二 .WHERE 子句指定查詢條件1 比較運(yùn)算符比較運(yùn)算符 含義= 等于> 大于< 小于

5、>= 大于等于<= 小于等于<> 不等于!> 不大于!< 不小于例:返回96年1月的定單SELECT OrderID, CustomerID, OrderDateFROM OrdersWHERE OrderDate>#1/1/96# AND OrderDate<#1/30/96#注意:Mcirosoft JET SQL 中,日期用#定界。日期也可以用Datevalue()函數(shù)來代替。在比較字符型的數(shù)據(jù)時(shí),要加上單引號(hào),尾空格在比較中被忽略。例:WHERE OrderDate>#96-1-1#也可以表示為:WHERE OrderDate>

6、;Datevalue(1/1/96)使用 NOT 表達(dá)式求反。例:查看96年1月1日以后的定單WHERE Not OrderDate<=#1/1/96#2 圍(BETWEEN 和 NOT BETWEEN)BETWEEN AND運(yùn)算符指定了要搜索的一個(gè)閉區(qū)間。例:返回96年1月到96年2月的定單。WHERE OrderDate Between #1/1/96# And #2/1/96#3 列表(IN ,NOT IN)IN 運(yùn)算符用來匹配列表中的任何一個(gè)值。IN子句可以代替用OR子句連接的一連串的條件。例:要找出住在 London、Paris或Berlin的所有客戶SELECT Custom

7、erID, CompanyName, ContactName, CityFROM CustomersWHERE City In(London, Paris, Berlin)4 模式匹配(LIKE)LIKE運(yùn)算符檢驗(yàn)一個(gè)包含字符串?dāng)?shù)據(jù)的字段值是否匹配一指定模式。LIKE運(yùn)算符里使用的通配符通配符 含義? 任何一個(gè)單一的字符* 任意長(zhǎng)度的字符# 09之間的單一數(shù)字字符列表 在字符列表里的任一值!字符列表 不在字符列表里的任一值- 指定字符圍,兩邊的值分別為其上下限例:返回郵政編碼在(171)555-0000到(171)555-9999之間的客戶SELECT CustomerID ,CompanyN

8、ame,City,PhoneFROM CustomersWHERE Phone Like (171)555-#LIKE運(yùn)算符的一些樣式與含義樣式 含義 不符合LIKE A* A后跟任意長(zhǎng)度的字符 Bc,c255LIKE5* 5*5 555LIKE5?5 5與5之間有任意一個(gè)字符 55,5wer5LIKE5#5 5235,5005 5kd5,5346LIKEa-z a-z間的任意一個(gè)字符 5,%LIKE!0-9 非0-9間的任意一個(gè)字符 0,1LIKE 1,*三 .用ORDER BY子句排序結(jié)果ORDER子句按一個(gè)或多個(gè)(最多16個(gè))字段排序查詢結(jié)果,可以是升序(ASC)也可以是降序(DESC)

9、,缺省是升序。ORDER子句通常放在SQL語句的最后。ORDER子句中定義了多個(gè)字段,則按照字段的先后順序排序。例:SELECT ProductName,UnitPrice, UnitInStockFROM ProductsORDER BY UnitInStock DESC , UnitPrice DESC, ProductNameORDER BY 子句中可以用字段在選擇列表中的位置號(hào)代替字段名,可以混合字段名和位置號(hào)。例:下面的語句產(chǎn)生與上列一樣的效果。SELECT ProductName,UnitPrice, UnitInStockFROM ProductsORDER BY 1 DESC

10、, 2 DESC,3四 .運(yùn)用連接關(guān)系實(shí)現(xiàn)多表查詢例:找出同一個(gè)城市中供應(yīng)商和客戶的名字SELECT Customers panyName, Suppliers Pany.NameFROM Customers, SuppliersWHERE Customers.City=Suppliers.City例:找出產(chǎn)品庫(kù)存量大于同一種產(chǎn)品的定單的數(shù)量的產(chǎn)品和定單SELECT ProductName,OrderID, UnitInStock, QuantityFROM Products, Order DeailsWHERE PductID=Order Details.ProductI

11、DAND UnitsInStock>Quantity另一種方法是用 Microsof JET SQL 獨(dú)有的 JNNER JOIN語法:FROM table1 INNER JOIN table2ON table1.field1 comparision table2.field2其中comparision 就是前面WHERE子句用到的比較運(yùn)算符。SELECT FirstName,lastName,OrderID,CustomerID,OrderDateFROM EmployeesINNER JOIN Orders ON Employees.EmployeeID=Orders.Employe

12、eID注意:INNER JOIN不能連接Memo OLE Object Single Double 數(shù)據(jù)類型字段。在一個(gè)JOIN語句中連接多個(gè)ON子句語法:SELECT fieldsFROM table1 INNER 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 (

13、table3INNER JOER ( tablexINNER JOINON table1.field1 compopr table2.field1ON table1.field2 compopr table2.field2ON table1.field3 compopr table2.field3外部連接返回更多記錄,在結(jié)果中保留不匹配的記錄,不管存不存在滿足條件的記錄都要返回另一側(cè)的所有記錄。FROM table LEFT|RIGHTJOIN table2ON table1.field1comparision table.field2用左連接來建立外部連接,在表達(dá)式的左邊的表會(huì)顯示其所有的數(shù)

14、據(jù)例:不管有沒有定貨量,返回所有商品SELECT ProductName ,OrderIDFROM ProductsLEFT JOIN Orders ON Products.PrductsID=Orders.ProductID右連接與左連接的差別在于:不管左側(cè)表里有沒有匹配的記錄,它都從左側(cè)表中返回所有記錄。例:如果想了解客戶的信息,并統(tǒng)計(jì)各個(gè)地區(qū)的客戶分布,這時(shí)可以用一個(gè)右連接,即使某個(gè)地區(qū)沒有客戶,也要返回客戶信息??罩挡粫?huì)相互匹配,可以通過外連接才能測(cè)試被連接的某個(gè)表的字段是否有空值。SELECT *FROM talbe1LEFT JOIN table2 ON table1.a=tabl

15、e2.c1 連接查詢中使用Iif函數(shù)實(shí)現(xiàn)以0值顯示空值Iif表達(dá)式: Iif(IsNull(Amount,0,Amout)例:無論定貨大于或小于¥50,都要返回一個(gè)標(biāo)志。Iif(Amount>50,?Big order?,?Small order?)五. 分組和總結(jié)查詢結(jié)果在SQL的語法里,GROUP BY和HAVING子句用來對(duì)數(shù)據(jù)進(jìn)行匯總。GROUP BY子句指明了按照哪幾個(gè)字段來分組,而將記錄分組后,用HAVING子句過濾這些記錄。GROUP BY 子句的語法SELECT fidldlistFROM tableWHERE criteriaGROUP BY groupfieldlis

16、t HAVING groupcriteria注:Microsoft Jet數(shù)據(jù)庫(kù) Jet 不能對(duì)備注或OLE對(duì)象字段分組。GROUP BY字段中的Null值以備分組但是不能被省略。在任何SQL合計(jì)函數(shù)中不計(jì)算Null值。GROUP BY子句后最多可以帶有十個(gè)字段,排序優(yōu)先級(jí)按從左到右的順序排列。例:在WA地區(qū)的雇員表中按頭銜分組后,找出具有同等頭銜的雇員數(shù)目大于1人的所有頭銜。SELECT Title ,Count(Title) as TotalFROM EmployeesWHERE Region = WAGROUP BY TitleHAVING Count(Title)>1JET SQ

17、L 中的聚積函數(shù)聚集函數(shù) 意義SUM ( ) 求和AVG ( ) 平均值COUNT ( ) 表達(dá)式中記錄的數(shù)目COUNT (* ) 計(jì)算記錄的數(shù)目MAX 最大值MIN 最小值VAR 方差STDEV 標(biāo)準(zhǔn)誤差FIRST 第一個(gè)值LAST 最后一個(gè)值六. 用Parameters聲明創(chuàng)建參數(shù)查詢Parameters聲明的語法:PARAMETERS name datatype,name datatype, 其中name 是參數(shù)的標(biāo)志符,可以通過標(biāo)志符引用參數(shù).Datatype說明參數(shù)的數(shù)據(jù)類型.使用時(shí)要把PARAMETERS 聲明置于任何其他語句之前.例:PARAMETERSLow price Cur

18、rency,Beginning datedatatimeSELECT OrderID ,OrderAmountFROM OrdersWHERE OrderAMount>low priceAND OrderDate>=Beginning date七. 功能查詢所謂功能查詢,實(shí)際上是一種操作查詢,它可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行快速高效的操作.它以選擇查詢?yōu)槟康?挑選出符合條件的數(shù)據(jù),再對(duì)數(shù)據(jù)進(jìn)行批處理.功能查詢包括更新查詢,刪除查詢,添加查詢,和生成表查詢.1 更新查詢UPDATE子句可以同時(shí)更改一個(gè)或多個(gè)表中的數(shù)據(jù).它也可以同時(shí)更改多個(gè)字段的值.更新查詢語法:UPDATE 表名SET 新值WHE

19、RE 準(zhǔn)則例:英國(guó)客戶的定貨量增加5%,貨運(yùn)量增加3%UPDATE OEDERSSET OrderAmount = OrderAmount *1.1Freight = Freight*1.03WHERE ShipCountry = UK2 刪除查詢DELETE子句可以使用戶刪除大量的過時(shí)的或冗于的數(shù)據(jù).注:刪除查詢的對(duì)象是整個(gè)記錄.DELETE子句的語法:DELETE 表名.*FROM 來源表WHERE 準(zhǔn)則例: 要?jiǎng)h除所有94年前的定單DELETE *FROM OrdersWHERE OrderData<#94-1-1#3 追加查詢INSERT子句可以將一個(gè)或一組記錄追加到一個(gè)或多個(gè)表

20、的尾部.INTO 子句指定接受新記錄的表valueS 關(guān)鍵字指定新記錄所包含的數(shù)據(jù)值.INSERT 子句的語法:INSETR INTO 目的表或查詢(字段1,字段2,)valueS(數(shù)值1,數(shù)值2,)例:增加一個(gè)客戶INSERT INTO Employees(FirstName,LastName,title)valueS(Harry,Washington,Trainee)4 生成表查詢可以一次性地把所有滿足條件的記錄拷貝到一新表中.通常制作記錄的備份或副本或作為報(bào)表的基礎(chǔ).SELECT INTO子句用來創(chuàng)建生成表查詢語法:SELECT 字段1,字段2,INTO 新表IN 外部數(shù)據(jù)庫(kù)FROM 來

21、源數(shù)據(jù)庫(kù)WHERE 準(zhǔn)則例:為定單制作一個(gè)存檔備份SELECT *INTO OrdersArchiveFROM Orders八. 聯(lián)合查詢UNION運(yùn)算可以把多個(gè)查詢的結(jié)果合并到一個(gè)結(jié)果集里顯示.UNION運(yùn)算的一般語法:表查詢1 UNION ALL查詢2 UNION 例:返回巴西所有供給商和客戶的名字和城市SELECT CompanyName,CityFROM SuppliersWHERE Country = BrazilUNIONSELECT CompanyName,CityFROM CustomersWHERE Country = Brazil注:缺省的情況下,UNION子句不返回重復(fù)的

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

23、ivotfieldIN(value1 ,value2,) Aggfounction指SQL聚積函數(shù),SELECT語句選擇作為標(biāo)題的的字段,GROUP BY 分組說明:Pivotfield 在查詢結(jié)果集中創(chuàng)建列標(biāo)題時(shí)用的字段或表達(dá)式,用可選的IN子句限制它的取值.value代表創(chuàng)建列標(biāo)題的固定值.例:顯示在1996年里每一季度每一位員工所接的定單的數(shù)目:TRANSFORM Count(OrderID)SELECT FirstName&&LastName AS FullNameFROM Employees INNER JOIN OrdersON Employees.EmployeeID = Orders.EmployeeIDWHERE DatePart(“yyyy”,OrderDate)= 1996GROUP BY FirstName&&LastNameORDER BY FirstName&&LastNamePOVOT DatePart(“q”,OrderDate)&季度十 .子查詢子查詢可以理解為 套查詢.子查詢是一個(gè)SELECT語句

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論