SQL是用于訪問和處理數(shù)據(jù)庫的標準的計算機語言_第1頁
SQL是用于訪問和處理數(shù)據(jù)庫的標準的計算機語言_第2頁
SQL是用于訪問和處理數(shù)據(jù)庫的標準的計算機語言_第3頁
SQL是用于訪問和處理數(shù)據(jù)庫的標準的計算機語言_第4頁
SQL是用于訪問和處理數(shù)據(jù)庫的標準的計算機語言_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、SQL基礎簡介2SQL簡介2SQL語法3SQL select5SQL distinct6SQL where7SQL AND &OR9SQL ORDER BY 子句10SQL INSERT INTO 語句12SQL UPDATE 語句14SQL DELETE 語句15SQL 高級教程15SQL TOP 子句15SQL LIKE 操作符17SQL 通配符19SQL IN 操作符22SQL BETWEEN 操作符23SQL Alias(別名)24SQL JOIN26SQL INNER JOIN 關鍵字28SQL LEFT JOIN 關鍵字29SQL RIGHT JOIN 關鍵字30SQL F

2、ULL JOIN 關鍵字32SQL UNION 和 UNION ALL 操作符33SQL SELECT INTO 語句36SQL CREATE DATABASE 語句37SQL CREATE TABLE 語句37SQL 約束 (Constraints)39SQL NOT NULL 約束39SQL UNIQUE 約束40SQL PRIMARY KEY 約束42SQL FOREIGN KEY 約束43SQL CHECK 約束46SQL DEFAULT 約束48SQL CREATE INDEX 語句49SQL 撤銷索引、表以及數(shù)據(jù)庫50SQL ALTER TABLE 語句51SQL AUTO INC

3、REMENT 字段53SQL VIEW(視圖)55SQL Date 函數(shù)58SQL NULL 值60SQL NULL 函數(shù)61SQL 數(shù)據(jù)類型63SQL 服務器 - RDBMS68SQL 函數(shù)68SQL AVG 函數(shù)71SQL COUNT() 函數(shù)72SQL FIRST() 函數(shù)74SQL LAST() 函數(shù)75SQL MAX() 函數(shù)76SQL MIN() 函數(shù)77SQL SUM() 函數(shù)77SQL GROUP BY 語句78SQL HAVING 子句80SQL UCASE() 函數(shù)81SQL LCASE() 函數(shù)82SQL MID() 函數(shù)83SQL LEN() 函數(shù)84SQL ROUND

4、() 函數(shù)85SQL NOW() 函數(shù)86SQL FORMAT() 函數(shù)87SQL 快速參考88SQL基礎簡介SQL簡介SQL 是用于訪問和處理數(shù)據(jù)庫的標準的計算機語言。什么是 SQL?· SQL 指結(jié)構化查詢語言· SQL 使我們有能力訪問數(shù)據(jù)庫· SQL 是一種 ANSI 的標準計算機語言編者注:ANSI,美國國家標準化組織SQL 能做什么?· SQL 面向數(shù)據(jù)庫執(zhí)行查詢(select)· SQL 可從數(shù)據(jù)庫取回數(shù)據(jù)· SQL 可在數(shù)據(jù)庫中插入新的記錄(insert)· SQL 可更新數(shù)據(jù)庫中的數(shù)據(jù)(update)

5、83; SQL 可從數(shù)據(jù)庫刪除記錄(delete)· SQL 可創(chuàng)建新數(shù)據(jù)庫· SQL 可在數(shù)據(jù)庫中創(chuàng)建新表· SQL 可在數(shù)據(jù)庫中創(chuàng)建存儲過程· SQL 可在數(shù)據(jù)庫中創(chuàng)建視圖· SQL 可以設置表、存儲過程和視圖的權限(實現(xiàn)了最基本的增刪改查)SQL 是一種標準 - 但是.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)。不

