SQL常用基本語句及示例_第1頁
SQL常用基本語句及示例_第2頁
SQL常用基本語句及示例_第3頁
SQL常用基本語句及示例_第4頁
SQL常用基本語句及示例_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

SQL基本語句及示例1.SQLSELECT語句SELECT語句用于從表中選取數(shù)據(jù)。結(jié)果被存儲在一個結(jié)果表中(稱為結(jié)果集)。SQLSELECT語法SELECT列名稱FROM表名稱以及:SELECT*FROM表名稱注釋:SQL語句對大小寫不敏感。SELECT等效于select。SQLSELECT實例如需獲取名為"LastName"和"FirstName"的列的內(nèi)容(從名為"Persons"的數(shù)據(jù)庫表),請使用類似這樣的SELECT語句:SELECTLastName,FirstNameFROMPersons"Persons"表:IdLastNameFirstNameAddressCity1AdamsJohnOxfordStreetLondon2BushGeorgeFifthAvenueNewYork3CarterThomasChanganStreetBeijing結(jié)果:LastNameFirstNameAdamsJohnBushGeorgeCarterThomasSQLSELECT*實例現(xiàn)在我們希望從"Persons"表中選取所有的列。請使用符號*取代列的名稱,就像這樣:SELECT*FROMPersons提示:星號(*)是選取所有列的快捷方式。結(jié)果:IdLastNameFirstNameAddressCity1AdamsJohnOxfordStreetLondon2BushGeorgeFifthAvenueNewYork3CarterThomasChanganStreetBeijing2.SQLSELECTDISTINCT語句在表中,可能會包含重復值。這并不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。關(guān)鍵詞DISTINCT用于返回唯一不同的值。語法:SELECTDISTINCT列名稱FROM表名稱使用DISTINCT關(guān)鍵詞如果要從"Company"列中選取所有的值,我們需要使用SELECT語句:SELECTCompanyFROMOrders"Orders"表:CompanyOrderNumberIBM3532W3School2356Apple4698W3School6953結(jié)果:CompanyIBMW3SchoolAppleW3School請注意,在結(jié)果集中,W3School被列出了兩次。如需從Company"列中僅選取唯一不同的值,我們需要使用SELECTDISTINCT語句:SELECTDISTINCTCompanyFROMOrders結(jié)果:CompanyIBMW3SchoolApple現(xiàn)在,在結(jié)果集中,"W3School"僅被列出了一次。3.WHERE子句如需有條件地從表中選取數(shù)據(jù),可將WHERE子句添加到SELECT語句。語法SELECT列名稱FROM表名稱WHERE列運算符值下面的運算符可在WHERE子句中使用:操作符描述=等于<>不等于>大于<小于>=大于等于<=小于等于BETWEEN在某個范圍內(nèi)LIKE搜索某種模式注釋:在某些版本的SQL中,操作符<>可以寫為!=。使用WHERE子句如果只希望選取居住在城市"Beijing"中的人,我們需要向SELECT語句添加WHERE子句:SELECT*FROMPersonsWHERECity='Beijing'"Persons"表LastNameFirstNameAddressCityYearAdamsJohnOxfordStreetLondon1970BushGeorgeFifthAvenueNewYork1975CarterThomasChanganStreetBeijing1980GatesBillXuanwumen10Beijing1985結(jié)果:LastNameFirstNameAddressCityYearCarterThomasChanganStreetBeijing1980GatesBillXuanwumen10Beijing1985引號的使用請注意,我們在例子中的條件值周圍使用的是單引號。SQL使用單引號來環(huán)繞文本值(大部分數(shù)據(jù)庫系統(tǒng)也接受雙引號)。如果是數(shù)值,請不要使用引號。文本值:這是正確的:SELECT*FROMPersonsWHEREFirstName='Bush'這是錯誤的:SELECT*FROMPersonsWHEREFirstName=Bush數(shù)值:這是正確的:SELECT*FROMPersonsWHEREYear>1965這是錯誤的:SELECT*FROMPersonsWHEREYear>'1965'4.AND和OR運算符AND和OR可在WHERE子語句中把兩個或多個條件結(jié)合起來。如果第一個條件和第二個條件都成立,則AND運算符顯示一條記錄。如果第一個條件和第二個條件中只要有一個成立,則OR運算符顯示一條記錄。原始的表(用在例子中的):LastNameFirstNameAddressCityAdamsJohnOxfordStreetLondonBushGeorgeFifthAvenueNewYorkCarterThomasChanganStreetBeijingCarterWilliamXuanwumen10BeijingAND運算符實例使用AND來顯示所有姓為"Carter"并且名為"Thomas"的人:SELECT*FROMPersonsWHEREFirstName='Thomas'ANDLastName='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChanganStreetBeijingOR運算符實例使用OR來顯示所有姓為"Carter"或者名為"Thomas"的人:SELECT*FROMPersonsWHEREfirstname='Thomas'ORlastname='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChanganStreetBeijingCarterWilliamXuanwumen10Beijing結(jié)合AND和OR運算符我們也可以把AND和OR結(jié)合起來(使用圓括號來組成復雜的表達式):SELECT*FROMPersonsWHERE(FirstName='Thomas'ORFirstName='William')ANDLastName='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChanganStreetBeijingCarterWilliamXuanwumen10Beijing5.ORDERBY語句ORDERBY語句用于對結(jié)果集進行排序ORDERBY語句用于根據(jù)指定的列對結(jié)果集進行排序。ORDERBY語句默認按照升序?qū)τ涗涍M行排序。如果您希望按照降序?qū)τ涗涍M行排序,可以使用DESC關(guān)鍵字。原始的表(用在例子中的):Orders表:CompanyOrderNumberIBM3532W3School2356Apple4698W3School6953實例1以字母順序顯示公司名稱:SELECTCompany,OrderNumberFROMOrdersORDERBYCompany結(jié)果:CompanyOrderNumberApple4698IBM3532W3School6953W3School2356實例2以字母順序顯示公司名稱(Company),并以數(shù)字順序顯示順序號(OrderNumber):SELECTCompany,OrderNumberFROMOrdersORDERBYCompany,OrderNumber結(jié)果:CompanyOrderNumberApple4698IBM3532W3School2356W3School6953實例3以逆字母順序顯示公司名稱:SELECTCompany,OrderNumberFROMOrdersORDERBYCompanyDESC結(jié)果:CompanyOrderNumberW3School6953W3School2356IBM3532Apple4698實例4以逆字母順序顯示公司名稱,并以數(shù)字順序顯示順序號:SELECTCompany,OrderNumberFROMOrdersORDERBYCompanyDESC,OrderNumberASC結(jié)果:CompanyOrderNumberW3School2356W3School6953IBM3532Apple4698注意:在以上的結(jié)果中有兩個相等的公司名稱(W3School)。只有這一次,在第一列中有相同的值時,第二列是以升序排列的。如果第一列中有些值為nulls時,情況也是這樣的。6.INSERTINTO語句INSERTINTO語句用于向表格中插入新的行。語法INSERTINTO表名稱VALUES(值1,值2,....)我們也可以指定所要插入數(shù)據(jù)的列:INSERTINTOtable_name(列1,列2,...)VALUES(值1,值2,....)插入新的行"Persons"表:LastNameFirstNameAddressCityCarterThomasChanganStreetBeijingSQL語句:INSERTINTOPersonsVALUES('Gates','Bill','Xuanwumen10','Beijing')結(jié)果:LastNameFirstNameAddressCityCarterThomasChanganStreetBeijingGatesBillXuanwumen10Beijing在指定的列中插入數(shù)據(jù)"Persons"表:LastNameFirstNameAddressCityCarterThomasChanganStreetBeijingGatesBillXuanwumen10BeijingSQL語句:INSERTINTOPersons(LastName,Address)VALUES('Wilson','Champs-Elysees')結(jié)果:LastNameFirstNameAddressCityCarterThomasChanganStreetBeijingGatesBillXuanwumen10BeijingWilson

