sql語句的增刪改查_第1頁
sql語句的增刪改查_第2頁
sql語句的增刪改查_第3頁
sql語句的增刪改查_第4頁
sql語句的增刪改查_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、SQL 教程· Next PageSQL 是用于訪問和處理數(shù)據(jù)庫的標準的計算機語言。在本教程中,您將學(xué)到如何使用 SQL 訪問和處理數(shù)據(jù)系統(tǒng)中的數(shù)據(jù),這類數(shù)據(jù)庫包括:Oracle, Sybase, SQL Server, DB2, Access 等等。開始學(xué)習 SQL !注:本教程中出現(xiàn)的姓名、地址等信息僅供教學(xué),與實際情況無關(guān)。SQL 測驗在 W3School 測試你的 SQL 技能!開始 SQL 測驗 !SQL 簡介· Previous Page· Next PageSQL 是用于訪問和處理數(shù)據(jù)庫的標準的計算機語言。什么是 SQL?· SQL 指結(jié)構(gòu)

2、化查詢語言· SQL 使我們有能力訪問數(shù)據(jù)庫· SQL 是一種 ANSI 的標準計算機語言編者注:ANSI,美國國家標準化組織SQL 能做什么?· SQL 面向數(shù)據(jù)庫執(zhí)行查詢· SQL 可從數(shù)據(jù)庫取回數(shù)據(jù)· SQL 可在數(shù)據(jù)庫中插入新的紀錄· SQL 可更新數(shù)據(jù)庫中的數(shù)據(jù)· SQL 可從數(shù)據(jù)庫刪除記錄· SQL 可創(chuàng)建新數(shù)據(jù)庫· SQL 可在數(shù)據(jù)庫中創(chuàng)建新表· SQL 可在數(shù)據(jù)庫中創(chuàng)建存儲過程· SQL 可在數(shù)據(jù)庫中創(chuàng)建視圖· SQL 可以設(shè)置表、存儲過程和視圖的權(quán)限SQL