6、幸地是,存在著很多不同版本的 SQL 語言,但是為了與 ANSI 標準相兼容,它們必須以相似的方式共同地來支持一些主要的關鍵詞(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。注釋:除了 SQL 標準之外,大部分 SQL 數(shù)據(jù)庫程序都擁有它們自己的私有擴展!在您的網(wǎng)站中使用 SQL要創(chuàng)建發(fā)布數(shù)據(jù)庫中數(shù)據(jù)的網(wǎng)站,您需要以下要素:· RDBMS 數(shù)據(jù)庫程序(比如 MS Access, SQL Server, MySQL)· 服務器端腳本語言(比如 PHP 或 ASP)· SQL· HTML / CSSRDBMSRDBMS 指

7、的是關系型數(shù)據(jù)庫管理系統(tǒng)。RDBMS 是 SQL 的基礎,同樣也是所有現(xiàn)代數(shù)據(jù)庫系統(tǒng)的基礎,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。RDBMS 中的數(shù)據(jù)存儲在被稱為表(tables)的數(shù)據(jù)庫對象中。表是相關的數(shù)據(jù)項的集合,它由列和行組成。SQL語法數(shù)據(jù)庫表一個數(shù)據(jù)庫通常包含一個或多個表。每個表由一個名字標識(例如“客戶”或者“訂單”)。表包含帶有數(shù)據(jù)的記錄(行)。下面的例子是一個名為 "Persons" 的表:IdLastNameFirstNameAddressCity1AdamsJohnOx

8、ford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing上面的表包含三條記錄(每一條對應一個人)和五個列(Id、姓、名、地址和城市)。SQL 語句您需要在數(shù)據(jù)庫上執(zhí)行的大部分工作都由 SQL 語句完成。下面的語句從表中選取 LastName 列的數(shù)據(jù):SELECT LastName FROM Persons (Select 列名 from 表名)結(jié)果集類似這樣:LastNameAdamsBushCarter在本教程中,我們將為您講解各種不同的 SQL 語句。重要事項一定要記住,SQL 對

9、大小寫不敏感!某些數(shù)據(jù)庫系統(tǒng)要求在每條 SQL 命令的末端使用分號。在我們的教程中不使用分號。分號是在數(shù)據(jù)庫系統(tǒng)中分隔每條 SQL 語句的標準方法,這樣就可以在對服務器的相同請求中執(zhí)行一條以上的語句。如果您使用的是 MS Access 和 SQL Server 2000,則不必在每條 SQL 語句之后使用分號,不過某些數(shù)據(jù)庫軟件要求必須使用分號。SQL DML 和 DDL可以把 SQL 分為兩個部分:數(shù)據(jù)操作語言 (DML) 和 數(shù)據(jù)定義語言 (DDL)。SQL (結(jié)構化查詢語言)是用于執(zhí)行查詢的語法。但是 SQL 語言也包含用于更新、插入和刪除記錄的語法。查詢和更新指令構成了 SQL 的 D

10、ML 部分:· SELECT - 從數(shù)據(jù)庫表中獲取數(shù)據(jù)· UPDATE - 更新數(shù)據(jù)庫表中的數(shù)據(jù)· DELETE - 從數(shù)據(jù)庫表中刪除數(shù)據(jù)· INSERT INTO - 向數(shù)據(jù)庫表中插入數(shù)據(jù)SQL 的數(shù)據(jù)定義語言 (DDL) 部分使我們有能力創(chuàng)建或刪除表格。我們也可以定義索引(鍵),規(guī)定表之間的鏈接,以及施加表間的約束。SQL 中最重要的 DDL 語句:· CREATE DATABASE - 創(chuàng)建新數(shù)據(jù)庫· ALTER DATABASE - 修改數(shù)據(jù)庫· CREAT

11、E TABLE - 創(chuàng)建新表· ALTER TABLE - 變更(改變)數(shù)據(jù)庫表· DROP TABLE - 刪除表· CREATE INDEX - 創(chuàng)建索引(搜索鍵)· DROP INDEX - 刪除索引SQL select本章講解 SELECT 和 SELECT * 語句。SQL SELECT 語句SELECT 語句用于從表中選取數(shù)據(jù)。結(jié)果被存儲在一個結(jié)果表中(稱為結(jié)果集)。SQL SELECT 語法SELECT 列名稱 FROM 表名稱 (查詢某一表格中的某一列)以及:SELECT * FROM 表

12、名稱 (從一張表中查詢所有列)注釋:SQL 語句對大小寫不敏感。SELECT 等效于 select。SQL SELECT 實例如需獲取名為 "LastName" 和 "FirstName" 的列的內(nèi)容(從名為 "Persons" 的數(shù)據(jù)庫表),請使用類似這樣的 SELECT 語句:SELECT LastName,FirstName FROM Persons (查詢一張表中多列內(nèi)容,可以將列名稱用”,”隔開)"Persons" 表:IdLastNameFirstNameAddressCity1AdamsJohnOxf

13、ord StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing結(jié)果:LastNameFirstNameAdamsJohnBushGeorgeCarterThomasSQL SELECT * 實例現(xiàn)在我們希望從 "Persons" 表中選取所有的列。請使用符號 * 取代列的名稱,就像這樣:SELECT * FROM Persons提示:星號(*)是選取所有列的快捷方式。結(jié)果:IdLastNameFirstNameAddressCity1AdamsJohnOxford Stree

14、tLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing在結(jié)果集(result-set)中導航由 SQL 查詢程序獲得的結(jié)果被存放在一個結(jié)果集中。大多數(shù)數(shù)據(jù)庫軟件系統(tǒng)都允許使用編程函數(shù)在結(jié)果集中進行導航,比如:Move-To-First-Record、Get-Record-Content、Move-To-Next-Record 等等。SQL distinct本章講解 SELECT DISTINCT 語句。SQL SELECT DISTINCT 語句在表中,可能會包含重復值。這并不成問題,不過,有時您也許希望

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

16、了兩次。如需從 Company" 列中僅選取唯一不同的值,我們需要使用 SELECT DISTINCT 語句:SELECT DISTINCT Company FROM Orders 結(jié)果:CompanyIBMW3SchoolApple現(xiàn)在,在結(jié)果集中,"W3School" 僅被列出了一次。SQL whereWHERE 子句用于規(guī)定選擇的標準。WHERE 子句如需有條件地從表中選取數(shù)據(jù),可將 WHERE 子句添加到 SELECT 語句。語法SELECT 列名稱 FROM 表名稱 WHERE 列 運算符 值下面的運算符可在 WHERE 子句中使用:操作符描述=等于&l

17、t;>不等于>大于<小于>=大于等于<=小于等于BETWEEN在某個范圍內(nèi)LIKE搜索某種模式注釋:在某些版本的 SQL 中,操作符 <> 可以寫為 !=。使用 WHERE 子句如果只希望選取居住在城市 "Beijing" 中的人,我們需要向 SELECT 語句添加 WHERE 子句:SELECT * FROM Persons WHERE City='Beijing'"Persons" 表LastNameFirstNameAddressCityYearAdamsJohnOxford StreetL

18、ondon1970BushGeorgeFifth AvenueNew York1975CarterThomasChangan StreetBeijing1980GatesBillXuanwumen 10Beijing1985結(jié)果:LastNameFirstNameAddressCityYearCarterThomasChangan StreetBeijing1980GatesBillXuanwumen 10Beijing1985引號的使用請注意,我們在例子中的條件值周圍使用的是單引號。SQL 使用單引號來環(huán)繞文本值(大部分數(shù)據(jù)庫系統(tǒng)也接受雙引號)。如果是數(shù)值,請不要使用引號。文本值:這是正確的

19、:SELECT * FROM Persons WHERE FirstName='Bush'這是錯誤的:SELECT * FROM Persons WHERE FirstName=Bush數(shù)值:這是正確的:SELECT * FROM Persons WHERE Year>1965這是錯誤的:SELECT * FROM Persons WHERE Year>'1965'SQL AND &OR SQL AND 和OR 運算符AND 和 OR 可在 WHERE 子語句中把兩個或多個條件結(jié)合起來。如果第一個條件和第二個條件都成立,則 AND 運算符顯示

20、一條記錄。如果第一個條件和第二個條件中只要有一個成立,則 OR 運算符顯示一條記錄。原始的表 (用在例子中的):LastNameFirstNameAddressCityAdamsJohnOxford StreetLondonBushGeorgeFifth AvenueNew YorkCarterThomasChangan StreetBeijingCarterWilliamXuanwumen 10BeijingAND 運算符實例使用 AND 來顯示所有姓為 "Carter" 并且名為 "Thomas" 的人:SELECT * FROM Persons W

21、HERE FirstName='Thomas' AND LastName='Carter'結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingOR 運算符實例使用 OR 來顯示所有姓為 "Carter" 或者名為 "Thomas" 的人:SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'結(jié)果:LastNameFirstNameAddr

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

23、jingCarterWilliamXuanwumen 10BeijingSQL ORDER BY 子句ORDER BY 語句用于對結(jié)果集進行排序。ORDER BY 語句ORDER BY 語句用于根據(jù)指定的列對結(jié)果集進行排序。ORDER BY 語句默認按照升序?qū)τ涗涍M行排序。如果您希望按照降序?qū)τ涗涍M行排序,可以使用 DESC 關鍵字。原始的表 (用在例子中的):Orders 表:CompanyOrderNumberIBM3532W3School2356Apple4698W3School6953實例 1以字母順序顯示公司名稱:SELECT Company, OrderNumber FROM Or

