数据库实验报告4-5

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《数据库与表的基本操作》实验报告项目名称数据库与表的基本操作专业班级软件工程1307班学号3901130721姓名谭淇蔚实验成绩:批阅教师:2015年5月11日实验4《存储过程》实验学时:4每组人数:1实验类型:2(1:基础性2:综合性3:设计性4:研究性)实验要求:1(1:必修2:选修3:其它)实验类别:3(1:基础2:专业基础3:专业4:其它)一、实验目的理解存储过程的概念、建立和调用方法。进一步熟悉SQL语句对数据库进行完整性控制的方法。二、实验内容1、建立一个新的销售数据库,包含五张表,每张表至少需要10条记录。(1)/*员工人事表employee*/emp_nochar(5)Notnullprimarykey员工编号emp_namechar(10)员工姓名sexchar(1)性别deptchar(4)所属部门titlechar(6)职称date_hireddatetime到职日birthdaydatetime生日salaryint薪水addrchar(50)null住址(2)/*客户表customer*/cust_idchar(5)Notnullprimarykey客户号cust_namechar(20)客户名称addrchar(40)客户住址tel_nochar(10)客户电话zipchar(6)邮政编码(3)/*销售主表sales*/order_nointNotnullprimarykey订单编号cust_idchar(5)客户号sale_idchar(5)业务员编号tot_amtnumeric(9,2)订单金额order_datedatetime订货日期ship_datedatetime出货日期invoice_nochar(10)发票号码(4)/*销货明细表sale_item*/order_nointNotnull,primarykey订单编号prod_idchar(5)Notnull,primary产品编号keyqtyint销售数量unit_pricenumeric(7,2)单价order_datedatetimenull订单日期(5)/*产品名称表product*/pro_idchar(5)Notnullprimarykey产品编号prod_namechar(20)Notnull产品名称2、建立表的同时创建表的约束。(1)为每张表建立主键约束。(2)通过拖放操作加入外键。(3)在表employee加入CHECK约束:输入的员工编号必须以E开头的5位数编号,性别只能为M/F。(4)为销售主表sales中的发票编号字段建立UNIQUE约束。3、利用存储过程,给employee表添加一条业务部门员工的信息。4、利用存储过程从employee、sales、customer表的连接中返回所有业务员的姓名、客户姓名、销售金额。5、利用存储过程查找“刘德华”的员工编号、订单编号、销售金额。6、利用存储过程查找姓“李”并且职称为“职员”的员工的员工编号、订单编号、销售金额。7、利用存储过程计算出订单编号为10003的订单的销售金额。三、实验要求:1.熟悉SQLSERVER工作环境;2.建立销售数据库3.复习有关约束与存储过程的SQL语言命令。4.备份数据库,作为实验5的操作数据库。四、实验步骤1.创建销售数据库,并建表、修改,要求将自己的信息包含其中;2、利用存储过程,给employee表添加一条业务部门员工的信息。3、利用存储过程从employee、sales、customer表的连接中返回所有业务员的姓名、客户姓名、销售金额。4、利用存储过程查找“刘德华”的员工编号、订单编号、销售金额。5、利用存储过程查找姓“李”并且职称为“职员”的员工的员工编号、订单编号、销售金。五、实验结果1、建立一个新的销售数据库,包含五张表,每张表至少需要10条记录。(1)/*员工人事表employee*/emp_nochar(5)Notnullprimarykey员工编号emp_namechar(10)员工姓名sexchar(1)性别deptchar(4)所属部门titlechar(6)职称date_hireddatetime到职日birthdaydatetime生日salaryint薪水addrchar(50)null住址(2)/*客户表customer*/cust_idchar(5)Notnullprimarykey客户号cust_namechar(20)客户名称addrchar(40)客户住址tel_nochar(10)客户电话zipchar(6)邮政编码(3)/*销售主表sales*/order_nointNotnullprimarykey订单编号cust_idchar(5)客户号sale_idchar(5)业务员编号tot_amtnumeric(9,2)订单金额order_datedatetime订货日期ship_datedatetime出货日期invoice_nochar(10)发票号码(4)/*销货明细表sale_item*/order_nointNotnull,primarykey订单编号prod_idchar(5)Notnull,primarykey产品编号qtyint销售数量unit_pricenumeric(7,2)单价order_datedatetimenull订单日期(5)/*产品名称表product*/pro_idchar(5)Notnullprimarykey产品编号prod_namechar(20)Notnull产品名称解:首先写出每一个表的创建语句CREATETABLEemployee(emp_nochar(5)notnull,emp_namechar(10),sexchar(1),deptchar(4),titlechar(6),date_hireddatetime,birthdaydatetime,salaryint,addrCHAR(50),primarykey(emp_no))CREATETABLEcustomer(cust_idchar(5)notnull,cust_namechar(20),addrchar(40),tel_nochar(10),zipchar(6),primarykey(cust_id))CREATETABLEsales(order_nointnotnull,cust_idchar(5),sale_idchar(5),tot_amtnumeric(9,2),order_datedatetime,ship_datedatetime,invoice_nochar(10),primarykey(order_no))CREATETABLEsale_item(order_nointnotnull,prod_idchar(5)notnull,qtyint,unit_pricenumeric(7,2),order_datedatetimenotnull,primarykey(order_no,prod_id))CREATETABLEproduct(pro_idchar(5)NOTNULL,prod_namechar(20)NOTNULL,primarykey(pro_id))以上建表结果:为每一个表输入数据:2、建立表的同时创建表的约束。(1)为每张表建立主键约束。已建立主键约束(2)通过拖放操作加入外键。步骤如下:首先点击数据库,可以看见,数据库下方有数据库关系表:右键其,创建一个数据库关系图接着可以看见选择添加以上五个数据库,拖动键后便可以·设立建立(1)在表employee加入CHECK约束:输入的员工编号必须以E开头的5位数编号,性别只能为M/F。步骤:第一步右键第二步:又按着鼠标右键:第三步:点击添加接着再表达式里面写着约束条件(2)为销售主表sales中的发票编号字段建立UNIQUE约束。altertablesalesaddconstraintorder_no——uniqueunique(order_no);3、利用存储过程,给employee表添加一条业务部门员工的信息。createprocedureproAddEmployee(@emp_nochar(5),@emp_namechar(10),@sexchar(1),@deptchar(10),@titlechar(6),@date_hireddatetime,@birthdaydatetime,@salaryint,@addrchar(50))asinsertintoemployeevalues(@emp_no,@emp_name,@sex,@dept,@title,@date_hired,@birthday,@salary,@addr)goexecproAddEmployee'E0022','罗刚','M','业务','经理','2009-07-08','1988-02-03',13000,'都匀市'执行后:刷新表格后,查看表格,可以发现,表中写入了信息结果为:4、利用存储过程从employee、sales、customer表的连接中返回所有业务员的姓名、客户姓名、销售金额。createprocedurefindasselectemployee.emp_name,customer.cust_name,sales.tot_amtfromemployee,customer,saleswheresales.sale_id=employee.emp_noandsales.cust_id=customer.cust_idgoexecfind执行后结果为:刷新后,旁边的存储过程的显示为:5、利用存储过程查找“刘德华”的员工编号、订单编号、销售金额。createprocedurefindasselectemployee.emp_name,customer.cust_name,sales.tot_amtfromemployee,customer,saleswheresales.sale_id=employee.emp_noandsales.cust_id=customer.cust_idgoexecfind执行结果:刷新后,可看见:此结果采用的数据为:Employee表:Sales表:6、利用存储过程查找姓“李”并且职称为“职员”的员工的员工编号、订单编号、销售金额。createprocedurefindLi@emp_namevarchar(10)asselectemployee.emp_no,sales.order_no,sales.tot_amtfromemployee,saleswhereemployee.emp_no=sales.sale_idandemployee.title='职员'and(employee.emp_namelike@emp_name)goexecfindLi'李%'结果:刷新后,在旁边可看见:结果的数据中所查询的表的内容为:Employee表:Sales表:7、利用存储过程计算出订单编号为10003的订单的销售金额。CREATEPROCEDUREPRO_ORDER@order_novarchar(6)asselectsales.tot_amtfromsaleswheresales.order_no=@order_nogoexecPRO_ORDER'10003'实验结果:刷新后发现左边更新:附录:实验示例1、模糊查询createproceduresp_empname@E_namevarchar(10)asselecta.emp_name,a.dept,b.tot_amtfromemployeeainnerjoinsalesbona.emp_no=b.sale_idwherea.emp_namelike@E_namegoexecsp_empname'陈%'2、利用存储过程计算出’E0014’业务员的销售总金额。createproceduresp_saletot@E_nochar(5),@p_to

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功