適合初學(xué)者的MySQL學(xué)習(xí)筆記之SELECT語(yǔ)句使用詳解
上次我們介紹了:適合初學(xué)者的MySQL學(xué)習(xí)筆記之MySQL常用命令操作技巧,本次我們介紹一下MySQL學(xué)習(xí)筆記之SELECT語(yǔ)句的使用方法,接下來(lái)就讓我們一起來(lái)了解一下這部分內(nèi)容吧。
SELECT語(yǔ)句的完整語(yǔ)法為:
- SELECT[ALL|DISTINCT|DISTINCTROW|TOP]
- {*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}
- FROM tableexpression[,…][IN externaldatabase]
- [WHERE…]
- [GROUP BY…]
- [HAVING…]
- [ORDER BY…]
- [WITH OWNERACCESS OPTION]
說(shuō)明:用中括號(hào)([])括起來(lái)的部分表示是可選的,用大括號(hào)({})括起來(lái)的部分是表示必須從中選擇其中的一個(gè)。
1.FROM子句
FROM子句指定了SELECT語(yǔ)句中字段的來(lái)源。FROM子句后面是包含一個(gè)或多個(gè)的表達(dá)式(由逗號(hào)分開(kāi)),其中的表達(dá)式可為單一表名稱、已保存的查詢或由 INNER JOIN、LEFT JOIN 或RIGHT JOIN 得到的復(fù)合結(jié)果。如果表或查詢存儲(chǔ)在外部數(shù)據(jù)庫(kù),在IN子句之后指明其完整路徑。
例:下列SQL語(yǔ)句返回所有有定單的客戶:
- SELECT OrderID,Customer.customerID
- FROM Orders Customers
- WHERE Orders.CustomerID=Customers.CustomeersID
2.ALL、DISTINCT、DISTINCTROW、TOP謂詞
(1) ALL 返回滿足SQL語(yǔ)句條件的所有記錄。如果沒(méi)有指明這個(gè)謂詞,默認(rèn)為ALL。例如:
- SELECT ALL FirstName,LastName
- FROM Employees
(2) DISTINCT 如果有多個(gè)記錄的選擇字段的數(shù)據(jù)相同,只返回一個(gè)。
(3) DISTINCTROW 如果有重復(fù)的記錄,只返回一個(gè)。
(4) TOP顯示查詢頭尾若干記錄。也可返回記錄的百分比,這是要用 TOP N PERCENT子句(其中N 表示百分比)。
例:返回5%定貨額***的定單
- SELECT TOP 5 PERCENT*
- FROM [ Order Details]
- ORDER BY UnitPrice*Quantity*(1-Discount) DESC
3.用AS子句為字段取別名
如果想為返回的列取一個(gè)新的標(biāo)題,或者,經(jīng)過(guò)對(duì)字段的計(jì)算或總結(jié)之后,產(chǎn)生了一個(gè)新的值,希望把它放到一個(gè)新的列里顯示,則用AS保留。
例:返回FirstName字段取別名為NickName
- SELECT FirstName AS NickName ,LastName ,City
- FROM Employees
例:返回新的一列顯示庫(kù)存價(jià)值
- SELECT ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS valueInStock
- FROM Products
WHERE 子句指定查詢條件
例:返回96年1月的定單
- SELECT OrderID, CustomerID, OrderDate
- FROM Orders
- WHERE OrderDate>#1/1/96# AND OrderDate<#1/30/96#
注意:
Mcirosoft JET SQL 中,日期用‘#’定界。日期也可以用Datevalue()函數(shù)來(lái)代替。在比較字符型的數(shù)據(jù)時(shí),要加上單引號(hào)’’,尾空格在比較中被忽略。 例:WHERE OrderDate>#96-1-1#
也可以表示為: WHERE OrderDate>Datevalue(‘1/1/96’)
使用NOT表達(dá)式求反:
例:查看96年1月1日以后的定單:WHERE Not OrderDate<=#1/1/96#
范圍(BETWEEN 和 NOT BETWEEN):
BETWEEN …AND…運(yùn)算符指定了要搜索的一個(gè)閉區(qū)間。
例:返回96年1月到96年2月的定單:WHERE OrderDate Between #1/1/96# And #2/1/96#
列表(IN ,NOT IN):
IN 運(yùn)算符用來(lái)匹配列表中的任何一個(gè)值。IN子句可以代替用OR子句連接的一連串的條件。
例:要找出住在 London、Paris或Berlin的所有客戶
- SELECT CustomerID, CompanyName, ContactName, City
- FROM Customers
- WHERE City In(‘London’,’ Paris’,’ Berlin’)
模式匹配(LIKE)
LIKE運(yùn)算符檢驗(yàn)一個(gè)包含字符串?dāng)?shù)據(jù)的字段值是否匹配一指定模式。
LIKE運(yùn)算符里使用的通配符
通配符的含義 :
- ? 任何一個(gè)單一的字符
- * 任意長(zhǎng)度的字符
- # 0~9之間的單一數(shù)字
- [字符列表] 在字符列表里的任一值
- [!字符列表] 不在字符列表里的任一值
- - 指定字符范圍,兩邊的值分別為其上下限
例:返回郵政編碼在(171)555-0000到(171)555-9999之間的客戶
- SELECT CustomerID ,CompanyName,City,Phone
- FROM Customers
- WHERE Phone Like ‘(171)555-####
關(guān)于適合初學(xué)者的MySQL學(xué)習(xí)筆記之SELECT語(yǔ)句的使用就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
- 介紹六個(gè)有用的MySQL的SQL語(yǔ)句
- MySQL大數(shù)據(jù)量快速插入方法和語(yǔ)句優(yōu)化
- MySQL數(shù)據(jù)庫(kù)完整備份與增量備份的原理簡(jiǎn)介
- 六條比較有用的MySQL數(shù)據(jù)庫(kù)操作的SQL語(yǔ)句
- 詳解xtrabackup對(duì)MySQL進(jìn)行備份和恢復(fù)的全過(guò)程






