本章要寫的是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...