MYSQL 高級語法

1.高級建表和插入html

  使用creat 和select 進行建表操做,中間採用AS 標識符;spa

CREATE TABLE new_table
AS
SELECT *
FROM exist_table
LIMIT 10;

  從一個表中複製列插入到指定的表中:code

INSERT INTO table2
SELECT * FROM table1;

 2.select 子查詢htm

  子查詢就是一個select 語句做爲另外一個查詢語句的輸入值,主要分爲如下三種狀況:blog

  • 出如今where 語句處 的子查詢語句,做用是做爲過濾的條件來使用;
    Select 列名
    From 表名
    Where 列 操做符 (Select 列名 From 表名)

    ******使用注意:
    (1)子查詢語句必須針對一個字段進行查詢操做,不然拋錯:Operand should contain 1 column(s
  • 出如今from 語句處的子查詢語句,做用是做爲一個臨時的表進行查詢;
    Select 字段
    fromselect * from 表名)as 別名

    *********此處的使用注意:
    (1)子查詢在from 語句以後,其實就是生成了一個臨時表,因此子查詢能夠查詢多個字段;
    (2)子查詢 在from 以後的時候,必需要對錶取一個別名進行使用
  • 出如今Select list 語句處的子查詢語句,做用是做爲一個字段值進行返回;
select 字段1,(select 字段2 from 表名)
from 表名

***********此處的使用注意:
(1)子查詢語句必須針對一個字段進行查詢操做,不然拋錯:Operand should contain 1 column(s)
(2)子查詢語句返回的必須是一行數據,不然拋錯:Subquery returns more than 1 row

3.多表操做排序

  • 行合併操做
    格式:
    select * 
    from 表A 
    union (union All)
    select * 
    from 表B;
    
    ******使用注意:
    (1)操做合併的兩個表,必須是字段或者列數相同;
    (2)union 對錶作合併操做的時候,會進行去重操做;
    (3)union all 對錶作合併操做的時候,不會進行去重操做;
    (4)使用合併操做的時候,不能進行order by操做,若是須要進行排序操做,能夠在合併表結束後,使用子查詢的方式,進行order by 操做; 

 4.行結合  Join :數據分析

  SQL 的join 子句基於多個表之間的相同字段,進行表之間的行結合操做,主要分爲Left Join,Right Join ,Inner Join ,Full Outer Join四種,如下爲這四種操做描述:io

  • INNER JOIN:Join 操做的默認操做(使用Join 便可表示Inner Join ),若是關鍵字在表中存在一個匹配的時候,則返回行;
     
  • LEFT JOIN:左表返回全部行,右表進行匹配,若是有匹配值,則返回對應的字段值,若是沒有匹配值,則所有置爲Null 值;
     
  • RIGHT JOIN:與Left Join 操做相反,右表返回全部行,左表進行匹配,若是有匹配值,則返回對應的字段值,若是沒有匹配值,則所有置爲Null 值;
     
  • FULL Outer JOIN:關鍵字只要左表和右表其中一個表中存在匹配,則返回行,它結合了 LEFT JOIN 和 RIGHT JOIN 的結果;

  

  注意事項:table

  

1)多表關聯的核心原理在於笛卡爾積,參考文章(https://www.cnblogs.com/nick-huang/p/4919178.html#my_inner_label1);
2)多表關聯可能會致使數據的重複,也就是在創建關聯時的 1:1,1:N,N:N 的形式,因此須要注意數據的去重工做,要先處理每一個表的數據,再進行關聯操做;

5.MySql 變量class

  • 變量的使用場景:
    1)代碼中不少地方都會重複用到同一段代碼;
    2)每次從新使用代碼的時候,可能只須要修改某些參數便可;例如:時間,區域
    3)構建一個標識字段,幫助作數據分析判別。例如:對某類型字段進行排序分析;
  • 變量的定義規則: 
    1)變量聲明: 使用@變量名;
    2)變量命名組成元素能夠是:字母、數字、下劃線、‘.’ 、'$'幾種元素;
    3)變量的賦值:
            使用: set @變量名 =value;
            使用: set @變量名 :=value;
            使用: select 方式賦值:select @變量名:=value;(注意:該種方式聲明變量只能使用‘:=’進行,由於在select 語句中 ‘=’會被認爲是比較操做符)
    4)變量的使用:直接調用變量名便可;
    **********注意:
    變量的聲明屬於會話級別,因此變量在SQL 定義完成並執行後纔會有,變量沒法指定變量的類型,是在賦值的時候自動推斷變量的類型;  
相關文章
相關標籤/搜索