mysql實際開發常用基礎知識

  •  DISTINCT:只返回不同的值

SELECT DISTINCT id FROM products;

  •  LIMIT N:返回不多於N行

SELECT id FROM products LIMIT 5;

  • LIMIT M, N:第一個數M爲開始位置,第二個數N爲要檢索的行數

SELECT id FROM products LIMIT 5,4;

  •  ORDER BY:首先按價格排序,再按名稱排序(升序)

SELECT * FROM products ORDER BY prod_price, prod_name;

  • ORDER BY:首先按價格排序(降序),再按名稱排序(升序)

SELECT * FROM products ORDER BY prod_price DESC, prod_name (LIMIT 1);

  • LIKE:通配符進行過濾。%表示任何字符出現任意次數;_表示匹配任意單個字符。

SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '_ello';
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '%llo';

  • REGEXP:正則表達式

SELECT prod_name FROM products WHERE prod_name REGEXP '.000' ORDER BY prod_name;


1. 匹配兩個字符 |
SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;


2. 匹配多個字符 []
SELECT prod_name FROM products WHERE prod_name REGEXP '[123]000' ORDER BY prod_name;


3. 匹配範圍 [0-9] [a-z]
SELECT prod_name FROM products WHERE prod_name REGEXP '[1-3]000' ORDER BY prod_name;


4. 匹配特殊字符 \\. \\-
SELECT prod_name FROM products WHERE prod_name REGEXP '\\.' ORDER BY prod_name;


5. 匹配字符類
[:alnum:]任意字母和數字(同[a-zA-Z0-9])
[:alpha:]任意字母(同[a-zA-Z])
[:digit:]任意數字(同[0-9])
[:lower:]任意小寫字母(同[a-z])
[:upper:]任意大寫字母(同[A-Z])
\* 0個或多個匹配
\+ 1個或多個匹配
? 0個或1個匹配
{n} 指定數目的匹配
{n,} 不少於指定數目的匹配
{n,m} 匹配數目的範圍
SLECT prod_name FROM products WHERE pro_name REGXP '[[:digit:]]{4}' ORDER BY prod_name;


6. 定位符
^ 文本的開始
$ 文本的結束
[[:<:]] 詞的開始
[[:>:]] 詞的結尾
SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]' ORDER BY prod_name;

 

  • 執行算術計算

SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM orderitems WHERE order_num = 2005;

 

  • 分組數據

1. AVG() 通過對錶中行數計數並計算特定列值之和,求得該列的平均值

         SELECT AVG(prod_price) AS avg_price FROM products WHERE vend_id = 1003;


2. COUNT()函數進行計數。可利用COUNT()確定表中行的數目或符合特定條件的行數目
         SELECT COUNT(*) AS num_cust FROM customers;#利用COUNT(*)對所有行計數
        SELECT COUNT(cust_email) AS num_cust FROM customers;#對cust_email字段爲NULL的忽略


3. MAX()返回指定列中的最大值
         SELECT MAX(prod_price) AS max_price FROM products;


4. MIN()返回指定列中的最小值
         SELECT MIN(prod_price) AS min_price FROM products;


5. SUM()用來返回指定列值的和(總計)
         SELECT SUM(quantity) AS items_ordered FROM orderitems WHERE order_num = 20005;


6. 聚集不同值
        SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE order_id = 1003;


7. 組合聚集函數
         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;


8. 子查詢
         SELECT cust_id FROM orders WHERE order_num IN(SELECT order_num FROM orderitems WHERE prod_id = 'TNT2');
       【運營表】select t1.uid, t1.prize_code, t2.prize_code as jxq_code, t2.prize_tpl_code from t_user_redpacket t1, t_user_coupon t2 where t1.uid = t2.uid;


9. 作爲計算字段使用子查詢
        SELECT cust_name, cust_state, (SELECT COUNT(*) FROM orders WHERE orders.cust_id = customer.cust_id) AS orders FROM customers ORDER BY cust_name;
       【運營表】select uid, prize_code from t_user_redpacket WHERE uid in (SELECT uid from t_user_coupon WHERE prize_tpl_code = 'JXQ4bb6eadc9ab9');
       【運營表】select DISTINCT uid, (SELECT count(*) FROM t_user_coupon WHERE t_user_coupon.uid = t_user_redpacket.uid) AS tpl_count FROM t_user_redpacket;


10. 內部聯結
         SELECT vend_name, prod_name, prod_price FROM vendors INNER JOIN products ON vendors.vend_id = products.vend_id;


11. 左聯結
         SELECT vend_name, prod_name, prod_price FROM vendors LEFT JOIN products ON vendors.vend_id = products.vend_id;


12. 右聯結
        SELECT vend_name, prod_name, prod_price FROM vendors RIGHT JOIN products ON vendors.vend_id = products.vend_id;


13. 多表查詢或聯表查詢
      【會員體系】SELECT uid, name, sex FROM t_member;
      【會員體系】  SELECT uid, name FROM t_welfare_record;
      【會員體系】SELECT t1.uid, t1.name, t1.sex FROM t_member t1, t_welfare_record t2 WHERE t1.uid = t2.uid;


14. union:在單個查詢中從不同的表返回類似結構的數據;對單個標執行多個查詢,按單個查詢返回數據
        SELECT vend_id, prod_id, prod_price FROM products WHERE prod_price <= 5
        union SELECT vend_id, prod_id, prod_price FROM products WHERE vend_id IN (1001,1002) ORDER BY vend_id, pord_proice;


15. 存儲過程簡單來說,就是爲以後的使用而保存的一條或多條mysql語句的集合。可將其視爲批處理文件,雖然它們的作用不限於批處理。

 

 16.SQL SELECT INTO 語句可用於創建表的備份復件。

         SELECT INTO 語句從一個表中選取數據,然後把數據插入另一個表中。

         SELECT INTO 語句常用於創建表的備份復件或者用於對記錄進行存檔。

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