SQL數(shù)據(jù)庫(kù)基本知識(shí)_第1頁(yè)
SQL數(shù)據(jù)庫(kù)基本知識(shí)_第2頁(yè)
SQL數(shù)據(jù)庫(kù)基本知識(shí)_第3頁(yè)
SQL數(shù)據(jù)庫(kù)基本知識(shí)_第4頁(yè)
SQL數(shù)據(jù)庫(kù)基本知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(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 是用于訪問(wèn)和處理數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)的計(jì)算機(jī)語(yǔ)言。什么是 SQL?· SQL 指結(jié)構(gòu)化查詢(xún)語(yǔ)言 · SQL 使我們有能力訪問(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)

2、建存儲(chǔ)過(guò)程 · SQL 可在數(shù)據(jù)庫(kù)中創(chuàng)建視圖 · SQL 可以設(shè)置表、存儲(chǔ)過(guò)程和視圖的權(quán)限 SQL 是一種標(biāo)準(zhǔn) - 但是.SQL 是一門(mén) ANSI 的標(biāo)準(zhǔn)計(jì)算機(jī)語(yǔ)言,用來(lái)訪問(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、INSE

3、RT、WHERE 等等)。注釋?zhuān)撼?SQL 標(biāo)準(zhǔn)之外,大部分 SQL 數(shù)據(jù)庫(kù)程序都擁有它們自己的私有擴(kuò)展!在您的網(wǎng)站中使用 SQL要?jiǎng)?chuàng)建發(fā)布數(shù)據(jù)庫(kù)中數(shù)據(jù)的網(wǎng)站,您需要以下要素:· RDBMS 數(shù)據(jù)庫(kù)程序(比如 MS Access, SQL Server, MySQL) · 服務(wù)器端腳本語(yǔ)言(比如 PHP 或 ASP) · SQL · HTML / CSS RDBMSRDBMS 指的是關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。RDBMS 是 SQL 的基礎(chǔ),同樣也是所有現(xiàn)代數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ),比如 MS SQL Server, IBM DB2, Oracle, MySQL 以

4、及 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ù)庫(kù)通常包含一個(gè)或多個(gè)表。每個(gè)表由一個(gè)名字標(biāo)識(shí)(例如“客戶(hù)”或者“訂單”)。表包含帶有數(shù)據(jù)的記錄(行)。下面的例子是一個(gè)名為 "Persons" 的表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York 3CarterThomasChangan StreetBeijing上面的表

5、包含三條記錄(每一條對(duì)應(yīng)一個(gè)人)和五個(gè)列(Id、姓、名、地址和城市)。SELECT語(yǔ)句SQL 語(yǔ)句您需要在數(shù)據(jù)庫(kù)上執(zhí)行的大部分工作都由 SQL 語(yǔ)句完成。下面的語(yǔ)句從表中選取 LastName 列的數(shù)據(jù):SELECT LastName FROM Persons結(jié)果集類(lèi)似這樣:LastNameAdamsBushCarter在本教程中,我們將為您講解各種不同的 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ì)服務(wù)器的相

6、同請(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ǔ)言 (DDL)。 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ù)

7、據(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ù) · CREATE TABLE - 創(chuàng)建新表 · ALTER TABLE - 變更(改變)數(shù)據(jù)庫(kù)表 · DROP TABLE - 刪除表 · CREATE INDEX - 創(chuàng)建索引(搜索鍵) ·

8、; DROP INDEX - 刪除索引 SQL SELECT 語(yǔ)句 本章講解 SELECT 和 SELECT * 語(yǔ)句。SQL SELECT 語(yǔ)句SELECT 語(yǔ)句用于從表中選取數(shù)據(jù)。結(jié)果被存儲(chǔ)在一個(gè)結(jié)果表中(稱(chēng)為結(jié)果集)。SQL SELECT 語(yǔ)法SELECT 列名稱(chēng) FROM 表名稱(chēng)以及:SELECT * FROM 表名稱(chēng)注釋?zhuān)篠QL 語(yǔ)句對(duì)大小寫(xiě)不敏感。SELECT 等效于 select。SQL SELECT 實(shí)例如需獲取名為 "LastName" 和 "FirstName" 的列的內(nèi)容(從名為 "Persons" 的數(shù)據(jù)庫(kù)表)

