左連線之後資料變多了 SQL核心語句之資料表間連線

2021-10-12 18:27:17 字數 2914 閱讀 5586

本章要寫的是sql第三種核心語句,也就是資料表間連線,結構分為5個部分,如下:

什麼是表間連線;

等值連線;

左連線;

右連線;

案例;為什麼會出現這種跨表間資料查詢和分析呢?因為需要查詢和過濾的資料分布在不同的表之間,而表與表之間是共享資料列的,使用資料表連線join 來合併兩個資料表中的資料。

等值連線是表間連線方式之一,它的關鍵字是:inner join,代表的意思是---返回兩個表中連線字段相等的行,合併表中資料。

等值連線的語法是:select from    inner join   on = 。

3、左連線

左連線,意思是---返回包括左表中的所有記錄右表中連線字段相等的記錄,關鍵字:left join,語法是:select from    left join   on = 。

4、右連線

右連線,意思是---返回包括右表中的所有記錄和左表中連線字段相等的記錄,關鍵字:right join,語法是:

select from    right join   on = 。

右連線一般可以被左連線代替,不常用。

5、案例

a、查詢所有在2018-01-01之後消費過的顧客資訊,列出customer_id,last_name,first_name,city,phone_number,多次消費的顧客顯示一次。

select distinct  a.`customer_id`,    concat(b.`last_name`,b.`first_name`)as `name`,    b.`city`,    b.`phone_number`# 左表名-訂單資訊表afrom `order_info` as a# 右表名-顧客資訊表binner join `customer_info` as b# 左右表鍵值列名-顧客號碼on a.`customer_id`=b.`customer_id`where a.`create_time`>'2018-01-01';
b、查詢所有**商及其提供的產品資訊,列出**商號碼,公司,產品號碼,產品名稱。 思路:要用左連線。

select    a.`supplier_id`,    a.`company`,    b.`product_id`,    b.`product_namefrom `supplier_info`as aleft join `product_info`as bon a.`supplier_id`=b.`supplier_id`;
c、查詢所有顧客資訊及其最近購買日期,列出customer_id,name,last_create_time。

select  a.`customer_id`,    concat(a.`last_name`,a.`first_name`) as `name`,# 建立時間的最大值就是最近值    max(b.`create_time`)as `last_create_time`from `customer_info`as aleft join `order_info`as bon a.`customer_id`=b.`customer_id`# 需要聚合左表指定列的結果group by a.`customer_id`,`name`;
d、查詢所有**商及其提供的產品資訊,列出product_id,product_name,supplier_id,company。

select  a.`product_id`,    a.`product_name`,    b.`supplier_id`,    b.`company`from `product_info` as aright join `supplier_info` as bon a.`supplier_id`=b.`supplier_id`;         # 第二種 用left joinselect  a.`supplier_id`,    a.`company`,    b.`product_id`,    b.`product_namefrom `supplier_info` as aleft join `product_info` as bon a.`supplier_id`=b.`supplier_id`;
e、查詢所有2018-01-01之後各個訂單中購買數量超過10 的訂單以及產品的詳細資訊。列出訂單號碼(order_id),訂單日期(create_time),購買數量(sales_count),產品號碼(product_id),產品名稱(product_name)。

select  a.`order_id`,    a.`create_time`,    b.`sales_count`,    b.`product_id`, /* 產品號碼是屬於訂單明細表的 */    c.`product_name`from `order_info` as aleft join `order_details` as bon a.`order_id`=b.`order_id`left join `product_info` as con b.`product_id`=c.`product_id`where a.`create_time`>'2018-01-01' and b.`sales_count`>10;
上腦圖一張:

本人正在找資料分析方面的工作,求收留啊(乞討的趕腳)

維護資料表常用SQL語句

逐漸接觸多人團隊erp軟體開發了。設計發布新的模組時候總結了下以前的同時的風格。總結出下面的經驗。其實這些語法在以往都有研究。但是系統用起來發現還是不那麼容易記得住,所以記下在此。新增資料表說明 execute sp addextendedproperty ms description 資料表說明 ...

使用SQL語句建立資料表

create database test usetest 使用text庫,作為當前查詢的庫 create table tbclass clsid intprimary keyidentity 1,1 班級編號自增,主鍵,逗號後值為增量 clsname nvarchar 16 unique,唯一性約束...

動態SQL語句建立資料表

寫儲存過程,我們會經常需要動態創資料表,如臨時表等。下面例子是使用execute來建立乙個資料表。宣告乙個變數 declare tablename nvarchar 30 dummytablename 動態建立表,execute 判斷表物件是否存在,if object id dbo tablenam...