適合初學(xué)者的MySQL學(xué)習(xí)筆記之MySQL查詢示例
上次我們介紹了:適合初學(xué)者的MySQL學(xué)習(xí)筆記之MySQL管理心得,本次我們介紹一下MySQL查詢操作,包括功能查詢、子查詢等操作,接下來就讓我們來一起了解一下這部分內(nèi)容吧。
功能查詢
所謂功能查詢,實(shí)際上是一種操作查詢,它可以對(duì)數(shù)據(jù)庫進(jìn)行快速高效的操作.它以選擇查詢?yōu)槟康?挑選出符合條件的數(shù)據(jù),再對(duì)數(shù)據(jù)進(jìn)行批處理.功能查詢包括更新查詢,刪除查詢,添加查詢,和生成表查詢.
1.更新查詢
UPDATE子句可以同時(shí)更改一個(gè)或多個(gè)表中的數(shù)據(jù).它也可以同時(shí)更改多個(gè)字段的值.
更新查詢語法:
UPDATE 表名
SET 新值
WHERE 準(zhǔn)則
例:英國客戶的定貨量增加5%,貨運(yùn)量增加3%
UPDATE OEDERS
SET OrderAmount = OrderAmount *1.1
Freight = Freight*1.03
WHERE ShipCountry = ‘UK’
2.刪除查詢
DELETE子句可以使用戶刪除大量的過時(shí)的或冗于的數(shù)據(jù).
注:刪除查詢的對(duì)象是整個(gè)記錄.
DELETE子句的語法:
DELETE [表名.*]
FROM 來源表
WHERE 準(zhǔn)則
例: 要?jiǎng)h除所有94年前的定單
- DELETE *
- FROM Orders
- WHERE OrderData<#94-1-1#
3.追加查詢
INSERT子句可以將一個(gè)或一組記錄追加到一個(gè)或多個(gè)表的尾部.
INTO 子句指定接受新記錄的表
valueS 關(guān)鍵字指定新記錄所包含的數(shù)據(jù)值.
INSERT 子句的語法:
INSETR INTO 目的表或查詢(字段1,字段2,…)
valueS(數(shù)值1,數(shù)值2,…)
例:增加一個(gè)客戶
- INSERT INTO Employees(FirstName,LastName,title)
- valueS(‘Harry’,’Washington’,’Trainee’)
4.生成表查詢
可以一次性地把所有滿足條件的記錄拷貝到一張新表中.通常制作記錄的備份或副本或作為報(bào)表的基礎(chǔ).
SELECT INTO子句用來創(chuàng)建生成表查詢語法:
SELECT 字段1,字段2,…
INTO 新表[IN 外部數(shù)據(jù)庫]
FROM 來源數(shù)據(jù)庫
WHERE 準(zhǔn)則
例:為定單制作一個(gè)存檔備份
- SELECT *
- INTO OrdersArchive
- FROM Orders
聯(lián)合查詢
UNION運(yùn)算可以把多個(gè)查詢的結(jié)果合并到一個(gè)結(jié)果集里顯示.
UNION運(yùn)算的一般語法:
[表]查詢1 UNION [ALL]查詢2 UNION …
例:返回巴西所有供給商和客戶的名字和城市
- SELECT CompanyName,City
- FROM Suppliers
- WHERE Country = ‘Brazil’
- UNION
- SELECT CompanyName,City
- FROM Customers
- WHERE Country = ‘Brazil’
注:
缺省的情況下,UNION子句不返回重復(fù)的記錄.如果想顯示所有記錄,可以加ALL選項(xiàng)
UNION運(yùn)算要求查詢具有相同數(shù)目的字段.但是,字段數(shù)據(jù)類型不必相同.
每一個(gè)查詢參數(shù)中可以使用GROUP BY 子句 或 HAVING 子句進(jìn)行分組.要想以指定的順序來顯示返回的數(shù)據(jù),可以在***一個(gè)查詢的尾部使用OREER BY子句.
交叉查詢
交叉查詢可以對(duì)數(shù)據(jù)進(jìn)行總和,平均,計(jì)數(shù)或其他總和計(jì)算法的計(jì)算,這些數(shù)據(jù)通過兩種信息進(jìn)行分組:一個(gè)顯示在表的左部,另一個(gè)顯示在表的頂部.
Microsoft Jet SQL 用TRANSFROM語句創(chuàng)建交叉表查詢語法:
TRANSFORM aggfunction
SELECT 語句
GROUP BY 子句
PIVOT pivotfield[IN(value1 [,value2[,…]]) ]
Aggfounction指SQL聚積函數(shù),
SELECT語句選擇作為標(biāo)題的的字段,
GROUP BY 分組
說明:
Pivotfield 在查詢結(jié)果集中創(chuàng)建列標(biāo)題時(shí)用的字段或表達(dá)式,用可選的IN子句限制它的取值.
value代表創(chuàng)建列標(biāo)題的固定值.
例:顯示在1996年里每一季度每一位員工所接的定單的數(shù)目:
- TRANSFORM Count(OrderID)
- SELECT FirstName&’’&LastName AS FullName
- FROM Employees INNER JOIN Orders
- ON Employees.EmployeeID = Orders.EmployeeID
- WHERE DatePart(“yyyy”,OrderDate)= ‘1996’
- GROUP BY FirstName&’’&LastName
- ORDER BY FirstName&’’&LastName
- POVOT DatePart(“q”,OrderDate)&’季度’
子查詢
子查詢可以理解為 套查詢.子查詢是一個(gè)SELECT語句.
1 表達(dá)式的值與子查詢返回的單一值做比較
語法:
表達(dá)式 comparision [ANY|ALL|SOME](子查詢)
說明:
ANY 和SOME謂詞是同義詞,與比較運(yùn)算符(=,<,>,<>,<=,>=)一起使用.返回一個(gè)布爾值True或 False.ANY的意思是,表達(dá)式與子查詢返回的一系列的值逐一比較,只要其中的一次比較產(chǎn)生True結(jié)果,ANY測(cè)試的返回 True值(既WHERE子句的結(jié)果),對(duì)應(yīng)于該表達(dá)式的當(dāng)前記錄將進(jìn)入主查詢的結(jié)果中.ALL測(cè)試則要求表達(dá)式與子查詢返回的一系列的值的比較都產(chǎn)生 True結(jié)果,才回返回True值.
例:主查詢返回單價(jià)比任何一個(gè)折扣大于等于25%的產(chǎn)品的單價(jià)要高的所有產(chǎn)品
- SELECT * FROM Products
- WHERE UnitPrice>ANY
- (SELECT UnitPrice FROM[Order Details] WHERE Discount>0.25)
2 檢查表達(dá)式的值是否匹配子查詢返回的一組值的某個(gè)值
語法:
[NOT]IN(子查詢)
例:返回庫存價(jià)值大于等于1000的產(chǎn)品.
- SELECT ProductName FROM Products
- WHERE ProductID IN
- (SELECT PrdoctID FROM [Order DEtails]
- WHERE UnitPrice*Quantity>= 1000)
3.檢測(cè)子查詢是否返回任何記錄
語法:
[NOT]EXISTS (子查詢)
例:用EXISTS檢索英國的客戶
- SELECT ComPanyName,ContactName
- FROM Orders
- WHERE EXISTS
- (SELECT *
- FROM Customers
- WHERE Country = ‘UK’ AND
- Customers.CustomerID= Orders.CustomerID)
關(guān)于適合初學(xué)者的MySQL學(xué)習(xí)筆記之MySQL查詢示例就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】