9、,請(qǐng)使用類(lèi)似這樣的 SELECT 語(yǔ)句:SELECT LastName,FirstName FROM Persons"Persons" 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York 3CarterThomasChangan StreetBeijing結(jié)果:LastNameFirstNameAdamsJohnBushGeorgeCarterThomasSQL SELECT * 實(shí)例現(xiàn)在我們希望從 "Persons" 表

10、中選取所有的列。請(qǐng)使用符號(hào) * 取代列的名稱(chēng),就像這樣:SELECT * FROM Persons提示:星號(hào)(*)是選取所有列的快捷方式。結(jié)果:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York 3CarterThomasChangan 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-R

11、ecord-Content、Move-To-Next-Record 等等。類(lèi)似這些編程函數(shù)不在本教程講解之列。如需學(xué)習(xí)通過(guò)函數(shù)調(diào)用訪問(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)使用 DISTINCT 關(guān)鍵詞如果要從 "Compan

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

13、IBMW3SchoolApple現(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ě)為 !=。使用

14、WHERE 子句如果只希望選取居住在城市 "Beijing" 中的人,我們需要向 SELECT 語(yǔ)句添加 WHERE 子句:SELECT * FROM Persons WHERE City='Beijing'"Persons" 表LastNameFirstNameAddressCityYearAdamsJohnOxford StreetLondon1970BushGeorgeFifth AvenueNew York 1975CarterThomasChangan StreetBeijing1980GatesBillXuanwumen 10

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

16、數(shù)值:這是正確的:SELECT * FROM Persons WHERE Year>1965這是錯(cuò)誤的:SELECT * FROM Persons WHERE Year>'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)算符顯示一條記錄。原始的表 (用在例子中的):LastNameFirs

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

18、tNameFirstNameAddressCityCarterThomasChangan StreetBeijingOR 運(yùn)算符實(shí)例使用 OR 來(lái)顯示所有姓為 "Carter" 或者名為 "Thomas" 的人:SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingCarterWilliamXuanwumen 10Be

19、ijing結(jié)合 AND 和 OR 運(yùn)算符我們也可以把 AND 和 OR 結(jié)合起來(lái)(使用圓括號(hào)來(lái)組成復(fù)雜的表達(dá)式):SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')AND LastName='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingCarterWilliamXuanwumen 10BeijingSQL ORDER BY 子句 ORDER BY 語(yǔ)句用于對(duì)結(jié)

20、果集進(jìn)行排序。ORDER BY 語(yǔ)句ORDER BY 語(yǔ)句用于根據(jù)指定的列對(duì)結(jié)果集進(jìn)行排序。ORDER BY 語(yǔ)句默認(rèn)按照升序?qū)τ涗涍M(jìn)行排序。如果您希望按照降序?qū)τ涗涍M(jìn)行排序,可以使用 DESC 關(guān)鍵字。原始的表 (用在例子中的):Orders 表:CompanyOrderNumberIBM3532W3School2356Apple4698W3School6953實(shí)例 1以字母順序顯示公司名稱(chēng):SELECT Company, OrderNumber FROM Orders ORDER BY Company結(jié)果:CompanyOrderNumberApple4698IBM3532W3School

21、6953W3School2356實(shí)例 2以字母順序顯示公司名稱(chēng)(Company),并以數(shù)字順序顯示順序號(hào)(OrderNumber):SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber結(jié)果:CompanyOrderNumberApple4698IBM3532W3School2356W3School6953實(shí)例 3以逆字母順序顯示公司名稱(chēng):SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC結(jié)果:CompanyOrderNumberW3Sch

22、ool6953W3School2356IBM3532Apple4698實(shí)例 4以逆字母順序顯示公司名稱(chēng),并以數(shù)字順序顯示順序號(hào):SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC結(jié)果:CompanyOrderNumberW3School2356W3School6953IBM3532Apple4698注意:在以上的結(jié)果中有兩個(gè)相等的公司名稱(chēng) (W3School)。只有這一次,在第一列中有相同的值時(shí),第二列是以升序排列的。如果第一列中有些值為 nulls 時(shí),情況也是這樣的。SQL INSER