3、是一種標準 - 但是.SQL 是一門 ANSI 的標準計算機語言,用來訪問和操作數(shù)據(jù)庫系統(tǒng)。SQL 語句用于取回和更新數(shù)據(jù)庫中的數(shù)據(jù)。SQL 可與數(shù)據(jù)庫程序協(xié)同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他數(shù)據(jù)庫系統(tǒng)。推薦精選不幸地是,存在著很多不同版本的 SQL 語言,但是為了與 ANSI 標準相兼容,它們必須以相似的方式共同地來支持一些主要的關(guān)鍵詞(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。注釋:除了 SQL 標準之外,大部分 SQL 數(shù)據(jù)庫程序都擁有它們自己的私有擴展!在您

4、的網(wǎng)站中使用 SQL要創(chuàng)建發(fā)布數(shù)據(jù)庫中數(shù)據(jù)的網(wǎng)站,您需要以下要素:· RDBMS 數(shù)據(jù)庫程序(比如 MS Access, SQL Server, MySQL)· 服務(wù)器端腳本語言(比如 PHP 或 ASP)· SQL· HTML / CSSRDBMSRDBMS 指的是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。RDBMS 是 SQL 的基礎(chǔ),同樣也是所有現(xiàn)代數(shù)據(jù)庫系統(tǒng)的基礎(chǔ),比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。RDBMS 中的數(shù)據(jù)存儲在被稱為表(tables)的數(shù)據(jù)庫對象中。表是相關(guān)的數(shù)據(jù)項

5、的集合,它由列和行組成。·SQL 語法· Previous Page· Next Page數(shù)據(jù)庫表一個數(shù)據(jù)庫通常包含一個或多個表。每個表由一個名字標識(例如“客戶”或者“訂單”)。表包含帶有數(shù)據(jù)的記錄(行)。下面的例子是一個名為 "Persons" 的表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing上面的表包含三條記錄(每一條對應(yīng)一個人)和五個

6、列(Id、姓、名、地址和城市)。SQL 語句您需要在數(shù)據(jù)庫上執(zhí)行的大部分工作都由 SQL 語句完成。推薦精選下面的語句從表中選取 LastName 列的數(shù)據(jù):SELECT LastName FROM Persons結(jié)果集類似這樣:LastNameAdamsBushCarter在本教程中,我們將為您講解各種不同的 SQL 語句。重要事項一定要記住,SQL 對大小寫不敏感!SQL 語句后面的分號?某些數(shù)據(jù)庫系統(tǒng)要求在每條 SQL 命令的末端使用分號。在我們的教程中不使用分號。分號是在數(shù)據(jù)庫系統(tǒng)中分隔每條 SQL 語句的標準方法,這樣就可以在對服務(wù)器的相同請求中執(zhí)行一條以上的語句。如果您使用的是 M

7、S Access 和 SQL Server 2000,則不必在每條 SQL 語句之后使用分號,不過某些數(shù)據(jù)庫軟件要求必須使用分號。SQL DML 和 DDL可以把 SQL 分為兩個部分:數(shù)據(jù)操作語言 (DML) 和 數(shù)據(jù)定義語言 (DDL)。SQL (結(jié)構(gòu)化查詢語言)是用于執(zhí)行查詢的語法。但是 SQL 語言也包含用于更新、插入和刪除記錄的語法。查詢和更新指令構(gòu)成了 SQL 的 DML 部分:· SELECT - 從數(shù)據(jù)庫表中獲取數(shù)據(jù)· UPDATE - 更新數(shù)據(jù)庫表中的數(shù)據(jù)· DELETE - 從數(shù)據(jù)庫表中刪除數(shù)據(jù)· INSERT INTO - 向數(shù)據(jù)庫

8、表中插入數(shù)據(jù)SQL 的數(shù)據(jù)定義語言 (DDL) 部分使我們有能力創(chuàng)建或刪除表格。我們也可以定義索引(鍵),規(guī)定表之間的鏈接,以及施加表間的約束。SQL 中最重要的 DDL 語句:· CREATE DATABASE - 創(chuàng)建新數(shù)據(jù)庫· ALTER DATABASE - 修改數(shù)據(jù)庫· CREATE TABLE - 創(chuàng)建新表· ALTER TABLE - 變更(改變)數(shù)據(jù)庫表推薦精選· DROP TABLE - 刪除表· CREATE INDEX - 創(chuàng)建索引(搜索鍵)· DROP INDEX - 刪除索引SQL SELECT 語

9、句· Previous Page· Next Page本章講解 SELECT 和 SELECT * 語句。SQL SELECT 語句SELECT 語句用于從表中選取數(shù)據(jù)。結(jié)果被存儲在一個結(jié)果表中(稱為結(jié)果集)。SQL SELECT 語法SELECT 列名稱 FROM 表名稱以及:SELECT * FROM 表名稱注釋:SQL 語句對大小寫不敏感。SELECT 等效于 select。SQL SELECT 實例如需獲取名為 "LastName" 和 "FirstName" 的列的內(nèi)容(從名為 "Persons" 的數(shù)據(jù)

10、庫表),請使用類似這樣的 SELECT 語句:SELECT LastName,FirstName FROM Persons"Persons" 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing結(jié)果:LastNameFirstNameAdamsJohn推薦精選BushGeorgeCarterThomasSQL SELECT * 實例現(xiàn)在我們希望從 "Persons&q

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

12、Get-Record-Content、Move-To-Next-Record 等等。類似這些編程函數(shù)不在本教程講解之列。如需學(xué)習通過函數(shù)調(diào)用訪問數(shù)據(jù)的知識,請訪問我們的 ADO 教程 和PHP 教程。SQL SELECT DISTINCT 語句· Previous Page· Next Page本章講解 SELECT DISTINCT 語句。SQL SELECT DISTINCT 語句在表中,可能會包含重復(fù)值。這并不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。關(guān)鍵詞 DISTINCT 用于返回唯一不同的值。語法:SELECT DISTINCT 列名稱

13、FROM 表名稱使用 DISTINCT 關(guān)鍵詞如果要從 "Company" 列中選取所有的值,我們需要使用 SELECT 語句:推薦精選SELECT Company FROM Orders"Orders"表:CompanyOrderNumberIBM3532W3School2356Apple4698W3School6953結(jié)果:CompanyIBMW3SchoolAppleW3School請注意,在結(jié)果集中,W3School 被列出了兩次。如需從 Company" 列中僅選取唯一不同的值,我們需要使用 SELECT DISTINCT 語句:SE

14、LECT DISTINCT Company FROM Orders結(jié)果:CompanyIBMW3SchoolApple現(xiàn)在,在結(jié)果集中,"W3School" 僅被列出了一次。SQL SELECT DISTINCT 語句· Previous Page· Next Page本章講解 SELECT DISTINCT 語句。SQL SELECT DISTINCT 語句在表中,可能會包含重復(fù)值。這并不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。推薦精選關(guān)鍵詞 DISTINCT 用于返回唯一不同的值。語法:SELECT DISTINCT 列名稱

15、 FROM 表名稱使用 DISTINCT 關(guān)鍵詞如果要從 "Company" 列中選取所有的值,我們需要使用 SELECT 語句:SELECT Company FROM Orders"Orders"表:CompanyOrderNumberIBM3532W3School2356Apple4698W3School6953結(jié)果:CompanyIBMW3SchoolAppleW3School請注意,在結(jié)果集中,W3School 被列出了兩次。如需從 Company" 列中僅選取唯一不同的值,我們需要使用 SELECT DISTINCT 語句:SELEC

16、T DISTINCT Company FROM Orders結(jié)果:CompanyIBMW3SchoolApple現(xiàn)在,在結(jié)果集中,"W3School" 僅被列出了一次。推薦精選SQL AND & OR 運算符· Previous Page· Next PageAND 和 OR 運算符用于基于一個以上的條件對記錄進行過濾。AND 和 OR 運算符AND 和 OR 可在 WHERE 子語句中把兩個或多個條件結(jié)合起來。如果第一個條件和第二個條件都成立,則 AND 運算符顯示一條記錄。如果第一個條件和第二個條件中只要有一個成立,則 OR 運算符顯示一條記

17、錄。原始的表 (用在例子中的):LastNameFirstNameAddressCityAdamsJohnOxford StreetLondonBushGeorgeFifth AvenueNew YorkCarterThomasChangan StreetBeijingCarterWilliamXuanwumen 10BeijingAND 運算符實例使用 AND 來顯示所有姓為 "Carter" 并且名為 "Thomas" 的人:SELECT * FROM Persons WHERE FirstName='Thomas' AND Last

18、Name='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingOR 運算符實例使用 OR 來顯示所有姓為 "Carter" 或者名為 "Thomas" 的人:SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'結(jié)果:推薦精選LastNameFirstNameAddressCityCarterThomasChangan StreetBei

19、jingCarterWilliamXuanwumen 10Beijing結(jié)合 AND 和 OR 運算符我們也可以把 AND 和 OR 結(jié)合起來(使用圓括號來組成復(fù)雜的表達式):SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')AND LastName='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingCarterWilliamXuanwumen 10Beijing

20、SQL AND & OR 運算符· Previous Page· Next PageAND 和 OR 運算符用于基于一個以上的條件對記錄進行過濾。AND 和 OR 運算符AND 和 OR 可在 WHERE 子語句中把兩個或多個條件結(jié)合起來。如果第一個條件和第二個條件都成立,則 AND 運算符顯示一條記錄。如果第一個條件和第二個條件中只要有一個成立,則 OR 運算符顯示一條記錄。原始的表 (用在例子中的):LastNameFirstNameAddressCityAdamsJohnOxford StreetLondonBushGeorgeFifth AvenueNew

21、York推薦精選CarterThomasChangan StreetBeijingCarterWilliamXuanwumen 10BeijingAND 運算符實例使用 AND 來顯示所有姓為 "Carter" 并且名為 "Thomas" 的人:SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingOR 運算符實例使

22、用 OR 來顯示所有姓為 "Carter" 或者名為 "Thomas" 的人:SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingCarterWilliamXuanwumen 10Beijing結(jié)合 AND 和 OR 運算符我們也可以把 AND 和 OR 結(jié)合起來(使用圓括號來組成復(fù)雜的表達式):SELECT * F

23、ROM Persons WHERE (FirstName='Thomas' OR FirstName='William')AND LastName='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingCarterWilliamXuanwumen 10Beijing推薦精選SQL INSERT INTO 語句· Previous Page· Next PageINSERT INTO 語句INSERT INTO 語句用于向表格中插入新的行。

24、語法INSERT INTO 表名稱 VALUES (值1, 值2,.)我們也可以指定所要插入數(shù)據(jù)的列:INSERT INTO table_name (列1, 列2,.) VALUES (值1, 值2,.)插入新的行"Persons" 表:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingSQL 語句:INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

25、結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingGatesBillXuanwumen 10Beijing在指定的列中插入數(shù)據(jù)"Persons" 表:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingGatesBillXuanwumen 10BeijingSQL 語句:INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-El

26、ysees')推薦精選結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingGatesBillXuanwumen 10BeijingWilson Champs-Elysees ·SQL UPDATE 語句· Previous Page· Next PageUpdate 語句Update 語句用于修改表中的數(shù)據(jù)。語法:UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值Person:LastNameFirstNameAddressCityGatesBillXua

27、nwumen 10BeijingWilson Champs-Elysees 更新某一行中的一個列我們?yōu)?lastname 是 "Wilson" 的人添加 firstname:UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'結(jié)果:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonFredChamps-Elysees 更新某一行中的若干列推薦精選我們會修改地址(address),并添加城市名稱(ci

