数据库实验 报告交.docx
- 文档编号:28371673
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:15
- 大小:46.34KB
数据库实验 报告交.docx
《数据库实验 报告交.docx》由会员分享,可在线阅读,更多相关《数据库实验 报告交.docx(15页珍藏版)》请在冰豆网上搜索。
数据库实验报告交
实验报告
《数据库原理与应用》上机实验
2008~2009学年第二学期
学院(部)
管理学院
班级代号
姓名
成绩
指导教师
汪明艳
实验一
一、实验名称:
建立数据库和基本表结构(2课时)
二、实验目的:
理解数据库模式的概念,通过使用SQLSERVER企业管理器建立数据库和基本表。
模式为人事表、客户表、销售表、销售明细表、产品表。
熟悉SQLSERVER企业管理器的使用,并将得到的表生成脚本,然后保存。
另外,帮助学生理解上述基本表之间的关系,从而正确、合理地建立表结构,并输入相应记录信息。
三、实验内容
(1)/*员工人事表employee*/
emp_no
char(5)
Notnull
primarykey
员工编号
emp_name
char(10)
Notnull
员工姓名
sex
char
(1)
Notnull
性别
dept
char(4)
Notnull
所属部门
title
char(6)
Notnull
职称
date_hired
datetime
Notnull
到职日
birthday
datetime
Null
生日
salary
int
Notnull
薪水
addr
char(50)
null
住址
Mod_date
datetime
Default(getdate())
操作者
createtableemployee
(emp_nochar(5)notnullcheck(emp_nobetween'E0000'and'E9999')primarykey,
emp_namechar(10)UNIQUEnotnull,
sexchar
(1)notnullcheck(sex='M'orsex='F'),
deptchar(4)notnull,
titlechar(6)Notnull,
date_hireddatetimeNotnull,
birthdaydatetimeNull,
salaryintNotnull,
addrchar(50)null,
Mod_datedatetimeDefault(getdate()));
(2)/*客户表customer*/
cust_id
char(5)
Notnull
primarykey
客户号
cust_name
char(20)
Notnull,
客户名称
addr
char(40)
Notnull,
客户住址
tel_no
char(10)
Notnull,
客户电话
zip
char(6)
null
邮政编码
createtablecustomer
(cust_idchar(5)Notnullprimarykey,
cust_namechar(20)Notnull,
addrchar(40)Notnull,
tel_nochar(10)Notnull,
zipchar(6)null);
(3)/*销售主表sales*/
order_no
int
Notnull
primarykey
订单编号
cust_id
char(5)
Notnull,
客户号
sale_id
char(5)
Notnull,
业务员编号
tot_amt
numeric(9,2)
Notnull,
订单金额
order_date
datetime
Notnull,
订货日期
ship_date
datetime
Notnull,
出货日期
invoice_no
char(10)
Notnull
发票号码
createtablesales
(order_nointNotnullprimarykey,
cust_idchar(5)Notnull,
sale_idchar(5)Notnull,
tot_amtnumeric(9,2)Notnull,
order_datedatetimeNotnull,
ship_datedatetimeNotnull,
invoice_nochar(10)Notnullunique
foreignkey(cust_id)referencescustomer(cust_id),
foreignkey(sale_id)referencesemployee(emp_no));
(4)/*销货明细表sale_item*/
order_no
int
Notnull,
primarykey
订单编号
prod_id
char(5)
Notnull,
产品编号
qty
int
Notnull
销售数量
unit_price
numeric(9,2)
Notnull
单价
order_date
datetime
null
订单日期
createtablesale_item
(order_nointNotnull,
prod_idchar(5)Notnull,
qtyintNotnull,
unit_pricenumeric(9,2)Notnull,
order_datedatetimenull,
primarykey(order_no,prod_id),
constraintsales_sale_itemforeignkey(order_no)referencessales(order_no),
constraintproduct_sale_itemforeignkey(prod_id)referencesproduct(prod_id));
(5)/*产品名称表product*/
prod_id
char(5)
Notnull
primarykey
产品编号
prod_name
char(20)
Notnull
产品名称
createtableproduct
(prod_idchar(5)Notnullprimarykey,
prod_namechar(20)Notnull);
四、实验小结
在用命令建表结构时,要注意标点符号是否在半角状态下输入,否则命令是无法操作的。
还要分清楚每张表的主码是哪个(或哪几个)属性列,注意属性值的唯一性。
建立这些内容还是比较简单的,但是在建立外码和check约束时就比较麻烦,一开始没有分清楚哪些是主键表,哪些是外键表,造成了关系图建立的错误,所以一定要在仔细阅读表内容,分清主从关系后,再建立关系图。
在建立表结构的过程中,使我们对SQLSERVER的操作更为熟悉,为以后命令的编译打下了基础。
实验二
一、实验名称:
添加表记录(4课时)
二、实验目的
掌握修改表结构的基本方法,熟练使用INSERT语句为每张表追加表记录。
三、实验内容与步骤
1、通过企业管理器修改表结构。
2、初步理解表之间的关系,用insert命令输入有效记录(每张表至少需要8条记录)。
(1)对employee表的数据插入:
insertintoemployee
(emp_no,emp_name,sex,dept,title,date_hired,salary,addr)
values('E0001','王晓明','M','业务','职员',1988/01/21,43200,'上海')
insertintoemployee
(emp_no,emp_name,sex,dept,title,date_hired,salary,addr)
values('E0002','刘平','M','业务','职员',1980/02/21,43590,'上海')
insertintoemployee
(emp_no,emp_name,sex,dept,title,date_hired,salary,addr)
values('E0003','张钰','F','销售','职员',1993/02/14,31557,'浙江')
insertintoemployee
(emp_no,emp_name,sex,dept,title,date_hired,salary,addr)
values('E0004','朱丹','F','业务','职员',1995/04/06,30890,'上海')
insertintoemployee
(emp_no,emp_name,sex,dept,title,date_hired,salary)
values('E0005','王凯超','M','生产','职员',1985/09/11,38583)
insertintoemployee
(emp_no,emp_name,sex,dept,title,date_hired,salary)
values('E0006','顾云','M','生产','职员',1987/10/21,37564)
insertintoemployee
(emp_no,emp_name,sex,dept,title,date_hired,salary,addr)
values('E0007','卢晓东','M','生产','经理',1985/07/07,54588,'上海')
insertintoemployee
(emp_no,emp_name,sex,dept,title,date_hired,salary,addr)
values('E0013','李维','F','业务','经理',1987/09/20,59573,'上海')
(2)对customer表的数据插入:
insertintocustomer
(cust_id,cust_name,addr,tel_no,zip)
values('0285','王凤','上海','65646822','201800')
insertintocustomer
(cust_id,cust_name,addr,tel_no)
values('0295','张海','武汉','68239451')
insertintocustomer
(cust_id,cust_name,addr,tel_no,zip)
values('0357','刘兴成','上海','65387452','201800')
insertintocustomer
(cust_id,cust_name,addr,tel_no)
values('0391','顾叔荣','北京','82696227')
insertintocustomer
(cust_id,cust_name,addr,tel_no)
values('0581','王如梦','青岛','38941037')
insertintocustomer
(cust_id,cust_name,addr,tel_no)
values('0784','邵成','河南','26470782')
insertintocustomer
(cust_id,cust_name,addr,tel_no)
values('0745','斐圣辰','北京','74503294')
insertintocustomer
(cust_id,cust_name,addr,tel_no,zip)
values('0816','沈尚逸','上海','65646822','201800')
(3)对sales表的数据插入:
insertintosales
(order_no,cust_id,sale_id,tot_amt,order_date,ship_date,invoice_no)
values('10001','0285','E0002','19854',1999/01/09,1999/01/15,'00001')
insertintosales
(order_no,cust_id,sale_id,tot_amt,order_date,ship_date,invoice_no)
values('10002','0295','E0001','24087',1999/01/21,1999/02/02,'00002')
insertintosales
(order_no,cust_id,sale_id,tot_amt,order_date,ship_date,invoice_no)
values('10003','0357','E0004','34581',1999/02/11,1999/02/22,'00003')
insertintosales
(order_no,cust_id,sale_id,tot_amt,order_date,ship_date,invoice_no)
values('10004','0391','E0002','18724',1999/02/24,1999/03/07,'00004')
insertintosales
(order_no,cust_id,sale_id,tot_amt,order_date,ship_date,invoice_no)
values('10005','0581','E0013','45213',1999/03/05,1999/03/12,'00005')
insertintosales
(order_no,cust_id,sale_id,tot_amt,order_date,ship_date,invoice_no)
values('10006','0784','E0001','51274',1999/03/15,1999/03/21,'00006')
insertintosales
(order_no,cust_id,sale_id,tot_amt,order_date,ship_date,invoice_no)
values('10007','0745','E0004','49572',2001/03/17,2001/03/25,'00007')
insertintosales
(order_no,cust_id,sale_id,tot_amt,order_date,ship_date,invoice_no)
values('10008','0816','E0013','20578',1996/10/15,1996/10/20,'00008')
(4)对sale_item表的数据插入:
insertintosale_item
(order_no,prod_id,qty,unit_price)
values('10001','1001','66','23')
insertintosale_item
(order_no,prod_id,qty,unit_price)
values('10002','1002','30','20')
insertintosale_item
(order_no,prod_id,qty,unit_price)
values('10003','1003','100','3')
insertintosale_item
(order_no,prod_id,qty,unit_price)
values('10004','1004','22','42')
insertintosale_item
(order_no,prod_id,qty,unit_price)
values('10005','1005','27','36')
insertintosale_item
(order_no,prod_id,qty,unit_price)
values('10006','1006','76','15')
insertintosale_item
(order_no,prod_id,qty,unit_price)
values('10007','1007','14','41')
insertintosale_item
(order_no,prod_id,qty,unit_price)
values('10008','1008','17','35')
(5)对product表的数据插入:
insertintoproduct
(prod_id,prod_name)
values('1001','洗发水')
insertintoproduct
(prod_id,prod_name)
values('1002','护发素')
insertintoproduct
(prod_id,prod_name)
values('1003','肥皂')
insertintoproduct
(prod_id,prod_name)
values('1004','沐浴露')
insertintoproduct
(prod_id,prod_name)
values('1005','爽肤水')
insertintoproduct
(prod_id,prod_name)
values('1006','牙膏')
insertintoproduct
(prod_id,prod_name)
values('1007','润肤露')
insertintoproduct
(prod_id,prod_name)
values('1008','美白霜')
四、实验小结
在用insert命令输入表信息时,一定要按照建表时各列属性的型来输入内容,不能随意输入,否则会发生错误,还要注意输入值的长度,不要超过限制。
更要注意属性的一些特殊约束,不要违反约束条件,有些属性不允许为空,所以一定要有值,插入数据时不能让它为空。
表与表之间是通过外码建立相应的关系连接的,所以在输入值时也要注意参照完整性的约束,外码要根据主码建立。
在插入表记录的过程中,使我们对insert的语句有了熟练地掌握,也对每张表的基本信息有了更全面的了解。
在记录插入的过程中还要注意与实验三中的查询相对应,有些信息是必须要有的,否则接下来的实验就无法进行了。
实验三
一、实验名称:
简单查询(2课时)
二、实验目的
理解SELECT语句的操作和基本使用方法,掌握简单查询、连接查询、嵌套查询、视图。
(4课时)
三、实验内容与步骤
1﹑查找表中所有姓刘的职工的工号,部门,薪水。
selectemp_no,dept,salary
fromemployee
whereemp_namelike'刘%'
2﹑查找所有定单金额高于20000的所有客户编号。
selectcust_id
fromsales
wheretot_amt>20000;
3﹑查找出职称为经理和职称为职员的女员工的姓名、职称、性别。
selectemp_name,title,sex
fromemployee
wheretitlein('经理','职员')andsex='F';
4、选取销售数量最多的前5条订单订单号、数量。
selecttop5order_no,qty
fromsale_item
orderbyqtydesc
5、按部门进行汇总,统计每个部门的总工资
selectsum(salary),dept
fromemployee
groupbydept
6、检索product表和sale_item表中数量大于2的相同产品的产品编号、产品名称、数量、单价。
selectproduct.prod_id,prod_name,qty,unit_price
fromproduct,sale_item
whereqty>2
andproduct.prod_id=sale_item.prod_id
7、查找出employee表中住址相同的员工的姓名、性别、职称、薪水、住址。
selectemp_name,sex,title,salary,addr
fromemployee
whereaddr='上海'
8、由employee表中查找出薪水最高的员工信息。
select*
fromemployee
wheresalary=(selectmax(salary)
fromemployee)
9、由sales表中查找出订单金额大于“E0013业务员在1996/10/15这天所接每一张订单的金额”的所有订单。
selectorder_no
fromsales
wheretot_amt>
(selecttot_amt
fromsales
wheresale_id='E0013'
andorder_date=1996-10-15
)
11、创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、住址。
createviews_customer
as
selectcust_id,cust_name,addr
fromcustomer
whereaddr='上海'
12、对视图添加一条记录数据。
(注意:
分别查看customer表和该视图的结果。
)
insert
intos_customer(cust_id,cust_name,addr,tel_no)
values('0101','徐铮',上海',65783347);
13、删除视图中所有姓“王”的客户数据。
delete
froms_customer
wherecust_name='王%';
14、通过视图修改表内某一客户的姓名。
updates_customer
setcust_name='黄海'
wherecust_id='0285';
15、有两个基本表employee和sales,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额。
createviewemployee_sales
as
selectsale_id,emp_name,order_no,tot_amt
fromemployee,sales
wheresale_id=emp_no
16、将上述视图中订单号为10001的记录的销售总金额改为60000。
updateemp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库实验 报告交 数据库 实验 报告