SQL-入門(mén)新手教程(重要)_第1頁(yè)
SQL-入門(mén)新手教程(重要)_第2頁(yè)
SQL-入門(mén)新手教程(重要)_第3頁(yè)
已閱讀5頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、SQL 是用于訪(fǎng)問(wèn)和處理數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)的計(jì)算機(jī)語(yǔ)言。 什么是 SQL ?? SQL 指結(jié)構(gòu)化查詢(xún)語(yǔ)言? SQL 使我們有能力訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)? SQL 是一種 ANSI 的標(biāo)準(zhǔn)計(jì)算機(jī)語(yǔ)言 編者注: ANSI ,美國(guó)國(guó)家標(biāo)準(zhǔn)化組織SQL 能做什么?? SQL 面向數(shù)據(jù)庫(kù)執(zhí)行查詢(xún)? SQL 可從數(shù)據(jù)庫(kù)取回?cái)?shù)據(jù)? SQL 可在數(shù)據(jù)庫(kù)中插入新的紀(jì)錄? SQL 可更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)? SQL 可從數(shù)據(jù)庫(kù)刪除記錄? SQL 可創(chuàng)立新數(shù)據(jù)庫(kù)? SQL 可在數(shù)據(jù)庫(kù)中創(chuàng)立新表? SQL 可在數(shù)據(jù)庫(kù)中創(chuàng)立存儲(chǔ)過(guò)程? SQL 可在數(shù)據(jù)庫(kù)中創(chuàng)立視圖? SQL 可以設(shè)置表、存儲(chǔ)過(guò)程和視圖的權(quán)限SQL 是一種標(biāo)準(zhǔn) - 但是 .S

2、QL 是一門(mén) ANSI 的標(biāo)準(zhǔn)計(jì)算機(jī)語(yǔ)言, 用來(lái)訪(fǎng)問(wèn)和操作數(shù)據(jù)庫(kù)系統(tǒng)。 SQL 語(yǔ)句用于取回和更新數(shù)據(jù)庫(kù)中 的數(shù)據(jù)。 SQL 可與數(shù)據(jù)庫(kù)程序協(xié)同工作, 比方 MS Access 、DB2 、Informix 、MS SQL Server 、Oracle 、 Sybase 以及其他數(shù)據(jù)庫(kù)系統(tǒng)。不幸地是, 存在著很多不同版本的 SQL 語(yǔ)言, 但是為了與 ANSI 標(biāo)準(zhǔn)相兼容, 它們必須以相似的方式共 同地來(lái)支持一些主要的關(guān)鍵詞比方 SELECT 、UPDATE 、DELETE 、 INSERT 、WHERE 等等。注釋?zhuān)?除了 SQL 標(biāo)準(zhǔn)之外,大局部 SQL 數(shù)據(jù)庫(kù)程序都擁有它們自己的私有擴(kuò)展

3、! 在您的網(wǎng)站中使用 SQL要?jiǎng)?chuàng)立發(fā)布數(shù)據(jù)庫(kù)中數(shù)據(jù)的網(wǎng)站,您需要以下要素:? RDBMS 數(shù)據(jù)庫(kù)程序比方 MS Access, SQL Server, MySQL? 效勞器端腳本語(yǔ)言比方 PHP 或 ASP ? SQL? HTML / CSSRDBMSRDBMS 指的是關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)RDBMS 是SQL的根底,同樣也是所有現(xiàn)代數(shù)據(jù)庫(kù)系統(tǒng)的根底,比方MS SQL Server, IBM DB2,Oracle, MySQL 以及 Microsoft Access 。RDBMS中的數(shù)據(jù)存儲(chǔ)在被稱(chēng)為表tables 的數(shù)據(jù)庫(kù)對(duì)象中。表是相關(guān)的數(shù)據(jù)項(xiàng)的集合,它由列和行組成。SQL語(yǔ)法數(shù)據(jù)庫(kù)表一個(gè)數(shù)據(jù)

