版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 精準(zhǔn)扶貧個(gè)人工作總結(jié)
- 小學(xué)常識(shí)教學(xué)工作計(jì)劃
- 蘇科版數(shù)學(xué)七年級(jí)下冊(cè)11.2《不等式的解集》聽評(píng)課記錄
- 股份轉(zhuǎn)讓合作協(xié)議書
- 托管班教師聘用合同范本
- 江蘇科技大學(xué)蘇州理工學(xué)院《數(shù)據(jù)庫(kù)原理與設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 華中科技大學(xué)《構(gòu)成設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江東方學(xué)院《小學(xué)數(shù)學(xué)課標(biāo)解讀與教材分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 粵教版七年級(jí)道德與法治下冊(cè)第八單元與法同行8.1法律保護(hù)我們聽課評(píng)課記錄
- 貴州工商職業(yè)學(xué)院《嵌入式系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 企業(yè)社會(huì)責(zé)任法律問題-深度研究
- 廣西南寧市2024-2025學(xué)年八年級(jí)上學(xué)期期末義務(wù)教育質(zhì)量檢測(cè)綜合道德與法治試卷(含答案)
- 梅大高速塌方災(zāi)害調(diào)查評(píng)估報(bào)告及安全警示學(xué)習(xí)教育
- 2025年供應(yīng)鏈管理培訓(xùn)課件
- 2025中智集團(tuán)招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 幼兒園2025年春季學(xué)期保教工作計(jì)劃
- 2025云南中煙再造煙葉限責(zé)任公司招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- DB13-T 6033-2024 半導(dǎo)體器件低濃度氫效應(yīng)試驗(yàn)方法
- 《保利公司簡(jiǎn)介》課件
- 中藥硬膏熱貼敷治療
- 醫(yī)保藥店員工培訓(xùn)管理制度
評(píng)論
0/150
提交評(píng)論