Champs-Elysees

7.DELETE語句DELETE語句用于刪除表中的行。語法DELETEFROM表名稱WHERE列名稱=值Person:LastNameFirstNameAddressCityGatesBillXuanwumen10BeijingWilsonFredZhongshan23Nanjing刪除某行"FredWilson"會被刪除:DELETEFROMPersonWHERELastName='Wilson'結(jié)果:LastNameFirstNameAddressCityGatesBillXuanwumen10Beijing刪除所有行可以在不刪除表的情況下刪除所有的行。這意味著表的結(jié)構(gòu)、屬性和索引都是完整的:DELETEFROMtable_name或者DELETE*FROMtable_nameSQL函數(shù)SQLAVG()語法SELECTAVG(column_name)FROMtable_nameSQLAVG()實例我們擁有下面這個"Orders"表:O_IdOrderDateOrderPriceCustomer12008/12/291000Bush22008/11/231600Carter32008/10/05700Bush42008/09/28300Bush52008/08/062000Adams62008/07/21100Carter例子1現(xiàn)在,我們希望計算"OrderPrice"字段的平均值。我們使用如下SQL語句:SELECTAVG(OrderPrice)ASOrderAverageFROMOrders結(jié)果集類似這樣:OrderAverage950例子2現(xiàn)在,我們希望找到OrderPrice值高于OrderPrice平均值的客戶。我們使用如下SQL語句:SELECTCustomerFROMOrdersWHEREOrderPrice>(SELECTAVG(OrderPrice)FROMOrders)結(jié)果集類似這樣:CustomerBushCarterAdamsSQLCOUNT()函數(shù)COUNT()函數(shù)返回匹配指定條件的行數(shù)。SQLCOUNT(column_name)語法COUNT(column_name)函數(shù)返回指定列的值的數(shù)目(NULL不計入):SELECTCOUNT(column_name)FROMtable_nameSQLCOUNT(*)語法COUNT(*)函數(shù)返回表中的記錄數(shù):SELECTCOUNT(*)FROMtable_nameSQLCOUNT(DISTINCTcolumn_name)語法COUNT(DISTINCTcolumn_name)函數(shù)返回指定列的不同值的數(shù)目:SELECTCOUNT(DISTINCTcolumn_name)FROMtable_name注釋:COUNT(DISTINCT)適用于ORACLE和MicrosoftSQLServer,但是無法用于MicrosoftAccess。SQLCOUNT(column_name)實例我們擁有下列"Orders"表:O_IdOrderDateOrderPriceCustomer12008/12/291000Bush22008/11/231600Carter32008/10/05700Bush42008/09/28300Bush52008/08/062000Adams62008/07/21100Carter現(xiàn)在,我們希望計算客戶"Carter"的訂單數(shù)。我們使用如下SQL語句:SELECTCOUNT(Customer)ASCustomerNilsenFROMOrdersWHERECustomer='Carter'以上SQL語句的結(jié)果是2,因為客戶Carter共有2個訂單:CustomerNilsen2SQLCOUNT(*)實例如果我們省略WHERE子句,比如這樣:SELECTCOUNT(*)ASNumberOfOrdersFROMOrders結(jié)果集類似這樣:NumberOfOrders6這是表中的總行數(shù)。SQLCOUNT(DISTINCTcolumn_name)實例現(xiàn)在,我們希望計算"Orders"表中不同客戶的數(shù)目。我們使用如下SQL語句:SELECTCOUNT(DISTINCTCustomer)ASNumberOfCustomersFROMOrders結(jié)果集類似這樣:NumberOfCustomers3這是"Orders"表中不同客戶(Bush,Carter和Adams)的數(shù)目。MAX()函數(shù)MAX函數(shù)返回一列中的最大值。NULL值不包括在計算中。注:同理MIN()函數(shù):返回一列中的最小值SQLMAX()語法SELECTMAX(column_name)FROMtable_name注釋:MIN和MAX也可用于文本列,以獲得按字母順序排列的最高或最低值。SQLMAX()實例我們擁有下面這個"Orders"表:O_IdOrderDateOrderPriceCustomer12008/12/291000Bush22008/11/231600Carter32008/10/05700Bush42008/09/28300Bush52008/08/062000Adams62008/07/21100Carter現(xiàn)在,我們希望查找"OrderPrice"列的最大值。我們使用如下SQL語句:SELECTMAX(OrderPrice)ASLargestOrderPriceFROMOrders結(jié)果集類似這樣:LargestOrderPrice2000SUM()函數(shù)SUM函數(shù)返回數(shù)值列的總數(shù)(總額)。SQLSUM()語法SELECTSUM(column_name)FROMtable_nameSQLSUM()實例我們擁有下面這個"Orders"表:O_IdOrderDateOrderPriceCustomer12008/12/291000Bush22008/11/231600Carter32008/10/05700Bush42008/09/28300Bush52008/08/062000Adams62008/07/21100Carter現(xiàn)在,我們希望查找"OrderPrice"字段的總數(shù)。我們使用如下SQL語句:SELECTSUM(OrderPrice)ASOrderTotalFROMOrders結(jié)果集類似這樣:OrderTotal5700GROUPBY語句合計函數(shù)(比如SUM)常常需要添加GROUPBY語句。GROUPBY語句用于結(jié)合合計函數(shù),根據(jù)一個或多個列對結(jié)果集進行分組。SQLGROUPBY語法SELECTcolumn_name,aggregate_function(column_name)FROMtable_nameWHEREcolumn_nameoperatorvalueGROUPBYcolumn_nameSQLGROUPBY實例我們擁有下面這個"Order

溫馨提示

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

評論

0/150

提交評論