4、庫(kù)通常包含一個(gè)或多個(gè)表。每個(gè)表由一個(gè)名字標(biāo)識(shí)例如客戶(hù)或者 訂單。表包含帶有數(shù)據(jù)的記錄行。下面的例子是一個(gè)名為"Persons" 的表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing上面的表包含三條記錄每一條對(duì)應(yīng)一個(gè)人和五個(gè)列Id、姓、名、地址和城市SQL語(yǔ)句您需要在數(shù)據(jù)庫(kù)上執(zhí)行的大局部工作都由SQL語(yǔ)句完成。下面的語(yǔ)句從表中選取LastName 列的數(shù)據(jù):I - SELECT

5、 LastName FROM Persons在本教程中,我們將為您講解各種不同的SQL語(yǔ)句重要事項(xiàng)一定要記住,SQL對(duì)大小寫(xiě)不敏感!SQL 語(yǔ)句后面的分號(hào)?某些數(shù)據(jù)庫(kù)系統(tǒng)要求在每條 SQL 命令的末端使用分號(hào)。在我們的教程中不使用分號(hào)。分號(hào)是在數(shù)據(jù)庫(kù)系統(tǒng)中分隔每條 SQL 語(yǔ)句的標(biāo)準(zhǔn)方法,這樣就可以在對(duì)效勞器的相同請(qǐng)求中執(zhí)行一條以 上的語(yǔ)句。如果您使用的是 MS Access 和 SQL Server 2000,那么不必在每條 SQL 語(yǔ)句之后使用分號(hào),不過(guò)某些數(shù)據(jù)庫(kù)軟件要求必須使用分號(hào)。SQL DML 和 DDL可以把 SQL 分為兩個(gè)局部:數(shù)據(jù)操作語(yǔ)言 (DML) 和 數(shù)據(jù)定義語(yǔ)言 (DD

6、L)SQL ( 結(jié)構(gòu)化查詢(xún)語(yǔ)言) 是用于執(zhí)行查詢(xún)的語(yǔ)法。 但是 SQL 語(yǔ)言也包含用于更新、 插入和刪除記錄的語(yǔ)法。查詢(xún)和更新指令構(gòu)成了SQL 的 DML 局部:? SELECT -從數(shù)據(jù)庫(kù)表中獲取數(shù)據(jù)? UPDATE -更新數(shù)據(jù)庫(kù)表中的數(shù)據(jù)? DELETE -從數(shù)據(jù)庫(kù)表中刪除數(shù)據(jù)? INSERT INTO- 向數(shù)據(jù)庫(kù)表中插入數(shù)據(jù)SQL 的數(shù)據(jù)定義語(yǔ)言 (DDL) 局部使我們有能力創(chuàng)立或刪除表格。我們也可以定義索引(鍵),規(guī)定表之 間的鏈接,以及施加表間的約束。SQL 中最重要的 DDL 語(yǔ)句 :CREATE DATABASE - 創(chuàng)立新數(shù)據(jù)庫(kù) ALTER DATABASE- 修改數(shù)據(jù)庫(kù)CRE

7、ATE TABLE - 創(chuàng)立新表ALTER TABLE- 變更(改變)數(shù)據(jù)庫(kù)表? DROP TABLE - 刪除表CREATE INDEX- 創(chuàng)立索引(搜索SQL SELECT語(yǔ)句本章講解 SELECT 和 SELECT * 語(yǔ)句SQL SELECT 語(yǔ)句SQL SELECT 語(yǔ)法rSELECT列名稱(chēng)FROM 表名稱(chēng)以及:SELECT * FROM 表名稱(chēng)注釋?zhuān)篠QL語(yǔ)句對(duì)大小寫(xiě)不敏感。SELECT等效于selectSQL SELECT 實(shí)例如需獲取名為 "LastName" 和"FirstName" 的列的內(nèi)容從名為 "Persons&quo

