首先我這有兩張表
注意:顧客與訂單之間是一對(duì)多關(guān)系
需求:查詢(xún)哪個(gè)顧客(customer_name)在哪一天(create_time)消費(fèi)了多少錢(qián)(money)
sql語(yǔ)句:
select c.customer_name, o.create_time, o.moneyfrom customer c, orders owhere c.id = o.customer_id
sql語(yǔ)句也可以這樣寫(xiě):
select c.customer_name, o.create_time, o.moneyfrom customer c inner join orders oon c.id = o.customer_id
結(jié)果:
內(nèi)連接的過(guò)程:
將符合條件的記錄組合起來(lái),放在一張新表里面
需求:查詢(xún)哪個(gè)顧客(customer_name)在哪一天(create_time)消費(fèi)了多少錢(qián)(money)
sql語(yǔ)句:
select c.customer_name, o.create_time, o.moneyfrom customer c left join orders oon c.id = o.customer_id
結(jié)果:
從結(jié)果可以很清楚的明白左連接的含義:
將左邊表的所有記錄拿出來(lái),不管右邊表有沒(méi)有對(duì)應(yīng)的記錄
需求:查詢(xún)哪個(gè)顧客(customer_name)在哪一天(create_time)消費(fèi)了多少錢(qián)(money)
sql語(yǔ)句:
select c.customer_name, o.create_time, o.moneyfrom customer c right join orders oon c.id = o.customer_id
結(jié)果:
從結(jié)果可以很清楚的明白右連接的含義:
將右邊表的所有記錄拿出來(lái),不管右邊表有沒(méi)有對(duì)應(yīng)的記錄
這里要注意的是mysql本身并不支持全連接查詢(xún),但是我們可以使用UNION關(guān)鍵字實(shí)現(xiàn)
sql語(yǔ)句:
select c.customer_name, o.create_time, o.moneyfrom customer c left join orders oon c.id = o.customer_idUNIONselect c.customer_name, o.create_time, o.moneyfrom customer c right join orders oon c.id = o.customer_id
結(jié)果:
從sql語(yǔ)句中可以清楚的看到:
使用UNION關(guān)鍵字將左連接和右連接,聯(lián)合起來(lái)
聯(lián)系客服