【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 语句默认使用内连接(INNER JOIN)

(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

备注:inner join 不只可以根据单一的字段进行关联,对于两个表之间需要通过两个或更多字段相关联的情况,可以使用 AND 将所有需要的关联条件相连接

posted @ 2021-08-23 14:01  ZzzRed  阅读(40)  评论(0)    收藏  举报