8、t;的數(shù)據(jù)庫(kù)表,請(qǐng)使用類(lèi)似這樣的 SELECT語(yǔ)句:SELECT LastName,FirstName FROM Persons"Persons"表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing結(jié)果:LastNameFirstNameAdamsJohnBushGeorgeCarterThomasSQL SELECT * 實(shí)例現(xiàn)在我們希望從 "Persons&quo

9、t; 表中選取所有的列請(qǐng)使用符號(hào)*取代列的名稱(chēng),就像這樣:SELECT * FROM Persons提示:星號(hào)(*)是選取所有列的快捷方式。結(jié)果:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing在結(jié)果集(result-set )中導(dǎo)航由SQL查詢(xún)程序獲得的結(jié)果被存放在一個(gè)結(jié)果集中。大多數(shù)數(shù)據(jù)庫(kù)軟件系統(tǒng)都允許使用編程函數(shù)在結(jié)果集中進(jìn)行導(dǎo)航, 比方:Move-To-First-Record 、Get-

10、Record-Content 、Move-To-Next-Record 等等。類(lèi)似這些編程函數(shù)不在本教程講解之列。如需學(xué)習(xí)通過(guò)函數(shù)調(diào)用訪(fǎng)問(wèn)數(shù)據(jù)的知識(shí),請(qǐng)?jiān)L問(wèn)我們的ADO教程和PHP教程。SQL SELECT DISTINCT 語(yǔ)句本章講解SELECT DISTINCT語(yǔ)句。SQL SELECT DISTINCT語(yǔ)句在表中,可能會(huì)包含重復(fù)值。這并不成問(wèn)題,不過(guò),有時(shí)您也許希望僅僅列出不同(distinct )的值。關(guān)鍵詞DISTINCT 用于返回唯一不同的值。語(yǔ)法:SELECT DISTINCT歹廿名稱(chēng)FROM 表名稱(chēng)j使用 DISTINCT 關(guān)鍵詞如果要從"Company"

