收藏 分销(赏)

图书管理子系统数据库课程设计.doc

上传人:仙人****88 文档编号:11722001 上传时间:2025-08-09 格式:DOC 页数:16 大小:723KB 下载积分:10 金币
下载 相关 举报
图书管理子系统数据库课程设计.doc_第1页
第1页 / 共16页
图书管理子系统数据库课程设计.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
数据库原理实验指导 实验一 1 实验二 2 实验三 3 实验四 4 实验五 5 实验六 6 实验七 6 实验八 7 实验九 8 实验前准备(2课时): 请设计一个企业销售管理据库,其中需要保存的信息如下: 员工信息,包括:员工编号、员工姓名、性别、所属部门、职称、到职日、生日、薪水、填表日期; 客户信息,包括:客户号,客户名称,客户住址,客户电话、邮政编码; 产品信息,包括:产品编号,产品名称; 员工和客户可以签订订单,每签订一个订单,就要保存订单信息,包括:订单编号、客户号、业务员编号、订单金额、订货日期、出货日期、发票号码。 此外,每个订单可能涉及到多种产品,每种产品可能被多个订单订购。因此需要每个订单中每类产品的销售明细,包括每种产品的销售数量、单价、订单日期; 要求: (1) 给出系统的ER图(可以用word或其它画图工具,如Visio画),要求画出所有的实体,联系,属性以及联系的类型; (2) 将ER图转换为关系模型; 实验一 实验名称:建立数据库和基本表结构(2课时) 一、实验目的 理解数据库模式的概念,通过使用SQL SERVER企业管理器或者My Sql建立数据库和基本表。模式为人事表、客户表、销售表、销售明细表、产品表。熟悉SQL SERVER企业管理器的使用,并将得到的表生成脚本,然后保存。 另外,帮助学生理解上述基本表之间的关系,从而正确、合理地建立表结构,并输入相应记录信息。 二、实验环境 MS SQL SERVER或者My Sql。 三、实验示例 1、 使用SQL建立数据库。 例如:create database studentdb 2、 使用SQL脚本建立基本表结构。 例如: create table employee1( emp_no char(5) not null, emp_name char(10) not null, emp_sex char(1) not null, emp_phone char (13) not null, emp_add varchar(60) not null, emp_salary char(5) not null, ) 四、实验内容与步骤 建立一个数据库和五张表的表结构。 (1)/*员工人事表employee */ emp_no char(5) Not null primary key 员工编号 emp_name char(10) Not null 员工姓名 sex char(1) Not null 性别 dept char(4) Not null 所属部门 title char(6) Not null 职称 date_hired datetime Not null 到职日 birthday datetime Null 生日 salary int Not null 薪水 addr char(50) null 住址 Mod_date datetime Default(getdate()) 操作日期 (2)/*客户表customer */ cust_id char(5) Not null primary key 客户号 cust_name char(20) Not null, 客户名称 addr char(40) Not null, 客户住址 tel_no char(10) Not null, 客户电话 zip char(6) null 邮政编码 (3)/*销售主表sales */ order_no int Not null primary key 订单编号 cust_id char(5) Not null, 客户号 sale_id char(5) Not null, 业务员编号 tot_amt numeric(9,2) Not null, 订单金额 order_date datetime Not null, 订货日期 ship_date datetime Not null, 出货日期 invoice_no char(10) Not null 发票号码 (4)/*销货明细表sale_item */ order_no int Not null, primary key 订单编号 prod_id char(5) Not null, 产品编号 qty int Not null 销售数量 unit_price numeric(9,2) Not null 单价 order_date datetime Null 订单日期 (5)/*产品名称表product */ prod_id char(5) Not null primary key 产品编号 prod_name char(20) Not null 产品名称 五、实验报告 实验二 实验名称:添加表记录(2课时) 一、实验目的 掌握修改表结构的基本方法,熟练使用INSERT语句为每张表追加表记录。 二、实验环境 MS SQL SERVER 2000或者My SQL 三、实验示例 例如: insert into employee (emp_no,emp_name,sex,dept,title,date_hired,salary) values('E0025','彭江','M','业务','职员',1900/01/21,43200) 四、实验内容与步骤 初步理解表之间的关系,用insert命令输入有效记录(每张表至少需要5条记录)。 五、实验报告 实验三 实验名称: 数据库的更新实验(2课时) 一. 实验目的 本实验的目的是要求学生熟练掌握修改数据和删除数据的操作。 二、实验环境 MS SQL SERVER 2000或者My SQL 三、实验示例 1. 修改操作语句的一般格式为 UPDATE 表名 SET <列名>=<表达式>[,<列名>=<表达式>]…… [where <条件>]; 其功能是修改指定表中满足WHERE子句条件的元组。其中SET子句用于指定修改方法,即用<表达式>的值取代相应的属性列值。如果省略WHERE子句,则表示要修改表中的所有元组。 2. 删除语句的一般格式为 DELETE FROM <表名> [WHERE <条件>]; 其功能是从指定表中删除满足WHERE子句条件的所有元组。如果省略WHERE子句,则表示要删除表中的所有元组,但表的定义仍在字典中。 四、实验内容与步骤 1、 将员工崔庆华的薪水改为10000。 update employee set salary=10000 where emp_name='崔庆华' 2、 将所有员工的薪水增加100。 update employee set salary=salary+100 3、 删除所有女性员工的记录。 delete from employee where sex='f' 4、 删除订单金额小于100000的订单。 delete from sale_item where unit_price<100000 五、实验报告 实验四 实验名称:表的完整性约束(2课时) 一、实验目的 理解并掌握关系的完整性约束,熟练使用T-SQL语句为每张表添加表约束。 二、实验环境 MS SQL SERVER 2000或者My SQL 三、实验示例 1、 create table orders ( order_id char(8), p_id char(8), p_name char(10) , constraint pk_order_id primary key (order_id) , foreign key (p_id, p_name) References products(p_id, p_name) ) 2、 create table employee1( emp_no char(5) not null, emp_name char(10) not null, emp_sex char(1) not null, constraint emp_sexchk check(emp_sex in ('m','f')), emp_phone char (13) not null, emp_add varchar(60) not null, emp_salary char(5) not null, constraint emp_salarychk check (emp_salary between 60000 and 80000) ) 3、 create table employees ( emp_id char(8), emp_name char(10) , emp_cardid char(18), constraint pk_emp_id primary key (emp_id), constraint uk_emp_cardid unique (emp_cardid) ) 四、实验内容与步骤 通过SQL语句修改表约束。 ①分别为每张表建立主键约束。 ②为相关表建立外键约束。 ③ 在表employee加入CHECK约束:输入的员工编号必须以E开头的5位数编号,性别只能为M/F。 ④为销售主表sales中的发票编号字段建立UNIQUE约束。 五、实验报告 实验五 实验名称:简单查询(2课时) 一、实验目的 理解SELECT语句的操作和基本使用方法,掌握简单查询。 二、实验环境 MS SQL SERVER 2000或者My SQL 三、实验示例 1、查找表中所有姓刘的职工的工号,部门,薪水 select emp_no, emp_name, dept,salary from employee where emp_name like '刘%' 2、查找所有定单金额高于20000的所有客户编号 select cust_id from sales where tot_amt>20000 3、查找出职称为经理和职称为职员的女员工的姓名、职称、性别。 select emp_name,title,sex from employee where title='经理'or title='职员'and sex='F' 4、选取销售数量最多的前5条订单订单号、数量。 select top 5 with ties order_no,sup_id,qty from sale_item order by qty desc 5、按部门进行汇总,统计每个部门的总工资 select dept,sum(salary) from employee group by dept 四、实验内容与步骤 1、 查找所有经理的姓名、职称、薪水。 select emp_name,title,salary from employee where title='经理' 2、 查找出姓“王”并且姓名的最后一个字为“功”的员工。 select * from employee where emp_name='王%功' 3、 查找住在上海或北京的女员工,并显示其姓名、所属部门、职称、住址。 select emp_name,title,dept,addr,sex from employee where sex='m' and addr='上海'or addr='北京' 4、 在表sales中挑出销售金额大于等于10000的订单 select * from sale_item where unit_price>=10000 5、 选取订单金额最高的前10%的订单数据。 select top 10 percent * from sales order by tot_amt desc 6、 查找出职称为经理或职称为职员的女员工的信息。 select * from employee where sex='f' and (title='经理'or title='职员') 7、 删除sales表中作废的订单(其发票号码为4)。(注意:约束) delete from sale_item where order_no in(select order_no from sales where invoice_no='4') 8、计算出一共销售了几种产品。 select count(distinct prod_id) from sale_item 9、显示sale_item表中每种个别产品的订购金额总和,并且依据销售金额由大到小排列来显示出每一种产品的排行榜。 select prod_id,month(unit_price*qty) from sale_item group by prod_id order by sum(unit_price*qty)desc 10、计算每一产品每月的销售金额总和,并将结果按销售(月份,产品编号)排序。 select prod_id,month(order_date),sum(unit_price*qty) from sale_item group by prod_id,month(order_date) order by prod_id,month(order_date) 五、实验报告 实验六 实验名称:表连接查询JOIN(2课时) 一、实验目的 理解JOIN语句的操作和基本使用方法,掌握内连接、外连接、自连接的概念和使用。 二、实验环境 MS SQL SERVER 2000或者My SQL 三、实验示例 1、 检索product 表和sale_item表中数量大于2的相同产品的产品编号、产品名称、数量、单价。 select a.prod_id,a.qty,a.unit_price,b.prod_name from sale_item as a inner join product as b /*如果改成left join/right join 试分析结果*/ on (a.prod_id=b.pro_id) and a.qty>2 order by a.prod_id 2、查找出employee表中住址相同的员工的姓名、性别、职称、薪水、住址。 select a.emp_name,a.sex,a.title,a.salary,a.addr,b.emp_name,b.sex,b.title,b.salary,b.addr from employee as a inner join employee as b on (a.emp_no!=b.emp_no) and (a.emp_name>b.emp_name) and (a.addr=b.addr) 四、实验内容与步骤 1、 查找出employee表中部门相同且住址相同的女员工的姓名、性别、职称、薪水、住址。 select a.emp_name,a.sex,a.salary,a.addr from employee a,employee b where(a.dept=b.dept)and(a.addr=b.addr) and a.sex='f'and b.sex='f'and a.emp_no=b.emp_no 2、 检索product 表和sale_item表中相同产品的产品编号、产品名称、数量、单价。 select a.prod_id,a.qty,a.unit_price,b.prod_name from sale_item as a inner join product as b on(a.prod_id=b.prod_id) 3、 检索product 表和sale_item表中单价高于2400元的相同产品的产品编号、产品名称、数量、单价。 select a.prod_id,a.qty,a.unit_price,b.prod_name from sale_item as a inner join product as b on(a.prod_id=b.prod_id)and unit_price>2400 4、分别使用左向外连接、右向外连接、完整外部连接检索product 表和sale_item表中单价高于2400元的相同产品的产品编号、产品名称、数量、单价。并分析比较检索的结果。 左向外连接: select a.prod_id,a.qty,a.unit_price,b.prod_name from sale_item as a left join product as b on(a.prod_id=b.prod_id)and unit_price>2400 右向外连接: select a.prod_id,a.qty,a.unit_price,b.prod_name from sale_item as a right join product as b on(a.prod_id=b.prod_id)and unit_price>2400 完整外部链接: select a.prod_id,a.qty,a.unit_price,b.prod_name from sale_item as a full join product as b on(a.prod_id=b.prod_id)and unit_price>2400 五、实验报告 实验七 实验名称:嵌套查询(2课时) 一、实验目的 掌握SELECT语句的嵌套使用,实现表的复杂查询,进一步理解SELECT语句的高级使用方法。 二、实验环境 MS SQL SERVER 2000或者My SQL 三、实验示例 1、由employee表中查找出薪水最高的员工信息。 select * from employee where salary= (select max(salary ) from employee ) 2、由sales表中查找出订单金额大于“E0013业务员在1996/10/15这天所接每一张订单的金额”的所有订单。 select * from sales where tot_amt>all (select tot_amt from sales where sale_id='E0013'and order_date='1996/10/15') order by tot_amt 四、实验内容与步骤 1、 由sales表中查找出销售金额最高的订单。 select * from sales where tot_amt=( select max(tot_amt) from sales) 2、 由sales表中查找出订单金额大于“E0013业务员在1996/10/15这天所接任一张订单的金额”的所有订单,并显示承接这些订单的业务员和该条订单的金额。 select sale_id,tot_amt from sales where tot_amt>all(select tot_amt from sales where sale_id='3'and order_date='1900-1-24 ') 3、 找出公司女业务员所接的订单。 select sale_id,tot_amt from sales where sale_id in (select sale_id from employee where sex='f') 4、 找出公司中姓名相同的员工,并且依据员工编号排序相识这些员工信息。 select * from employee a where exists(select emp_name from employee b where a.emp_name=b.emp_name and a.emp_no<>b.emp_no) 5、 找出目前业绩未超过20000元的员工。 select * from employee where emp_no in (select sale_id from sales group by sale_id having sum(tot_amt)<=20000) 6、 计算公司内各个部门的工资支出总和。 select dept,sum(salary) from employee group by dept 7、 计算每一产品销售数量总和与平均销售单价。 select prod_id,sum(qty),avg(unit_price) from sale_item 五、实验报告 实验八 实验名称:视图的建立与使用(2课时) 一、实验目的 掌握视图的定义与工作原理。 二、实验环境 MS SQL SERVER 2000或者My SQL 三、实验示例 1、 create view emp_view as select emp_no,emp_name,salary from employee where sex='f' 2、 create view sale_item_view as select sales.order_no,sales.order_date,prod_id,qty from sales,sale_item where sales.order_no=sale_item.order_no /*注意:插入数据时要考虑数据列是否有默认值或允许为空,否则INSERT失败。*/ insert into sale_item_view(order_no,order_date) values(10010,'1996/12/20') insert into sale_item_view(prod_id,qty) values('p0010',8) 四、实验内容与步骤 1、 创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、住址。 create view sh_kehu as select cust_id,cust_name,addr from customer where addr like '上海' 2、 对视图添加一条记录数据。(注意:分别查看customer表和该视图的结果。) insert into sh_kehu(cust_id,cust_name,addr) values('08','陈晨','南京') 3、 删除视图中所有姓“王”的客户数据。 delete from sh_kehu where cust_name like '王%' 4、 通过视图修改表内某一客户的姓名。 update sh_kehu set cust_name='陈晨' where cust_id=01 5、 有两个基本表employee和sales,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额。 create view em_sa as select sale_id,emp_name,order_no,tot_amt from employee,sales where employee.emp_no=sales.sale_id 6、 将上述视图中订单号为10001的记录的销售总金额改为60000。 update em_sa set tot_amt='60000' where order_no='10001' 7、 给上述视图添加一条记录数据。 insert into em_sa(sale_id,emp_name,order_no,tot_amt) values('05','小名明','06','55000') 8、 删除上述视图。 drop view em_sa drop view sh_kehu 五、实验报告 实验九 教材上的最后两个实验。 16
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服