1. 程式人生 > 其它 >【MySQL_學習筆記】2021.8.18

【MySQL_學習筆記】2021.8.18

  • JOIN 連線
SELECT *
  FROM student JOIN score
            ON student.s_id = score.s_id
SELECT *
  FROM student INNER JOIN score
            ON student.s_id = score.s_id

備註:

(1)JOIN表示加入、連線;ON表示基於...什麼,在...之上,該連線形式稱為內連線或等值連線

(2)在SQL中除了內連線之外還有左連線、右連線等其他形式的連線,由於內連線是最常用的一種形式,所以JOIN語句預設使用內連線(INNERJOIN)

(3)如果在JOIN語句中不指定連線條件,就會形成“全連線”,生成巨大的新表,這種全連線操作,又稱為“笛卡爾積”

SELECT student.s_id,s_name,email,c_id,score
  FROM student INNER JOIN score
            ON student.s_id = score.s_id
SELECT B.s_id,s_name,email,c_id,score
    FROM student AS A INNER JOIN score AS B
            ON A.s_id = B.s_id
SELECT B.s_id,s_name,email,c_id,score
    
FROM student AS A , score AS B WHERE A.s_id = B.s_id

備註:

(1)由於在多表連線操作中,連線後的表中,可能存在來自不同表的同名欄位,因此使用“表名.欄位名”加以區分。為縮短長度或對同一張表“自連線”,可以使用AS給每個原始表起別名

(2)SQL為內連線提供了簡化寫法,使用逗號表示JOIN,WHERE表示ON

  • 內連線的設計思路
SELECT client_name, phone, ROUND(SUM(money),2) AS 收款總額
    FROM (clients INNER JOIN transactions
            
ON clients.client_id = transactions.to_client) WHERE client_name = '金成文'

備註:ROUND(欄位名,保留幾位小數)函式對指定欄位進行四捨五入

SELECT client_name, phone, ROUND(SUM(money),2) AS 收款總額
    FROM (clients INNER JOIN transactions
            ON clients.client_id = transactions.to_client)
    GROUP BY to_client
SELECT client_name, phone, ROUND(SUM(money),2) AS 收款總額
    FROM (clients INNER JOIN transactions
            ON clients.client_id = transactions.to_client)
    WHERE MONTH(tran_time) = 9 
    GROUP BY to_client, client_name, phone
SELECT client_name, phone, ROUND(SUM(money),2) AS 收款總額
    FROM clients , transactions
    WHERE clients.client_id = transactions.to_client
          AND MONTH(tran_time) = 9 
    GROUP BY to_client, client_name, phone

備註:對於同時使用了連線查詢過濾分組語句的查詢可以使用where子句進行簡化,將多個where語句合併為一個子句

SELECT client_id,client_name,open_time,clients.phone
    FROM clients INNER JOIN cheats
      ON clients.client_name = cheats.cheat_name
           AND clients.phone = cheats.phone

備註:innerjoin不只可以根據單一的欄位進行關聯,對於兩個表之間需要通過兩個或更多欄位相關聯的情況,可以使用AND將所有需要的關聯條件相連線