SQL Server sql语句演练一
说明:现为某电脑配件销售公司开发一个产品订购管理系统,经过需求分析,得出此系统的部分
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
以及关于表的定义如下:
Product
字段
备注
字段
备注
Pid
PK,产品编号
Pspec
产品规格
Pname
产品名称
Price
单价
Product表备注:产品表,记录产品的基本信息
Customer
字段
备注
字段
备注
Cid
PK客户编号
Address
联系地址
Cname
客户名称
PostCode
邮政编码
Contact
联系人
Tel
电话
Customer表备注:客户表,记录客户的基本信息
Orders
字段
备注
字段
备注
Oid
PK订单编号
OrderDate
订购日期,
Smalldatetime:记录年月日,时分秒,默认当前日期
Cid
FK客户编号
SendDate
发货日期
Orders表备注:订单表,记录客户提交订单的时间以及发货时间。
OrderDetail
字段
备注
字段
备注
Oid
订单编号,FK,引用Orders
Amount
数量
Pid
产品编号,FK,引用Product
Total
总金额
OrderDetail表备注:订单明细表,记录客户提交的订单对应的明细。
1、附加数据库,在SalesManage数据库中只有Product表、Customer表和Orders表,请根据要求创建OrderDetail表,具体要求如下
OrderDetail
字段
类型
可否为空
备注
Oid(订单编号)
否
FK,引用Orders
Pid(产品名称)
否
FK,引用Product
Amount(数量)
否
限制数量值>0
Total(总金额)
主键:Oid+Pid
数据准备:执行如下语句,向已创建好的OrderDetail表中添加数据
insert into OrderDetail values ('20091001','PR200901',10,null)
insert into OrderDetail values ('20091001','PR200902',100,null)
insert into OrderDetail values ('20091002','PR200901',10,null)
insert into OrderDetail values ('20091002','PR200903',200,null)
insert into OrderDetail values ('20091003','PR200905',5,null)
insert into OrderDetail values ('20091003','PR200908',1000,null)
insert into OrderDetail values ('20091004','PR200901',20,null)
insert into OrderDetail values ('20091004','PR200907',500,null)
insert into OrderDetail values ('20091005','PR200910',1000,null)
insert into OrderDetail values ('20091005','PR200902',300,null)
insert into OrderDetail values ('20091006','PR200901',50,null)
insert into OrderDetail values ('20091006','PR200902',400,null)
insert into OrderDetail values ('20091007','PR200901',15,null)
insert into OrderDetail values ('20091007','PR200906',160,null)
insert into OrderDetail values ('20091008','PR200903',10,null)
insert into OrderDetail values ('20091008','PR200909',80,null)
insert into OrderDetail values ('20091009','PR200901',60,null)
insert into OrderDetail values ('20091009','PR200902',200,null)
insert into OrderDetail values ('20091010','PR200907',100,null)
insert into OrderDetail values ('20091010','PR200908',100,null)
insert into OrderDetail values ('20091011','PR200901',20,null)
insert into OrderDetail values ('20091012','PR200909',500,null)
insert into OrderDetail values ('20091013','PR200910',1000,null)
insert into OrderDetail values ('20091014','PR200906',100,null)
insert into OrderDetail values ('20091015','PR200901',10,null)
2、此刻交大计算机学院(客户号C2009002)网上订购了配件如下:
a、爱国者H8161(250GB)移动硬盘两个(产品号PR200902)
b、三星2494HS(23.6英寸)液晶显示器两台(产品号PR200903)
客户提交订单后,系统生成的订单号为20091017。请通过相应的SQL语句完成订单的提交以及明细的登记。
答:
3、公司相关部门两天后为交大计算机学院本次订购处理发货,请通过相应的SQL语句更新20091017的发货日期为当前日期。
答:
4、某客户想在网上订购显示器,需要检索该配件公司代理的各种显示器的信息,要求按价格降序显示(显示产品名称,产品价格,产品规格,显示时用中文命名各列)
答:
5、客服人员每天要查看客户相关的订购信息,以通知物流部门。请检索2009-6-13的订单信息 (显示订单号,客户号)。
答:
6、物流部门配送发货之前需要了解客户的联系方式。请检索订单号为20091015的订购客户其联系人,联系电话以及联系地址。
答:
7、部门主管需要统计2009年各个月份的订单数量。请通过相应的SQL语句完成该业务需求。
答:
8、检索各个配件的销售额,按销售额降序排列。(产品名称,规格,销售总量) (难),注意有销售,没销售的都要统计。
9、编写一条select语句,查询2009年上半年订货数量大于1000的订单信息。(难)
10、把orderdetail表中的“总金额”用该货品在product表中的“价格”与在orderdetail表中的订货“数量”的乘积代替。更新该列数据。(难)
11、建立一张新表NoOderCustomer,保存没有订货记录的客户信息。(难)
提示用: select ..into NoOderCustomer from ..
将临时结果集保存为一张表,命名为NoOderCustomer。
12、删除客户号为’C2009003’的订购明细。
答:
13、分离数据库
第2页,共4页