看《MySQL必知必會》
第三章
3.3 瞭解數據庫和表
-
show databases;返回可用數據庫的一個列表。
-
show tables;返回當前選擇的數據庫內可用表的列表。
-
show columns form (表名);返回要查詢的表的每一列的屬性。
-
show status;用於顯示廣泛的服務器狀態信息。
-
show create database和show create table,分別用來顯示創建特定數據庫或表的Mysql語句。
-
show grants;用來顯示授予用戶的安全權限。
-
show errors和show warnings;用來顯示服務器錯誤或警告信息。
第四章 檢索數據
4.2 檢索單個列
-
select pod_name from products; 從products表中檢索一個名爲prod_name的列。
4.3 檢索多個列 -
select prod_id,prod_name,prod_price from products;
4.4 檢索所有列
- select * from products;
4.5 檢索不同的列
- select distinct vend_id from products;
4.6 限制結果
- select prod_name from products limit 5,5;第一個數爲開始位置,第二個數爲要檢索的行數。
4.7 使用完全限定的表明
- select products.prod_name from study.products;
第五章 排序檢索數據
5.1 排序數據
- select prod_name from products order by prod_name;以字母順序排序數據。
5.2 按多個列排序
- select prod_id, prod_price, prod_name from products order by prod_price, prod_name;首先按價格,然後按名字排序。(多個列排序時,僅在多個行具有相同的prod_price值時,纔對產品按prod_name進行排序。)
5.3 指定排序方向
- select prod_id, prod_price, prod_name from products order by prod_price desc, prod_name;(默認的排序爲順序)desc關鍵字只應用到直接位於前面的列名。
- select prod_price from products order by prod_price desc limit 1;找出最昂貴物品的值。
第六章 過濾數據
6.1使用where子句
- SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;返回prod_price值爲2.50的行。
where子句操作符
操作符 | 說明 |
---|---|
= | 等於 |
<> | 不等於 |
!= | 不等於 |
< | 小於 |
<= | 小於等於 |
> | 大於 |
>= | 大於等於 |
between | 在指定的兩個值之間 |
6.2.1檢查單個值
-
SELECT prod_name, prod_price FROM products WHERE prod_name = ‘fuses’;返回prod_name的值爲fuses的一行。
-
SELECT prod_name, prod_price FROM products WHERE prod_price <= 10;檢索小於等於10的所有產品。
6.2.2 不匹配檢查
- SELECT vend_id, prod_name FROM products WHERE vend_id <> 1003;不由供應商1003製造的所有產品。
6.2.3 範圍檢查
- SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;檢索在5美元和10美元之間的所有產品。
6.2.4 空值檢查
-
SELECT prod_name FROM products WHERE prod_price IS NULL;檢查具有NULL值的列。
-
SELECT cust_id FROM customers WHERE cust_email IS NULL;
第七章 數據過濾
7.1 組合WHERE子句
操作符用來聯結或改變WHERE子句中的子句的關鍵字。也稱爲邏輯操作符。
7.1.1 AND操作符
AND 用在WHERE子句中的關鍵字,用來指示檢索滿足所有給定條件的行。
- SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10;檢索供應商1003製造且小於等於10美金的所有的名稱和價格。
7.1.2 OR操作符
OR 檢索匹配任一條件即可。
- SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003;檢索由任一個指定供應商製造的所有產品的產品名和價格。
7.1.3計算次序
-
SELECT prod_name, prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10;優先處理AND操作符。
-
SELECT prod_name, prod_price FROM products WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;
7.2 IN操作符
- SELECT prod_name, prod_price FROM products WHERE vend_id IN (1002,1003) ORDER BY prod_name;檢索供應商1002和1003製造的所有產品。(功能與OR相當)
7.3 NOT操作符
NOT WHERE子句中用來否定後跟條件的關鍵字。
- SELECT prod_name, prod_price FROM products WHERE vend_id NOT IN(1002,1003) ORDER BY prod_name;檢索除了1002和1003之外的所有供應商製造的產品。
第八章 用通配符進行過濾
8.1 LIKE操作符
通配符 用來匹配值的一部分的特殊字符。
搜索模式 由字面值、通配符或兩者組合構成的搜索條件。
LIKE操作符,指示MySQL,後跟的搜索模式利用通配符匹配而不是直接相等進行比較。
8.1.1 百分號(%)通配符
**%**表示任意和字符出現任意次數。
-
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE ‘jet%’;檢索任意以jet起頭的詞。
-
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE ‘%anvil%’;
8.1.2 下劃線(_)通配符
**(_)**用途與%一樣,但下劃線只匹配單個字符而不是多個字符。
- SELECT prod_id, prod_name FROM products WHERE prod_name LIKE ‘_ ton anvil’;
第九章 用正則表達式進行搜索
9.1 正則表達式介紹
正則表達式是用來匹配文本的特殊的串(字符集合)。
9.2 使用MySQL正則表達式
9.2.1 基本字符匹配
-
SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000’ ORDER BY prod_name;檢索prod_name包含文本1000的所有行。
-
SELECT prod_name FROM products WHERE prod_name REGEXP ‘.000’ ORDER BY prod_name;’.'表示匹配任意一個字符。
9.2.2 進行OR匹配
爲搜索兩個串之一,使用|。
- SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000|2000’ ORDER BY prod_name;
9.2.3 匹配幾個字符之一
- SELECT prod_name FROM products WHERE prod_name REGEXP ‘[123] Ton’ ORDER BY prod_name;[123]定義一組字符,它的意思時匹配1或2或3。
9.2.4 匹配範圍
- SELECT prod_name FROM products WHERE prod_name REGEXP ‘[1-5] Ton’ ORDER BY prod_name;
9.2.5 匹配特殊字符
爲了匹配特殊字符,必須用\爲前導。
- SELECT vend_name FROM vendors WHERE vend_name REGEXP ‘\\.’ ORDER BY vend_name;
9.2.6 匹配字符類
字符類
9.2.7 匹配多個實例
重複元字符
-
SELECT prod_name FROM products WHERE prod_name REGEXP ‘\\([0-9] sticks?\\)’ ORDER BY prod_name;\\(匹配),[0-9]匹配任意數字,sticks?匹配stick和sticks(?匹配它前面的任何字符的0次或一次出現),\\)匹配)。
-
SELECT prod_name FROM products WHERE prod_name REGEXP ‘[[:digit:]]{4}’ ORDER BY prod_name;匹配連在一起的任意4位數字。
9.2.8 定位符
定位元字符
- SELECT prod_name FROM products WHERE prod_name REGEXP ‘^[0-9\.]’ ORDER BY prod_name;查找以一個數(包含以小數點開始的輸)開始的所有產品。
第十章 創建計算字段
10.2 拼接字段
拼接 將值聯結到一起構成單個值。
可用Concat()函數來拼接兩個列。
-
SELECT Concat(vend_name,’(’,vend_country,’)’) FROM vendors ORDER BY vend_name;
-
SELECT Concat(RTrim(vend_name),’(’,RTrim(vend_country),’)’) FROM vendors ORDER BY vend_name;RTrim()函數去掉值右邊的所有空格。
使用別名
- SELECT Concat(RTrim(vend_name),’(’,RTrim(vend_country),’)’) AS vend_title FROM vendors ORDER BY vend_name;
10.3 執行算數計算
- SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM orderitems WHERE order_num = 20005;
第十一章 使用數據處理函數
11.2.1 文本出路函數
- SELECT vend_name, Upper(vend_name) AS vend_name_upcse FROM vendors ORDER BY vend_name;Upper()將文本轉換爲大寫。
常用的文本處理函數
SOUNDEX是一個將任何文本串轉換爲描述氣語音表示的字母數字模式的算法。
11.2.2 日期和時間處理函數
常用日期和時間處理函數
- SELECT cust_id, order_num FROM orders WHERE Date(order_date) BETWEEN ‘2005-09-01’ AND ‘2005-09-30’;
11.2.3 數據處理函數
常用數據處理函數
第十二章 彙總數據
12.1 聚集函數
運行在行組上,計算和返回單個值得函數。
SQL聚集函數
12.1.1 AVG()函數
- SELECT AVG(prod_price) AS avg_price FROM products WHERE vend_id = 1003;
12.1.2 COUNT()函數
- SELECT COUNT(*) AS num_cust FROM customers;
12.2 聚集不同值
- SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id = 1003;
12.3 組合聚集函數
- SELECT COUNT(*) AS num_items, MIN(prod_price) AS price_min, MAX(prod_price) AS price_max, AVG(prod_price) AS price_avg FROM products;
第十三章 分組數據
13.2 創建分組
分組實在SELECT語句得GROUP BY子句中建立得。
- SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id;
13.3 過濾分組
- SELECT vend_id, COUNT() AS num_prods FROM products WHERE prod_price >= 10 GROUP BY vend_id HAVING COUNT() >= 2;列出具有兩個(含)以上、價格爲10(含)以上得產品得供應商。
13.4 分組和排序
- SELECT order_num, SUM(quantityitem_price) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(quantityitem_price) >= 50 ORDER BY ordertotal;
13.5 SELECT子句順序