28、ty):UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'WHERE LastName = 'Wilson'結(jié)果:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonFredZhongshan 23NanjingSQL DELETE 語句· Previous Page· Next PageDELETE 語句DELETE 語句用于刪除表中的行。語法DELETE FROM 表名稱 WHERE

29、 列名稱 = 值Person:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonFredZhongshan 23Nanjing刪除某行"Fred Wilson" 會被刪除:DELETE FROM Person WHERE LastName = 'Wilson'結(jié)果:LastNameFirstNameAddressCityGatesBillXuanwumen 10Beijing刪除所有行可以在不刪除表的情況下刪除所有的行。這意味著表的結(jié)構(gòu)、屬性和索引都是完整的:推薦精選DELETE FR

30、OM table_name或者:DELETE * FROM table_nameSQL TOP 子句· Previous Page· Next PageTOP 子句TOP 子句用于規(guī)定要返回的記錄的數(shù)目。對于擁有數(shù)千條記錄的大型表來說,TOP 子句是非常有用的。注釋:并非所有的數(shù)據(jù)庫系統(tǒng)都支持 TOP 子句。SQL Server 的語法:SELECT TOP number|percent column_name(s)FROM table_nameMySQL 和 Oracle 中的 SQL SELECT TOP 是等價的MySQL 語法SELECT column_name(s

31、)FROM table_nameLIMIT number例子SELECT *FROM PersonsLIMIT 5推薦精選Oracle 語法SELECT column_name(s)FROM table_nameWHERE ROWNUM <= number例子SELECT *FROM PersonsWHERE ROWNUM <= 5原始的表 (用在例子中的):Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomas

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