24、ders ORDER BY Company結(jié)果:CompanyOrderNumberApple4698IBM3532W3School6953W3School2356實例 2以字母順序顯示公司名稱(Company),并以數(shù)字順序顯示順序號(OrderNumber):SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber結(jié)果:CompanyOrderNumberApple4698IBM3532W3School2356W3School6953實例 3以逆字母順序顯示公司名稱:SELECT Company, Order

25、Number FROM Orders ORDER BY Company DESC結(jié)果:CompanyOrderNumberW3School6953W3School2356IBM3532Apple4698實例 4以逆字母順序顯示公司名稱,并以數(shù)字順序顯示順序號:SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC(如company相同的話,ordernumber按遞增排列 )結(jié)果:CompanyOrderNumberW3School2356W3School6953IBM3532Apple469

26、8注意:在以上的結(jié)果中有兩個相等的公司名稱 (W3School)。只有這一次,在第一列中有相同的值時,第二列是以升序排列的。如果第一列中有些值為 nulls 時,情況也是這樣的。SQL INSERT INTO 語句INSERT INTO 語句INSERT INTO 語句用于向表格中插入新的行。語法INSERT INTO 表名稱 VALUES (值1, 值2,.)我們也可以指定所要插入數(shù)據(jù)的列:INSERT INTO table_name (列1, 列2,.) VALUES (值1, 值2,.)插入新的行"Persons" 表:LastNameFirstNameAddress

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

