一、实验目的
1、巩固并掌握数据定义语言的使用,在定义关系模式的过程中进一步理解数据类型和各类约束对实现数据完整性的作用。
2、巩固并掌握数据操纵语言的使用,正确认识数据定语言和数据操纵语言的作用。
3、熟练掌握数据查询语言的使用,理解并掌握视图的一般应用。
注意:不得网上抄袭(从添加的记录、设计的查询等重复度可以看出)!
二、实验类型
综合型
三、实验环境
CPU 2.0 GHz, 1.0 G Memory;WindowsXP, SQL Server 2005/2008。
四、实验内容及步骤
1、为销售管理子系统创建数据库。
(数据库名称可自定)
2、根据需求分析该数据库需要的关系模型(数据表)如下:
▪顾客:{顾客号,顾客名,地址,电话,信贷状况,账目余额}
▪订单:{订单号,顾客号,订货项数,订货日期,交货日期,操作员,生产地点}
▪订单细则:{订单号,细则号,产品号,订货数量,金额}
▪单细则中每个订单号对应2-3条
▪应收账款:{顾客号,订单号,发票号,应收金额,支付日期,支付金额,
当前余额,货款限额}
▪产品:{产品号,产品名,单价,重量}
▪折扣规则:{产品号,订货量,折扣}
要求:在数据库中用SQL语言创建这些数据表,在创建的过程中为每个属性列选择合理的数据类型,为每张表设置主键(主码),对可以设置外键(外码)的表设置外键。
其他类型的约束(not null,unique、check)可根据需要进行应用。
3、用SQL语言在“产品”表中添加一个属性:单位。
(注:不是工作单位的意思)
添加代码
添加结果
4、用SQL语言向这6张表添加记录。
要求:每张表都需要添加3条以上的记录,其中订单细则中每个订单号对应2-3条细则。
填写的过程注意表与表之间(主键表和外键表)记录的联系。
顾客:
订单:
use yoo
INSERT INTO订单V ALUES (
'111','1','100','2019-9-1','2019-10-1','qj','浙江'
)
INSERT INTO订单V ALUES (
'222','2','100','2019-9-1','2019-10-1','qj','浙江'
)
INSERT INTO订单V ALUES (
'333','3','100','2019-9-1','2019-10-1','qj','浙江'
)
订单细则:
use yoo
INSERT INTO订单细则V ALUES (
'111','11','9999','200','50000'
)
INSERT INTO订单细则V ALUES (
'222','22','8888','100','30000'
)
INSERT INTO订单细则V ALUES (
'333','33','7777','300','20000'
)
应收账款:
use yoo
INSERT INTO应收账款V ALUES (
'1','111','1234','50000','2019-10-1','50000','200','30000' )
INSERT INTO应收账款V ALUES (
'2','222','2134','30000','2019-10-1','50000','200','30000' )
INSERT INTO应收账款V ALUES (
'3','333','3234','20000','2019-10-1','50000','200','30000' )
折扣规则:
use yoo
INSERT INTO折扣规则V ALUES (
'111','9999','六折'
)
INSERT INTO折扣规则V ALUES (
'222','8888','六折'
)
INSERT INTO折扣规则V ALUES (
'333','7777','六折'
)
产品:
use yoo
INSERT INTO产品V ALUES (
'9999','a','500','4','kg'
)
INSERT INTO产品V ALUES (
'8888','b','500','3','kg'
)
INSERT INTO产品V ALUES (
'7777','c','500','2','kg'
)
5、用SQL语言修改某张表中的记录。
update订单set生产地点='上海'where订单号='111'
6、为该数据库设计6个查询,并写出对应的查询语句。
要求:综合应用select语句中的各个子句完成这6个查询,应包含以下查询类型:单表查
询、有多个条件的单表查询、带分组的统计计算、带排序的查询,多表连接查询,嵌套查询。
1.查询产品表中产品号为7777的单价
select单价from产品where产品号=7777
查询结果:
2.查询产品表中产品号为7777且产品名为c的单价
select单价from产品where产品号=7777 and产品名='c'
3.查询订单和顾客表中生产地点为浙江的顾客数量
select count(顾客名)as顾客数量from订单,顾客
where订单.顾客号=顾客.顾客号and生产地点='浙江'group by生产地点
4.将产品表中重量排序为倒序
select*from产品order by重量desc
5.在订单,订单细则中查询生产地点为浙江的订单细则所有信息
select订单细则.*
from订单,订单细则
where订单.订单号=订单细则.订单号
and生产地点='浙江'
6.查询产品表中重量大于2单价为500的信息.
select产品.*
from产品
where重量>2
(select重量from产品where单价='500'
五、实验总结
通过这次实验,不仅从理论知识更深入理解了sql语句,并且在实际操作中也有了更加深刻的体会。
这次实验遇到了许多问题,比如统计计算和嵌套查询的语法在操作的过程中忘记了其步骤。
在查询课本以及网络上的资料,都一一解决了。
这次实验收获颇丰!。