23、T 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 StreetBeijingSQL 語(yǔ)句:INSERT INTO Persons VALUES ('Gates', 'Bil

24、l', 'Xuanwumen 10', 'Beijing')結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingGatesBillXuanwumen 10Beijing在指定的列中插入數(shù)據(jù)"Persons" 表:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingGatesBillXuanwumen 10BeijingSQL 語(yǔ)句:INSERT INTO Persons (LastName,

25、 Address) VALUES ('Wilson', 'Champs-Elysees')結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingGatesBillXuanwumen 10BeijingWilson Champs-Elysees SQL UPDATE 語(yǔ)句Update 語(yǔ)句Update 語(yǔ)句用于修改表中的數(shù)據(jù)。語(yǔ)法:UPDATE 表名稱(chēng) SET 列名稱(chēng) = 新值 WHERE 列名稱(chēng) = 某值Person:LastNameFirstNameAddressCi

26、tyGatesBillXuanwumen 10BeijingWilson Champs-Elysees 更新某一行中的一個(gè)列我們?yōu)?lastname 是 "Wilson" 的人添加 firstname:UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' 結(jié)果:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonFredChamps-Elysees 更新某一行中的若干列我

27、們會(huì)修改地址(address),并添加城市名稱(chēng)(city):UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'WHERE LastName = 'Wilson'結(jié)果:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonFredZhongshan 23NanjingDELETE 語(yǔ)句DELETE 語(yǔ)句用于刪除表中的行。語(yǔ)法DELETE FROM 表名稱(chēng) WHERE 列名稱(chēng) = 值Person:LastName

28、FirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonFredZhongshan 23Nanjing刪除某行"Fred Wilson" 會(huì)被刪除:DELETE FROM Person WHERE LastName = 'Wilson' 結(jié)果:LastNameFirstNameAddressCityGatesBillXuanwumen 10Beijing刪除所有行可以在不刪除表的情況下刪除所有的行。這意味著表的結(jié)構(gòu)、屬性和索引都是完整的:DELETE FROM table_name或者:DELETE * F

29、ROM table_nameSQL 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ǔ)法SELECT column_name(s)FROM table_nameLIMIT number例子SELECT *FROM PersonsLIMIT 5Oracl

30、e 語(yǔ)法SELECT column_name(s)FROM table_nameWHERE ROWNUM <= number例子SELECT *FROM PersonsWHERE ROWNUM <= 5原始的表 (用在例子中的):Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing4ObamaBarackPennsylvania AvenueWashingtonSQL

31、TOP 實(shí)例現(xiàn)在,我們希望從上面的 "Persons" 表中選取頭兩條記錄。我們可以使用下面的 SELECT 語(yǔ)句:SELECT TOP 2 * FROM Persons結(jié)果:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew YorkSQL TOP PERCENT 實(shí)例現(xiàn)在,我們希望從上面的 "Persons" 表中選取 50% 的記錄。我們可以使用下面的 SELECT 語(yǔ)句:SELECT TOP 50 PERCENT * FROM

32、Persons結(jié)果:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew YorkSQL LIKE 操作符LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。LIKE 操作符LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。SQL LIKE 操作符語(yǔ)法SELECT column_name(s)FROM table_nameWHERE column_name LIKE pattern原始的表 (用在例子中的):Persons 表:IdLastNameFirs

33、tNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingLIKE 操作符實(shí)例例子 1現(xiàn)在,我們希望從上面的 "Persons" 表中選取居住在以 "N" 開(kāi)始的城市里的人:我們可以使用下面的 SELECT 語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE 'N%'提示:"%" 可用于定義通配符(模式中缺少的字母)。結(jié)果集:IdL

34、astNameFirstNameAddressCity2BushGeorgeFifth AvenueNew York例子 2接下來(lái),我們希望從 "Persons" 表中選取居住在以 "g" 結(jié)尾的城市里的人:我們可以使用下面的 SELECT 語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE '%g'結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijing例子 3接下來(lái),我們希望從 "Persons" 表中選取居

35、住在包含 "lon" 的城市里的人:我們可以使用下面的 SELECT 語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE '%lon%'結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon例子 4通過(guò)使用 NOT 關(guān)鍵字,我們可以從 "Persons" 表中選取居住在不包含 "lon" 的城市里的人:我們可以使用下面的 SELECT 語(yǔ)句:SELECT * FROM PersonsWHERE City NOT LIKE