28、arterThomasChangan StreetBeijingGatesBillXuanwumen 10BeijingSQL 語句:語法:Insert into 表名稱 (列名1,列名2) values(列值1,列值2,.)INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')結(jié)果:LastNameFirstNameAddressCityCarterThomasChangan StreetBeijingGatesBillXuanwumen 10BeijingWils

29、on Champs-Elysees SQL UPDATE 語句Update 語句Update 語句用于修改表中的數(shù)據(jù)。語法:UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值Person:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilson Champs-Elysees更新某一行中的一個列我們?yōu)?lastname 是 "Wilson" 的人添加 firstname:UPDATE Person SET FirstName = 'Fred

30、9; WHERE LastName = 'Wilson' 結(jié)果:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonFredChamps-Elysees 更新某一行中的若干列我們會修改地址(address),并添加城市名稱(city):UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'WHERE LastName = 'Wilson'結(jié)果:LastNameFirstNameAddr

31、essCityGatesBillXuanwumen 10BeijingWilsonFredZhongshan 23NanjingSQL DELETE 語句DELETE 語句DELETE 語句用于刪除表中的行。語法DELETE FROM 表名稱 WHERE 列名稱 = 值Person:LastNameFirstNameAddressCityGatesBillXuanwumen 10BeijingWilsonFredZhongshan 23Nanjing刪除某行"Fred Wilson" 會被刪除:DELETE FROM Person WHERE LastName = '

