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