36、 '%lon%'結(jié)果集:IdLastNameFirstNameAddressCity2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingSQL 通配符在搜索數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),您可以使用 SQL 通配符。SQL 通配符在搜索數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),SQL 通配符可以替代一個(gè)或多個(gè)字符。SQL 通配符必須與 LIKE 運(yùn)算符一起使用。在 SQL 中,可使用以下通配符:通配符描述%替代一個(gè)或多個(gè)字符_僅替代一個(gè)字符charlist字符列中的任何單一字符charlist或者!charlist不在字符列中的任何單一字

37、符原始的表 (用在例子中的):Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing使用 % 通配符例子 1現(xiàn)在,我們希望從上面的 "Persons" 表中選取居住在以 "Ne" 開(kāi)始的城市里的人:我們可以使用下面的 SELECT 語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE 'Ne%'結(jié)果集:

38、IdLastNameFirstNameAddressCity2BushGeorgeFifth AvenueNew York例子 2接下來(lái),我們希望從 "Persons" 表中選取居住在包含 "lond" 的城市里的人:我們可以使用下面的 SELECT 語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE '%lond%'結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon使用 _ 通配符例子 1現(xiàn)在,我們希望從上面的 "Perso

39、ns" 表中選取名字的第一個(gè)字符之后是 "eorge" 的人:我們可以使用下面的 SELECT 語(yǔ)句:SELECT * FROM PersonsWHERE FirstName LIKE '_eorge'結(jié)果集:IdLastNameFirstNameAddressCity2BushGeorgeFifth AvenueNew York例子 2接下來(lái),我們希望從 "Persons" 表中選取的這條記錄的姓氏以 "C" 開(kāi)頭,然后是一個(gè)任意字符,然后是 "r",然后是任意字符,然后是 "

40、er":我們可以使用下面的 SELECT 語(yǔ)句:SELECT * FROM PersonsWHERE LastName LIKE 'C_r_er'結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijing使用 charlist 通配符例子 1現(xiàn)在,我們希望從上面的 "Persons" 表中選取居住的城市以 "A" 或 "L" 或 "N" 開(kāi)頭的人:我們可以使用下面的 SELECT 語(yǔ)句:SELECT * FROM

41、 PersonsWHERE City LIKE 'ALN%'結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York例子 2現(xiàn)在,我們希望從上面的 "Persons" 表中選取居住的城市不以 "A" 或 "L" 或 "N" 開(kāi)頭的人:我們可以使用下面的 SELECT 語(yǔ)句:SELECT * FROM PersonsWHERE City LIKE '!ALN%&#

42、39;結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijingSQL IN 操作符IN 操作符IN 操作符允許我們?cè)?WHERE 子句中規(guī)定多個(gè)值。SQL IN 語(yǔ)法SELECT column_name(s)FROM table_nameWHERE column_name IN (value1,value2,.)原始的表 (在實(shí)例中使用:)Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth Ave

43、nueNew York3CarterThomasChangan StreetBeijingIN 操作符實(shí)例現(xiàn)在,我們希望從上表中選取姓氏為 Adams 和 Carter 的人:我們可以使用下面的 SELECT 語(yǔ)句:SELECT * FROM PersonsWHERE LastName IN ('Adams','Carter')結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon3CarterThomasChangan StreetBeijingSQL BETWEEN 操作符BETWEEN

44、 操作符在 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 value2原始的表 (在實(shí)例中使用:)Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew Y

45、ork3CarterThomasChangan StreetBeijing4GatesBillXuanwumen 10BeijingBETWEEN 操作符實(shí)例如需以字母順序顯示介于 "Adams"(包括)和 "Carter"(不包括)之間的人,請(qǐng)使用下面的 SQL:SELECT * FROM PersonsWHERE LastNameBETWEEN 'Adams' AND 'Carter'結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2Bush

46、GeorgeFifth AvenueNew York重要事項(xiàng):不同的數(shù)據(jù)庫(kù)對(duì) BETWEEN.AND 操作符的處理方式是有差異的。某些數(shù)據(jù)庫(kù)會(huì)列出介于 "Adams" 和 "Carter" 之間的人,但不包括 "Adams" 和 "Carter" ;某些數(shù)據(jù)庫(kù)會(huì)列出介于 "Adams" 和 "Carter" 之間并包括 "Adams" 和 "Carter" 的人;而另一些數(shù)據(jù)庫(kù)會(huì)列出介于 "Adams" 和 &quo

