• 对订单数据库进行查询等操作


    对订单数据库进行查询等操作

    对于表结构:

    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 客户编号
    
    
  • 相关阅读:
    20150112-夜深,人不静
    20150111-谁会记得
    20150110-我希望我的歌声里都是希望
    20150102-霰现
    20150116-卵子
    20150109-放弃了一切希望
    20150105-条大路哟
    笔记:使用 stylus stylus-loader
    如何处理烫伤的伤口?
    连电子硬件行业都在开始使用 Git 了你还在等什么?
  • 原文地址:https://www.cnblogs.com/lightice/p/12727933.html
Copyright © 2020-2023  润新知