33、ot; 表中選取 50% 的記錄。我們可以使用下面的 SELECT 語句:SELECT TOP 50 PERCENT * FROM Persons結(jié)果:推薦精選IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew YorkSQL LIKE 操作符· Previous Page· Next PageLIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。LIKE 操作符LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。SQL LIKE 操作符

34、語法SELECT column_name(s)FROM table_nameWHERE column_name LIKE pattern原始的表 (用在例子中的):Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingLIKE 操作符實例例子 1現(xiàn)在,我們希望從上面的 "Persons" 表中選取居住在以 "N" 開始的城市里的人:我們可以使用

35、下面的 SELECT 語句:SELECT * FROM PersonsWHERE City LIKE 'N%'提示:"%" 可用于定義通配符(模式中缺少的字母)。推薦精選結(jié)果集:IdLastNameFirstNameAddressCity2BushGeorgeFifth AvenueNew York例子 2接下來,我們希望從 "Persons" 表中選取居住在以 "g" 結(jié)尾的城市里的人:我們可以使用下面的 SELECT 語句:SELECT * FROM PersonsWHERE City LIKE '%g&#

36、39;結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijing例子 3接下來,我們希望從 "Persons" 表中選取居住在包含 "lon" 的城市里的人:我們可以使用下面的 SELECT 語句:SELECT * FROM PersonsWHERE City LIKE '%lon%'結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon例子 4通過使用 NOT 關(guān)鍵字,我們可以從 &quo