11、 列中選取所有的值,我們需要使用 SELECT語(yǔ)句:I-""-""""SELECT Company FROM Orders"Orders"表:CompanyOrderNumberIBM3532W3School2356Apple4698W3School6953結(jié)果:CompanyIBMW3SchoolAppleW3School請(qǐng)注意,在結(jié)果集中,W3School被列出了兩次如需從Company" 列中僅選取唯一不同的值,我們需要使用SELECT DISTINCT 語(yǔ)句:SELECT DISTINCT Com

12、pany FROM Orders結(jié)果:現(xiàn)在,在結(jié)果集中,"W3School"僅被列出了一次SQL WHERE子句WHERE 子句用于規(guī)定選擇的標(biāo)準(zhǔn)。WHERE 子句如需有條件地從表中選取數(shù)據(jù),可將WHERE子句添加到SELECT語(yǔ)句語(yǔ)法SELECT列名稱(chēng)FROM表名稱(chēng) WHERE列運(yùn)算符值下面的運(yùn)算符可在 WHERE子句中使用:操作符描述=等于<>不等于>大于<小于>=大于等于<=小于等于BETWEEN在某個(gè)范圍內(nèi)LIKE搜索某種模式注釋?zhuān)涸谀承┌姹镜?SQL中,操作符 <> 可以寫(xiě)為!=如果只希望選取居住在城市"B

13、eijing"中的人,我們需要向SELECT語(yǔ)句添加WHERE子句:使用WHERE 子句SELECT * FROM Persons WHERE City='Beji ng'"Persons" 表LastNameFirstNameAddressCityYearAdamsJohnOxford StreetLondon1970BushGeorgeFifth AvenueNew York1975CarterThomasChangan StreetBeijing1980GatesBillXuanwumen 10Beijing1985結(jié)果:LastNameFi

14、rstNameAddressCityYearCarterThomasChangan StreetBeijing1980GatesBillXuanwumen 10Beijing1985引號(hào)的使用請(qǐng)注意,我們?cè)诶又械臈l件值周?chē)褂玫氖菃我?hào)。SQL使用單引號(hào)來(lái)環(huán)繞文本值大局部數(shù)據(jù)庫(kù)系統(tǒng)也接受雙引號(hào)。如果是 數(shù)值,請(qǐng)不要使用引號(hào)。文本值:r這是正確的:1SELECT * FROM Persons WHERE這是錯(cuò)誤的:FSELECT * FROM Persons WHEREFirstName='Bush'FirstName=Bush數(shù)值:這是正確的:SELECT * FROM Pe

15、rsons WHEREYear>1965:這是錯(cuò)誤的:SELECT * FROM Persons WHEREYear>'1965' SQL AND & OR運(yùn)算符AND 和OR運(yùn)算符用于基于一個(gè)以上的條件對(duì)記錄進(jìn)行過(guò)濾。AND 和OR運(yùn)算符AND和OR可在WHERE子語(yǔ)句中把兩個(gè)或多個(gè)條件結(jié)合起來(lái)。如果第一個(gè)條件和第二個(gè)條件都成立,那么AND運(yùn)算符顯示一條記錄。如果第一個(gè)條件和第二個(gè)條件中只要有一個(gè)成立,那么OR運(yùn)算符顯示一條記錄。原始的表用在例子中的:LastNameFirstNameAddressCityAdamsJohnOxford StreetLon

16、donBushGeorgeFifth AvenueNew YorkCarterThomasChangan StreetBeijingCarterWilliamXuanwumen 10BeijingAND運(yùn)算符實(shí)例使用AND來(lái)顯示所有姓為 "Carter" 并且名為"Thomas" 的人:SELECT * FROM Persons WHERE FirstName='Thomas'AND LastName='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan St

17、reetBeijingOR運(yùn)算符實(shí)例使用OR來(lái)顯示所有姓為"Carter"或者名為"Thomas" 的人:SELECT * FROM Persons WHERE firstname='Thomas'ORIastname='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingCarterWilliamXuanwumen 10Beijing結(jié)合AND 和OR運(yùn)算符我們也可以把 AND和OR結(jié)合起來(lái)(使用圓括號(hào)來(lái)組成復(fù)雜的表達(dá)式):SELE

18、CT * FROM Persons WHERE ( FirstName='Thomas'ORFirstName='William')AND LastName='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingCarterWilliamXuanwumen 10BeijingSQL ORDER BY子句ORDER BY 語(yǔ)句用于對(duì)結(jié)果集進(jìn)行排序。ORDER BY 語(yǔ)句ORDER BY語(yǔ)句用于根據(jù)指定的列對(duì)結(jié)果集進(jìn)行排序。ORDER BY語(yǔ)句默認(rèn)按照升序?qū)τ涗?/p>

19、進(jìn)行排序。如果您希望按照降序?qū)τ涗涍M(jìn)行排序,可以使用DESC關(guān)鍵字原始的表用在例子中的:Orders 表:CompanyOrderNumberIBM3532W3School2356Apple4698W3School6953實(shí)例1以字母順序顯示公司名稱(chēng):SELECT Company, OrderNumber FROM OrdersORDER BY Compa ny結(jié)果:CompanyOrderNumberr' “Apple4698IBM3532W3School6953W3School2356實(shí)例2以字母順序顯示公司名稱(chēng)(Company ),并以數(shù)字順序顯示順序號(hào)( OrderNumber

20、 )SELECT Company, OrderNumber FROM OrdersORDER BY Compa ny, OrderNumberI 結(jié)果:CompanyOrderNumberApple4698IBM3532W3School2356W3School6953實(shí)例3以逆字母順序顯示公司名稱(chēng):SELECT Company, OrderNumber FROM OrdersORDER BY Compa ny DESC nauaniBujiiimiiiBuJiiauuiai iuh iimi «ajimKimiBiM*! bin iujiibuhiiimbi jhim jiiiuku

21、iii liauiiHuJiiBMui inii jiiinanii結(jié)果:CompanyOrderNumber1W3School6953W3School2356IBM3532Apple4698實(shí)例4以逆字母順序顯示公司名稱(chēng),并以數(shù)字順序顯示順序號(hào):SELECT Company, OrderNumber FROM OrdersORDER BY Compa ny DESC,OrderNumber ASC結(jié)果:CompanyOrderNumberW3School2356W3School6953IBM3532Apple4698注意:在以上的結(jié)果中有兩個(gè)相等的公司名稱(chēng)W3School。只有這一次,在第一

22、列中有相同的值時(shí),第二列是以升序排列的。如果第一列中有些值為nulls時(shí),情況也是這樣的。SQL INSERT INTO 語(yǔ)句INSERT INTO 語(yǔ)句INSERT INTO 語(yǔ)句用于向表格中插入新的行。語(yǔ)法INSERT INTO 表名稱(chēng) VALUES ( 值 1,值 2,.)我們也可以指定所要插入數(shù)據(jù)的列:INSERT INTO table_name (歹廿 1,列 2,.) VALUES ( 值 1,值 2,.)插入新的行"Persons" 表:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingS

23、QL語(yǔ)句:INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingGatesBillXuanwumen 10Beijing在指定的列中插入數(shù)據(jù)"Persons" 表:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingGatesBi

24、llXuanwumen 10BeijingSQL語(yǔ)句:I一 "'. 一INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingGatesBillXuanwumen 10BeijingWilsonChamps-ElyseesSQL UPDATE語(yǔ)句Update 語(yǔ)句Update 語(yǔ)句用于修改表中的數(shù)據(jù)。語(yǔ)法:UPDATE表名稱(chēng)SET列

25、名稱(chēng)=新值 WHERE列名稱(chēng)=某值iPers on:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonChamps-Elysees更新某一行中的一個(gè)列我們?yōu)?lastname 是"Wilson"的人添加 firstnameUPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'結(jié)果:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilso

26、nFredChamps-Elysees更新某一行中的假設(shè)干列我們會(huì)修改地址address ,并添加城市名稱(chēng)city UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'WHERE LastName = 'Wilson'結(jié)果:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonFredZhongshan 23NanjingSQL DELETE 語(yǔ)句DELETE 語(yǔ)句DELETE語(yǔ)句用于刪除表中的行。語(yǔ)法DELE

27、TE FROM 表名稱(chēng) WHERE列名稱(chēng)=值Pers on:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonFredZhongshan 23Nanjing刪除某行"Fred Wilson" 會(huì)被刪除:DELETE FROM Person WHERE LastName = 'Wilson'LastNameFirstNameAddressCityGatesBillXuanwumen 10Beijing刪除所有行可以在不刪除表的情況下刪除所有的行。這意味著表的結(jié)構(gòu)、屬性和索引都是完整的:D

28、ELETE FROM table_name或者:DELETE * FROM table_nameSQL高級(jí)SQL TOP子句TOP子句TOP子句用于規(guī)定要返回的記錄的數(shù)目。對(duì)于擁有數(shù)千條記錄的大型表來(lái)說(shuō), TOP子句是非常有用的注釋?zhuān)翰⒎撬械臄?shù)據(jù)庫(kù)系統(tǒng)都支持 TOP子句。SQL Server的語(yǔ)法:SELECT TOP number|percent column_name(s)FROM table_nameMySQL 和 Oracle 中的 SQL SELECT TOP 是等價(jià)的MySQL 語(yǔ)法F"-""'.A""W." S

29、ELECT column_name(s)FROM table namejLIMIT number例子SELECTFROM PersonsLIMIT 5Oracle 語(yǔ)法SELECT column_name(s)FROM table nameWHERE ROWNUM <= number例子SELECTFROM PersonsWHERE ROWNUM <= 5原始的表用在例子中的:Persons 表:IdLastNameFirstNameAddressCity11AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3Ca

30、rterThomasChangan StreetBeijing4ObamaBarackPennsylvania AvenueWashingtonSQL TOP 實(shí)例現(xiàn)在,我們希望從上面的"Persons" 表中選取頭兩條記錄。我們可以使用下面的 SELECT語(yǔ)句:SELECT TOP 2 * FROM PersonsIdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew YorkSQL TOP PERCENT 實(shí)例現(xiàn)在,我們希望從上面的 "Perso

31、ns" 表中選取50% 的記錄我們可以使用下面的 SELECT語(yǔ)句:SELECT TOP 50 PERCENT * FROM Persons iiuuiiiibuiiiimiiiiBuJiibmuiii um iimi «!aju! boaujiii *! ujiibuhilaMaii結(jié)果:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew YorkSQL LIKE操作符LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。LIKE 操作符LIKE

32、操作符用于在 WHERE子句中搜索列中的指定模式。SQL 口KE 操作符語(yǔ)法SELECT column_name(s)fFROM table name一WHERE column_name LIKE patterni _ 原始的表(用在例子中的):Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingLIKE 操作符實(shí)例例子1現(xiàn)在,我們希望從上面的"Persons"

33、 表中選取居住在以"N"開(kāi)始的城市里的人:我們可以使用下面的 SELECT語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE 'N%':提示:""可用于定義通配符模式中缺少的字母結(jié)果集:IdLastNameFirstNameAddressCity2BushGeorgeFifth AvenueNew York例子2接下來(lái),我們希望從"Persons" 表中選取居住在以"g"結(jié)尾的城市里的人:我們可以使用下面的SELECT語(yǔ)句:SELECT * FROM PersonsWHE

34、RE City LIKE '%g':_結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijing例子3接下來(lái),我們希望從"Persons"表中選取居住在包含"Ion"的城市里的人:我們可以使用下面的SELECT語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE '%lon%'結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon例子4通過(guò)使用 NO

35、T關(guān)鍵字,我們可以從 "Persons"表中選取居住在不包含"lon"的城市里的人:我們可以使用下面的 SELECT語(yǔ)句:SELECT * FROM PersonsIWHERE City NOT l_l KE '%lon%'結(jié)果集:IdLastNameFirstNameAddressCity2BushGeorgeFifth AvenueNew Y ork3CarterThomasChangan StreetBeijingSQL通配符在搜索數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),您可以使用SQL通配符SQL通配符在搜索數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),SQL通配符可以替代一個(gè)或

36、多個(gè)字符SQL通配符必須與LIKE運(yùn)算符一起使用在SQL中,可使用以下通配符:通配符描述%替代一個(gè)或多個(gè)字符一僅替代一個(gè)字符charlist字符列中的任何單一字符Fcharlist不在字符列中的任何單一字符或者!charlist原始的表用在例子中的:Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing使用%通配符例子1現(xiàn)在,我們希望從上面的"Persons"表中

37、選取居住在以"Ne"開(kāi)始的城市里的人:我們可以使用下面的 SELECT語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE 'Ne%'結(jié)果集:IdLastNameFirstNameAddressCity2BushGeorgeFifth AvenueNew York例子2接下來(lái),我們希望從"Persons"表中選取居住在包含"lond" 的城市里的人:我們可以使用下面的 SELECT語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE '%lond%'結(jié)

38、果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon使用_通配符例子1現(xiàn)在,我們希望從上面的"Persons"表中選取名字的第一個(gè)字符之后是"eorge" 的人:我們可以使用下面的SELECT語(yǔ)句:SELECT * FROM PersonsWHERE FirstName l_l KE '_eorge' |_結(jié)果集:IdLastNameFirstNameAddressCity2BushGeorgeFifth AvenueNew York例子2接下來(lái),我們希望從 &quo

39、t;Persons"表中選取的這條記錄的姓氏以"C"開(kāi)頭,然后是一個(gè)任意字符,然后是"r",然后是任意字符,然后是 "er"我們可以使用下面的 SELECT語(yǔ)句:SELECT * FROM PersonsWHERE LastName LIKE 'C_r_er'結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijing使用charlist 通配符例子1現(xiàn)在,我們希望從上面的"Persons"表中選取居住的城市以 &

40、quot;A"或"L"或"N"開(kāi)頭的人:我們可以使用下面的 SELECT語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE 'ALN%'hiiBBiimuaiiubjiiiimiiiiBuJiiaudiiiiuibuhilmii11 iimi iiii結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York例子2現(xiàn)在,我們希望從上面的 "Persons"

41、; 表中選取居住的城市不以"A"或"L"或"N"開(kāi)頭的人:我們可以使用下面的SELECT語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE '!ALN%'I結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijingSQL IN操作符IN操作符IN操作符允許我們?cè)?WHERE子句中規(guī)定多個(gè)值。SQL IN 語(yǔ)法SELECT column_name(s)IFROM table_nameWHERE column_name

42、 IN (value1,value2,)原始的表(在實(shí)例中使用:)Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingIN操作符實(shí)例現(xiàn)在,我們希望從上表中選取姓氏為Adams 和Carter的人:我們可以使用下面的SELECT語(yǔ)句:SELECT * FROM Persons:WHERE LastName IN ('Adams','Carter')結(jié)果

43、集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon3CarterThomasChangan StreetBeijingSQL BETWEE操作符BETWEEN 操作符在WHERE 子句中使用,作用是選取介于兩個(gè)值之間的數(shù)據(jù)范圍。BETWEEN 操作符操作符BETWEEN . AND會(huì)選取介于兩個(gè)值之間的數(shù)據(jù)范圍。這些值可以是數(shù)值、文本或者日期。SQL BETWEEN 語(yǔ)法SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value

44、2原始的表(在實(shí)例中使用:)Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing4GatesBillXuanwumen 10BeijingBETWEEN操作符實(shí)例如需以字母順序顯示介于 "Adams"包括和"Carter"不包括之間的人,請(qǐng)使用下面的SQL :廠(chǎng).一“ .-SELECT * FROM PersonsWHERE LastName

45、BETWEENAdams'AND'Carter'結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York重要事項(xiàng):不同的數(shù)據(jù)庫(kù)對(duì)BETWEEN.AND操作符的處理方式是有差異的。某些數(shù)據(jù)庫(kù)會(huì)列出介于"Adams" 和"Carter" 之間的人,但不包括"Adams" 和"Carter"某些數(shù)據(jù)庫(kù)會(huì)列出介于"Adams"和"Carte

46、r" 之間并包括 "Adams" 和"Carter" 的人;而另一些數(shù)據(jù)庫(kù)會(huì)列出介于"Adams" 和"Carter"之間的人,包括 "Adams",但不包括 "Carter"。所以,請(qǐng)檢查你的數(shù)據(jù)庫(kù)是如何處理BETWEEN.AND 操作符的!實(shí)例2如需使用上面的例子顯示范圍之外的人,請(qǐng)使用NOT操作符:SELECT * FROM PersonsWHERE LastNameNOT BETWEEN 'Adams' AND 'Carter'

47、;i結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijing4GatesBillXuanwumen 10BeijingSQL Alias 別名通過(guò)使用SQL,可以為列名稱(chēng)和表名稱(chēng)指定別名 Alias SQL Alias表的SQL Alias 語(yǔ)法SELECT column_name(s)FROM table_nameAS alias name訂列的SQL Alias 語(yǔ)法SELECT column name AS alias name iFROM table_nameiAlias 實(shí)例:使用表名稱(chēng)別名假設(shè)我們有兩個(gè)

48、表分別是:"Persons" 和"Product_Orders"。我們分別為它們指定別名"p"和"po"現(xiàn)在,我們希望列出 "John Adams" 的所有定單。我們可以使用下面的 SELECT語(yǔ)句:廠(chǎng).SELECT po.OrderlD, p.LastName, p.FirstNameFROM Persons AS p ,Product_OrdersAS poiWHERE p.LastName='Adams'WHERE p.FirstName='John'不使用

49、別名的 SELECT語(yǔ)句:SELECT Product_Orders.OrderlD, Persons.LastName, Persons.FirstNameFROM Persons, Product_OrdersWHERE Persons.LastName='Hansen'!WHERE Persons.FirstName='Ola'i _從上面兩條SELECT語(yǔ)句您可以看到,別名使查詢(xún)程序更易閱讀和書(shū)寫(xiě)。Alias 實(shí)例:使用一個(gè)列名別名表 Persons:IdLastNameFirstNameAddressCity1AdamsJohnOxford Stree

50、tLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingSQL:SELECT LastName AS Family ,F(xiàn)irstName AS NameFROM Persons結(jié)果:FamilyNameAdamsJohnBushGeorgeCarterThomasSQL JOINSQL join用于根據(jù)兩個(gè)或多個(gè)表中的列之間的關(guān)系,從這些表中查詢(xún)數(shù)據(jù)。Join 和 Key有時(shí)為了得到完整的結(jié)果,我們需要從兩個(gè)或更多的表中獲取結(jié)果。我們就需要執(zhí)行join。數(shù)據(jù)庫(kù)中的表可通過(guò)鍵將彼此聯(lián)系起來(lái)。主鍵(Primar

51、y Key )是一個(gè)列,在這個(gè)列中的每一行的值都是唯一的。在表中,每個(gè)主鍵的值都是唯一的。這樣做的目的是在不重復(fù)每個(gè)表中的所有數(shù)據(jù)的情況下,把 表間的數(shù)據(jù)交叉捆綁在一起。請(qǐng)看"Persons"表:Id_PLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing請(qǐng)注意,"ld_P"列是Persons 表中的的主鍵。這意味著沒(méi)有兩行能夠擁有相同的ld_P。即使兩個(gè)人的姓名完

52、全相同,Id_P也可以區(qū)分他們。接下來(lái)請(qǐng)看"Orders" 表:Id_OOrderNoId_P177895324467833224561424562153476465請(qǐng)注意,"Id_O" 列是Orders 表中的的主鍵,同時(shí),"Orders" 表中的"Id_P" 列用于引用"Persons" 表中的人,而無(wú)需使用他們確實(shí)切姓名。請(qǐng)留意,"Id_P"列把上面的兩個(gè)表聯(lián)系了起來(lái)。引用兩個(gè)表我們可以通過(guò)引用兩個(gè)表的方式,從兩個(gè)表中獲取數(shù)據(jù):誰(shuí)訂購(gòu)了產(chǎn)品,并且他們訂購(gòu)了什么產(chǎn)品?SE

53、LECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM Persons, OrdersWHERE Persons.Id_P = Orders.Id_P結(jié)果集:LastNameFirstNameOrderNoAdamsJohn22456AdamsJohn24562CarterThomas77895CarterThomas44678SQL JOIN - 使用 Join除了上面的方法,我們也可以使用關(guān)鍵詞JOIN來(lái)從兩個(gè)表中獲取數(shù)據(jù)。如果我們希望列出所有人的定購(gòu),可以使用下面的SELECT語(yǔ)句:j'*''nSELECT Persons.LastName, Persons.FirstName, Orders.OrderNo!|FROM PersonsiiINNER JOIN OrdersON Persons.Id P = Orders.Id P一 一ORDER BY Persons.LastName結(jié)果集:LastNameFirstNameOrderNoAdamsJohn22456AdamsJohn24562CarterThomas77895CarterThomas44678不同的SQL JOIN除了我們?cè)谏厦娴睦又惺褂玫腎NNER JOIN 內(nèi)連接,我們還可以其他幾種連接。下

溫馨提示

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

評(píng)論

0/150

提交評(píng)論