《MySQL必知必會》練習(3-13)

看《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;
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-TR2QCQwI-1579676977412)(./132.png)]

13.3 過濾分組

  • SELECT vend_id, COUNT() AS num_prods FROM products WHERE prod_price >= 10 GROUP BY vend_id HAVING COUNT() >= 2;列出具有兩個(含)以上、價格爲10(含)以上得產品得供應商。
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-t1da0jmI-1579676977414)(./133.png)]

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子句順序
在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章