32、;Wilson' 結(jié)果:LastNameFirstNameAddressCityGatesBillXuanwumen 10Beijing刪除所有行k可以在不刪除表的情況下刪除所有的行。這意味著表的結(jié)構、屬性和索引都是完整的:DELETE FROM table_name或者: 888888888iiiiiiiiiiiiii FROM table_nameSQL Top 子句Top 子句 TOP 子句用于規(guī)定要返回的記錄的數(shù)目。對于擁有數(shù)千條記錄的大型表來說,TOP 子句是非常有用的。注釋:并非所有的數(shù)據(jù)庫系統(tǒng)都支持 TOP 子句。SQL Server 的語法:SELECT TOP num

33、ber|percent column_name(s)FROM table_nameMySQL 和 Oracle 中的 SQL SELECT TOP 是等價的MySQL 語法SELECT column_name(s)FROM table_nameLIMIT number例子SELECT *FROM PersonsLIMIT 5Oracle 語法SELECT column_name(s)FROM table_nameWHERE ROWNUM <= number例子SELECT *FROM PersonsWHERE ROWNUM <= 5原始的表 (用在例子中的):Persons 表:I

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

35、msJohnOxford StreetLondon2BushGeorgeFifth AvenueNew YorkSQL TOP PERCENT 實例現(xiàn)在,我們希望從上面的 "Persons" 表中選取 50% 的記錄。我們可以使用下面的 SELECT 語句:SELECT TOP 50 PERCENT * FROM Persons結(jié)果:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew YorkSQL LIKE 操作符LIKE 操作符用于在 WHERE 子句

36、中搜索列中的指定模式。LIKE 操作符LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。SQL LIKE 操作符語法SELECT column_name(s)FROM table_nameWHERE column_name LIKE pattern原始的表 (用在例子中的):Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingLIKE 操作符實例例子 1現(xiàn)在,我們希望從

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

38、的 SELECT 語句:SELECT * FROM PersonsWHERE City LIKE '%g'結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijing例子 3接下來,我們希望從 "Persons" 表中選取居住在包含 "lon" 的城市里的人:我們可以使用下面的 SELECT 語句:SELECT * FROM PersonsWHERE City LIKE '%lon%'結(jié)果集:IdLastNameFirstNameAddressCi

39、ty1AdamsJohnOxford StreetLondon例子 4通過使用 NOT 關鍵字,我們可以從 "Persons" 表中選取居住在不包含 "lon" 的城市里的人:我們可以使用下面的 SELECT 語句:SELECT * FROM PersonsWHERE City NOT LIKE '%lon%'結(jié)果集:IdLastNameFirstNameAddressCity2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingSQL 通配符在搜索數(shù)據(jù)

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

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

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

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

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

45、 York例子 2現(xiàn)在,我們希望從上面的 "Persons" 表中選取居住的城市不以 "A" 或 "L" 或 "N" 開頭的人:我們可以使用下面的 SELECT 語句:SELECT * FROM PersonsWHERE City LIKE '!ALN%'結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijingSQL IN 操作符IN 操作符IN 操作符允許我們在 WHERE 子句中規(guī)定多個值。SQL IN 語

46、法SELECT column_name(s)FROM table_nameWHERE column_name IN (value1,value2,.)原始的表 (在實例中使用:)Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingIN 操作符實例現(xiàn)在,我們希望從上表中選取姓氏為 Adams 和 Carter 的人:我們可以使用下面的 SELECT 語句:SELECT * FROM

47、PersonsWHERE LastName IN ('Adams','Carter')結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon3CarterThomasChangan StreetBeijingSQL BETWEEN 操作符BETWEEN 操作符在 WHERE 子句中使用,作用是選取介于兩個值之間的數(shù)據(jù)范圍。BETWEEN 操作符操作符 BETWEEN . AND 會選取介于兩個值之間的數(shù)據(jù)范圍。這些值可以是數(shù)值、文本或者日期。SQL BETWEEN 語法SELECT colu