47、t;Carter" 之間的人,包括 "Adams" ,但不包括 "Carter" 。所以,請(qǐng)檢查你的數(shù)據(jù)庫(kù)是如何處理 BETWEEN.AND 操作符的!實(shí)例 2如需使用上面的例子顯示范圍之外的人,請(qǐng)使用 NOT 操作符:SELECT * FROM PersonsWHERE LastNameNOT BETWEEN 'Adams' AND 'Carter'結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijing4GatesBillXuan

48、wumen 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_nameFROM table_nameAlias 實(shí)例: 使用表名稱(chēng)別名假設(shè)我們有兩個(gè)表分別是:"Persons" 和 "Product_Orders"。我們分別為它們指定別名 "p" 和

49、 "po"?,F(xiàn)在,我們希望列出 "John Adams" 的所有定單。我們可以使用下面的 SELECT 語(yǔ)句:SELECT po.OrderID, p.LastName, p.FirstNameFROM Persons AS p, Product_Orders AS poWHERE p.LastName='Adams' AND p.FirstName='John'不使用別名的 SELECT 語(yǔ)句:SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstNa

50、meFROM Persons, Product_OrdersWHERE Persons.LastName='Adams' AND Persons.FirstName='John'從上面兩條 SELECT 語(yǔ)句您可以看到,別名使查詢(xún)程序更易閱讀和書(shū)寫(xiě)。Alias 實(shí)例: 使用一個(gè)列名別名表 Persons:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingSQL:SEL

51、ECT LastName AS Family, FirstName AS NameFROM Persons結(jié)果:FamilyNameAdamsJohnBushGeorgeCarterThomasSQL JOIN SQL 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)。主鍵(Primary Key)是一個(gè)列,在這個(gè)列中的每一行的值都是唯一的。在表中,每個(gè)主鍵的值都是唯一的。這樣做的目的是在不重復(fù)每個(gè)表中的所有數(shù)據(jù)的情況下,把表間的數(shù)據(jù)交

52、叉捆綁在一起。請(qǐng)看 "Persons" 表:Id_PLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing請(qǐng)注意,"Id_P" 列是 Persons 表中的的主鍵。這意味著沒(méi)有兩行能夠擁有相同的 Id_P。即使兩個(gè)人的姓名完全相同,Id_P 也可以區(qū)分他們。接下來(lái)請(qǐng)看 "Orders" 表:Id_OOrderNoId_P17789532446783

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

54、s, OrdersWHERE Persons.Id_P = Orders.Id_P 結(jié)果集:LastNameFirstNameOrderNoAdamsJohn22456AdamsJohn24562CarterThomas77895CarterThomas44678SQL JOIN - 使用 Join除了上面的方法,我們也可以使用關(guān)鍵詞 JOIN 來(lái)從兩個(gè)表中獲取數(shù)據(jù)。如果我們希望列出所有人的定購(gòu),可以使用下面的 SELECT 語(yǔ)句:SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsINNER JOIN O

55、rdersON Persons.Id_P = Orders.Id_PORDER BY Persons.LastName結(jié)果集:LastNameFirstNameOrderNoAdamsJohn22456AdamsJohn24562CarterThomas77895CarterThomas44678不同的 SQL JOIN除了我們?cè)谏厦娴睦又惺褂玫?INNER JOIN(內(nèi)連接),我們還可以使用其他幾種連接。下面列出了您可以使用的 JOIN 類(lèi)型,以及它們之間的差異。· JOIN: 如果表中有至少一個(gè)匹配,則返回行 · LEFT JOIN: 即使右表中沒(méi)有匹配,也從左表返回所有的行 · RIGHT JOIN: 即使左表中沒(méi)有匹配,也從右表返回所有的行 · FULL JOIN: 只要其中一個(gè)表中存在匹配,就返回行 SQL INNER JOIN 關(guān)鍵字SQL INNER JOIN 關(guān)鍵字在表中存在至少一個(gè)匹配時(shí),INNER JOIN 關(guān)鍵字返回行。INNER JOIN 關(guān)鍵字語(yǔ)法SELECT column_

溫馨提示

  • 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)論