37、t;Persons" 表中選取居住在不包含 "lon" 的城市里的人:我們可以使用下面的 SELECT 語句:SELECT * FROM PersonsWHERE City NOT LIKE '%lon%'結(jié)果集:IdLastNameFirstNameAddressCity推薦精選2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingSQL 通配符· Previous Page· Next Page在搜索數(shù)據(jù)庫中的數(shù)據(jù)時,您可以使用 SQL 通配符。SQ

38、L 通配符在搜索數(shù)據(jù)庫中的數(shù)據(jù)時,SQL 通配符可以替代一個或多個字符。SQL 通配符必須與 LIKE 運算符一起使用。在 SQL 中,可使用以下通配符:通配符描述%替代一個或多個字符_僅替代一個字符charlist字符列中的任何單一字符charlist或者!charlist不在字符列中的任何單一字符原始的表 (用在例子中的):Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing使

39、用 % 通配符推薦精選例子 1現(xiàn)在,我們希望從上面的 "Persons" 表中選取居住在以 "Ne" 開始的城市里的人:我們可以使用下面的 SELECT 語句:SELECT * FROM PersonsWHERE City LIKE 'Ne%'結(jié)果集:IdLastNameFirstNameAddressCity2BushGeorgeFifth AvenueNew York例子 2接下來,我們希望從 "Persons" 表中選取居住在包含 "lond" 的城市里的人:我們可以使用下面的 SELECT

40、語句:SELECT * FROM PersonsWHERE City LIKE '%lond%'結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon使用 _ 通配符例子 1現(xiàn)在,我們希望從上面的 "Persons" 表中選取名字的第一個字符之后是 "eorge" 的人:我們可以使用下面的 SELECT 語句:SELECT * FROM PersonsWHERE FirstName LIKE '_eorge'結(jié)果集:IdLastNameFirstNam

41、eAddressCity2BushGeorgeFifth AvenueNew York例子 2推薦精選接下來,我們希望從 "Persons" 表中選取的這條記錄的姓氏以 "C" 開頭,然后是一個任意字符,然后是 "r",然后是任意字符,然后是 "er":我們可以使用下面的 SELECT 語句:SELECT * FROM PersonsWHERE LastName LIKE 'C_r_er'結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan S

42、treetBeijing使用 charlist 通配符例子 1現(xiàn)在,我們希望從上面的 "Persons" 表中選取居住的城市以 "A" 或 "L" 或 "N" 開頭的人:我們可以使用下面的 SELECT 語句:SELECT * FROM PersonsWHERE City LIKE 'ALN%'結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York例子 2現(xiàn)在,我們希

43、望從上面的 "Persons" 表中選取居住的城市不以 "A" 或 "L" 或 "N" 開頭的人:我們可以使用下面的 SELECT 語句:SELECT * FROM PersonsWHERE City LIKE '!ALN%'結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijing推薦精選SQL IN 操作符· Previous Page· Next PageIN 操作符IN 操作符允許我們在 WHE

44、RE 子句中規(guī)定多個值。SQL IN 語法SELECT column_name(s)FROM table_nameWHERE column_name IN (value1,value2,.)原始的表 (在實例中使用:)Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingIN 操作符實例現(xiàn)在,我們希望從上表中選取姓氏為 Adams 和 Carter 的人:我們可以使用下面的 SELE

45、CT 語句:SELECT * FROM PersonsWHERE LastName IN ('Adams','Carter')結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon3CarterThomasChangan StreetBeijing推薦精選SQL BETWEEN 操作符· Previous Page· Next PageBETWEEN 操作符在 WHERE 子句中使用,作用是選取介于兩個值之間的數(shù)據(jù)范圍。BETWEEN 操作符操作符 BETWEEN . A

46、ND 會選取介于兩個值之間的數(shù)據(jù)范圍。這些值可以是數(shù)值、文本或者日期。SQL BETWEEN 語法SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2原始的表 (在實例中使用:)Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing4GatesBillXuanwumen 10Bei

47、jingBETWEEN 操作符實例如需以字母順序顯示介于 "Adams"(包括)和 "Carter"(不包括)之間的人,請使用下面的 SQL:SELECT * FROM PersonsWHERE LastNameBETWEEN 'Adams' AND 'Carter'結(jié)果集:IdLastNameFirstNameAddressCity推薦精選1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York重要事項:不同的數(shù)據(jù)庫對 BETWEEN.AND 操作符的處理方