48、mn_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2原始的表 (在實例中使用:)Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing4GatesBillXuanwumen 10BeijingBETWEEN 操作符實例如需以字母順序顯示介于 "Adams"(包括)和 "Ca

49、rter"(不包括)之間的人,請使用下面的 SQL:SELECT * FROM PersonsWHERE LastNameBETWEEN 'Adams' AND 'Carter'結(jié)果集:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York重要事項:不同的數(shù)據(jù)庫對 BETWEEN.AND 操作符的處理方式是有差異的。某些數(shù)據(jù)庫會列出介于 "Adams" 和 "Carter" 之間的人,但不

50、包括 "Adams" 和 "Carter" ;某些數(shù)據(jù)庫會列出介于 "Adams" 和 "Carter" 之間并包括 "Adams" 和 "Carter" 的人;而另一些數(shù)據(jù)庫會列出介于 "Adams" 和 "Carter" 之間的人,包括 "Adams" ,但不包括 "Carter" 。所以,請檢查你的數(shù)據(jù)庫是如何處理 BETWEEN.AND 操作符的!實例 2如需使用上面的例子顯示范圍之外的人

51、,請使用 NOT 操作符:SELECT * FROM PersonsWHERE LastNameNOT BETWEEN 'Adams' AND 'Carter'結(jié)果集:IdLastNameFirstNameAddressCity3CarterThomasChangan StreetBeijing4GatesBillXuanwumen 10BeijingSQL Alias(別名)通過使用 SQL,可以為列名稱和表名稱指定別名(Alias)。SQL Alias表的 SQL Alias 語法SELECT column_name(s)FROM table_nameAS

52、alias_name列的 SQL Alias 語法SELECT column_name AS alias_nameFROM table_nameAlias 實例: 使用表名稱別名假設我們有兩個表分別是:"Persons" 和 "Product_Orders"。我們分別為它們指定別名 "p" 和 "po"?,F(xiàn)在,我們希望列出 "John Adams" 的所有定單。我們可以使用下面的 SELECT 語句:SELECT po.OrderID, p.LastName, p.FirstNameFROM P

53、ersons AS p, Product_Orders AS poWHERE p.LastName='Adams' AND p.FirstName='John'不使用別名的 SELECT 語句:SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstNameFROM Persons, Product_OrdersWHERE Persons.LastName='Adams' AND Persons.FirstName='John'從上面兩條 SELECT 語句您可以

54、看到,別名使查詢程序更易閱讀和書寫。Alias 實例: 使用一個列名別名表 Persons:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijingSQL:SELECT LastName AS Family, FirstName AS NameFROM Persons結(jié)果:FamilyNameAdamsJohnBushGeorgeCarterThomasSQL JOINSQL join 用于根據(jù)兩個或多個

55、表中的列之間的關系,從這些表中查詢數(shù)據(jù)。Join 和 Key有時為了得到完整的結(jié)果,我們需要從兩個或更多的表中獲取結(jié)果。我們就需要執(zhí)行 join。數(shù)據(jù)庫中的表可通過鍵將彼此聯(lián)系起來。主鍵(Primary Key)是一個列,在這個列中的每一行的值都是唯一的。在表中,每個主鍵的值都是唯一的。這樣做的目的是在不重復每個表中的所有數(shù)據(jù)的情況下,把表間的數(shù)據(jù)交叉捆綁在一起。請看 "Persons" 表:Id_PLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2BushGeorgeFifth AvenueNew York3CarterThomasChangan StreetBeijing請注意,"Id_P" 列是 Persons 表中的的主鍵。這意味著沒有兩行能夠擁有相同的 Id_P。即使兩個人的姓名完全相同,Id_P 也可以區(qū)分他們。接下來請看 "Orders&qu

溫馨提示

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

評論

0/150

提交評論