對訂單數據庫進行查詢等操作
對於表結構:
1、代理商(代理商編號、姓名、地址、郵政編碼、提成金額、提成比例)
其中代理商編號為primary key(主碼)
字段名 | 數據類型 | 備注 |
---|---|---|
代理商編號 | char(4) | primary key |
姓名 | nvarchar(10) | |
地址 | nvarchar(20) | |
郵政編碼 | char(6) | |
提成金額 | smallmoney | |
提成比例 | tinyint |
2、客戶(客戶編號、姓名、地址、郵政編碼、收支差額、貸款限額、代理商編號)
其中客戶編號為primary key(主碼)
字段名 | 數據類型 | 備注 |
---|---|---|
客戶編號 | char(4) | primary key |
姓名 | nvarchar(10) | |
地址 | nvarchar(20) | |
郵政編碼 | char(6) | |
收支差額 | smallmoney | |
貸款限額 | smallmoney | |
代理商編號 | char(4) | foreign key |
3.產品(產品編號、描述信息、庫存量、類別、倉庫的編號、價格)
其中產品的編號為primary key(主碼)
字段名 | 數據類型 | 備注 |
---|---|---|
產品編號 | char(4) | primary key |
描述信息 | nvarchar(20) | |
庫存量 | int | |
類別 | tinyint | |
倉庫編號 | char(4) | |
價格 | smallmoney |
4.訂單(訂單編號、訂貨日期、客戶編號)
字段名 | 數據類型 | 備注 |
---|---|---|
訂單編號 | char(4) | primary key |
訂貨日期 | Smalldatetime | |
客戶編號 | char(4) | foreign key |
5.訂貨項目(訂單編號、產品編號、訂購數量、訂購單價)
字段名 | 數據類型 | 備注 |
---|---|---|
訂單編號 | char(4) | primary key , foreign key |
產品編號 | char(4) | primary key, foreign key |
訂購數量 | smallint | |
訂購單價 | smallmoney |
查詢倉庫編號為1002的產品總庫存量,顯示倉庫編號,總庫存量
select 倉庫編號,sum(庫存量) as 總庫存量 from 產品
group by 倉庫編號
having 倉庫編號='1002'
查詢提成金額最高的代理商,顯示代理商編號、姓名、地址、提成金額
select 代理商編號,姓名,地址,提成金額 from 代理商
where 提成金額 in (select max(提成金額) from 代理商)
查詢編號為300的客戶通過的代理商的姓名和地址
select a.姓名,a.地址 from 客戶 b inner join 代理商 a
on a.代理商編號 = b.代理商編號
where b.客戶編號 = '300'
查詢產品編號為0033、訂購數量大於100的客戶編號及其姓名
注:這里所說的訂購數量是統計顧客總共訂購編號為0033產品的數量。因為,可能同一個顧客是在多個不同訂單中訂購了0033產品。
select a.客戶編號,a.姓名 from 客戶 a inner join 訂單 b
on a.客戶編號 = b.客戶編號
inner join 訂貨項目 c
on b.訂單編號 = c.訂單編號
group by a.客戶編號,a.姓名,c.產品編號
having sum(c.訂購數量)>100 and c.產品編號='0033'
查詢每個客戶的訂單,顯示客戶編號、客戶名、訂單編號及訂貨日期
select a.客戶編號,a.姓名,b.訂單編號,b.訂貨日期 from 客戶 a
inner join 訂單 b on a.客戶編號 = b.客戶編號
查詢所有2000年以后(不包括2000年)的訂貨項目,顯示且僅顯示訂單編號,產品編號,訂購數量,訂購單價
select a.訂單編號,a.產品編號,a.訂購數量,a.訂購單價 from 訂貨項目 a
inner join 訂單 b on a.訂單編號 = b.訂單編號
where (DATEPART(yy,b.訂貨日期))>2000
查詢提成金額為100000以上(含100000)的代理商所對應的客戶姓名
select a.姓名 from 客戶 a inner join 代理商 b
on a.代理商編號 = b.代理商編號
where b.提成金額>=100000
建立含有訂單編號及該訂單的客戶編號和代理商編號三個字段的視圖,名為訂單信息視圖
create view 訂單信息視圖 as
select b.訂單編號,a.客戶編號,a.代理商編號 from 客戶 a
inner join 訂單 b on a.客戶編號 = b.客戶編號
從訂單信息視圖中,查詢訂單編號為111的產品信息(包括訂單編號、客戶編號、代理商編號)
select 訂單編號,客戶編號,代理商編號 from 訂單信息視圖
where 訂單編號 = '111'
建立一個含有產品編號、產品庫存量及產品在訂量三個字段的視圖,名為產品信息視圖
注:① 產品在定量指產品已經累計被訂購的數量
② group by 子句可以將查詢結果按某一列或多列的值進行分組,但出現在select后面的字段 要么是聚合函數中的,要么是在group by 中的。
create view 產品信息視圖 as
select a.產品編號,a.庫存量,sum(b.訂購數量) as 產品在定量 from 產品 a
inner join 訂貨項目 b on a.產品編號 = b.產品編號
group by a.產品編號,a.庫存量
從產品信息視圖中,查詢產品在定量大於6100的產品,顯示產品編號及產品在定量
select 產品編號,產品在定量 from 產品信息視圖
where 產品在定量>6100
建立一個含有客戶編號、客戶所訂的產品編號、該產品的訂購單價及該產品的描述四個字段的視圖,名為客戶訂購產品視圖
create view 客戶訂購產品視圖 as
select a.客戶編號,b.產品編號,b.訂購單價,c.描述信息 from 訂單 a
inner join 訂貨項目 b on a.訂單編號 = b.訂單編號
inner join 產品 c on b.產品編號 = c.產品編號
從客戶訂購產品視圖中,查詢所訂購的產品的訂購單價<=1000的客戶編號
select 客戶編號 from 客戶訂購產品視圖
where 訂購單價 <=1000
group by 客戶編號