48、式是有差異的。某些數(shù)據(jù)庫會列出介于 "Adams" 和 "Carter" 之間的人,但不包括 "Adams" 和 "Carter" ;某些數(shù)據(jù)庫會列出介于 "Adams" 和 "Carter" 之間并包括 "Adams" 和 "Carter" 的人;而另一些數(shù)據(jù)庫會列出介于 "Adams" 和 "Carter" 之間的人,包括 "Adams" ,但不包括 "Carte

49、r" 。所以,請檢查你的數(shù)據(jù)庫是如何處理 BETWEEN.AND 操作符的!實例 2如需使用上面的例子顯示范圍之外的人,請使用 NOT 操作符:SELECT * FROM PersonsWHERE LastNameNOT BETWEEN 'Adams' AND 'Carter'結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijing4GatesBillXuanwumen 10BeijingSQL JOIN· Previous Page· Next Pag

50、eSQL join 用于根據(jù)兩個或多個表中的列之間的關(guān)系,從這些表中查詢數(shù)據(jù)。Join 和 Key有時為了得到完整的結(jié)果,我們需要從兩個或更多的表中獲取結(jié)果。我們就需要執(zhí)行 join。數(shù)據(jù)庫中的表可通過鍵將彼此聯(lián)系起來。主鍵(Primary Key)是一個列,在這個列中的每一行的值都是唯一的。在表中,每個主鍵的值都是唯一的。這樣做的目的是在不重復(fù)每個表中的所有數(shù)據(jù)的情況下,把表間的數(shù)據(jù)交叉捆綁在一起。請看 "Persons" 表:Id_PLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon推薦精選2BushGeo

51、rgeFifth AvenueNew York3CarterThomasChangan StreetBeijing請注意,"Id_P" 列是 Persons 表中的的主鍵。這意味著沒有兩行能夠擁有相同的 Id_P。即使兩個人的姓名完全相同,Id_P 也可以區(qū)分他們。接下來請看 "Orders" 表:Id_OOrderNoId_P177895324467833224561424562153476465請注意,"Id_O" 列是 Orders 表中的的主鍵,同時,"Orders" 表中的 "Id_P"

52、; 列用于引用 "Persons" 表中的人,而無需使用他們的確切姓名。請留意,"Id_P" 列把上面的兩個表聯(lián)系了起來。引用兩個表我們可以通過引用兩個表的方式,從兩個表中獲取數(shù)據(jù):誰訂購了產(chǎn)品,并且他們訂購了什么產(chǎn)品?SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM Persons, OrdersWHERE Persons.Id_P = Orders.Id_P 結(jié)果集:LastNameFirstNameOrderNoAdamsJohn22456AdamsJohn24562Car

53、terThomas77895CarterThomas44678SQL JOIN - 使用 Join除了上面的方法,我們也可以使用關(guān)鍵詞 JOIN 來從兩個表中獲取數(shù)據(jù)。如果我們希望列出所有人的定購,可以使用下面的 SELECT 語句:推薦精選SELECT Persons.LastName, Persons.FirstName, Orders.OrderNoFROM PersonsINNER JOIN OrdersON Persons.Id_P = Orders.Id_PORDER BY Persons.LastName結(jié)果集:LastNameFirstNameOrderNoAdamsJohn2

54、2456AdamsJohn24562CarterThomas77895CarterThomas44678不同的 SQL JOIN除了我們在上面的例子中使用的 INNER JOIN(內(nèi)連接),我們還可以使用其他幾種連接。下面列出了您可以使用的 JOIN 類型,以及它們之間的差異。· JOIN: 如果表中有至少一個匹配,則返回行· LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行· RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行· FULL JOIN: 只要其中一個表中存在匹配,就返回行SQL INNER JOIN 關(guān)鍵字在表

55、中存在至少一個匹配時,INNER JOIN 關(guān)鍵字返回行。INNER JOIN 關(guān)鍵字語法SELECT column_name(s)FROM table_name1INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name注釋:INNER JOIN 與 JOIN 是相同的。推薦精選原始的表 (用在例子中的):"Persons" 表:Id_PLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing"Orders" 表:Id_OOrderNoId_P177895324467833224561424562153476465內(nèi)連接(INNER JOIN)實例現(xiàn)在,我們希望列出所有人的定

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論