数据库系统原理实验报告.docx
- 文档编号:15292403
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:15
- 大小:23.38KB
数据库系统原理实验报告.docx
《数据库系统原理实验报告.docx》由会员分享,可在线阅读,更多相关《数据库系统原理实验报告.docx(15页珍藏版)》请在冰点文库上搜索。
数据库系统原理实验报告
《数据库系统原理》
实验报告
班级________
姓名________________
学号___________
信息与电子工程学院
实验1sqlserver熟悉和数据库创建
1、实验目的
熟悉sqlserver2005提供的服务管理器、企业管理器、查询分析器、客户端和服务器端网络实用工具等常用管理工具的使用。
理解客户/服务器模式,理解面向连接与非面向连接的差别。
理解交互式sql的工作机制。
能够理解命名管道协议与tcp/ip协议的差别。
能够登陆上sqlserver数据库服务器。
2、实验内容
1、启动sqlserver服务。
2、打开sqlserver的企业管理器,连接上sqlserver服务器。
展开左边树状窗口的各级结点,观察右边内容窗口的变化。
3、打开sqlserver的查询分析器,用use命令打开样例数据库pubs。
4、在查询窗口输入execsp_help,运行后察看结果。
5、在查询窗口输入select*fromauthors,运行后察看结果。
三、实验结果
3、当不确定当前所操作的是哪个数据库,可使用use来定位到某数据库。
4、
5、查询某张表的所有列。
实验2简单查询
1、实验目的:
熟悉sqlserver的企业管理器和查询分析器的用户界面,掌握用企业管理器和查询分析器创建数据库,修改数据库和删除数据库的方法。
2、实验内容
分别使用sqlserver2005企业管理器和t—sql语句,按下列要求创建、修改和删除用户数据库。
1、创建名称为company的数据库,数据库中包含一个数据文件,逻辑文件名为company_data,磁盘文件名为,文件初始容量为5mb,最大容量为15mb,文件容量递增值为1mb;事务日志文件的逻辑文件名为company_log,磁盘文件名为,文件初始容量为5mb,最大容量为10mb,文件容量递增值为1mb。
2、对该数据库进行修改:
添加一个数据文件,逻辑文件名为company2_data,磁盘文件名为,文件初始容量为1mb,最大容量为5mb,文件容量递增值为1mb;将日志文件company_log的最大容量增加为15mb,文件容量递增值为2mb。
3、在company数据库中添加一个文件组tempgroup,并向该文件组中添加一个容量为3mb,最大容量为10mb,递增量为1mb的数据文件,该数据文件的逻辑文件名为company3_data,磁盘文件名为。
4、在company数据库中删除数据文件company2_data。
5、删除数据库company。
6、采用默认设置创建数据库company。
三、实验结果
1、createdatabasecompany
on(name=company_data,
filename='d:
\microsoftsqlserver\\mssql\data\',
size=5mb,
maxsize=15mb,
filegrowth=1mb)
logon(name=company_log,
filename='d:
\microsoftsqlserver\\mssql\data\',
size=5mb,
maxsize=10mb,
filegrowth=1mb);
2、alterdatabasecompany
addfile
(name=company2_data,
filename='d:
\microsoftsqlserver\\mssql\data\',
size=1mb,
maxsize=5mb,
filegrowth=1mb)
alterdatabasecompany
modifyfile
(name='company_log',maxsize=15mb,filegrowth=2mb);
3、alterdatabasecompany
addfilegrouptempgroup
alterdatabasecompany
addfile
(name='company3_data',
filename='d:
\microsoftsqlserver\\mssql\data\',
size=3mb,
maxsize=10mb,
filegrowth=1mb)
tofilegrouptempgroup;
4、alterdatabasecompanyremovefilecompany2_data;
5、dropdatabasecompany;
6、createdatabasecompany;
实验3创建和修改数据表
一、实验目的:
熟悉有关数据表的创建和修改等工作,理解数据库模式的概念,了解主键约束、外键约束、unique约束和check约束的创建和应用。
要求学生熟练掌握使用企业管理器和t—sql语句createtable、altertable及droptable语句对数据表进行管理。
2、实验内容
分别在sqlserver2005企业管理器和在查询分析分析器中使用t—sql语句完成以下操作:
员工人事表employee
emp_no
char(5)
notnull
primarykey
员工编号
emp_name
varchar(10)
notnull
员工姓名
sex
char
(2)
notnull
性别
dept
varchar(10)
notnull
所属部门
title
varchar(10)
notnull
职称
date_hired
datetime
notnull
雇佣日
birthday
datetime
null
生日
salary
int
notnull
薪水
telephone
varchar(20)
null
电话
addr
varchar(50)
null
住址
客户表customer
cust_id
char(5)
notnull
primarykey
客户号
cust_name
varchar(20)
notnull
客户名称
addr
varchar(40)
notnull
客户住址
tel_no
varchar(20)
notnull
客户电话
zip
char(6)
null
邮政编码
销售主表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
订货日期
销货明细表sale_item
order_no
int
notnull
primarykey
订单编号
prod_id
char(5)
notnull
primarykey
产品编号
qty
int
notnull
销售数量
unit_price
numeric(7,2)
notnull
单价
order_date
datetime
null
订单日期
产品名称表product
prod_id
char(5)
notnull
primarykey
产品编号
prod_name
varchar(20)
notnull
产品名称
1、在数据库company中创建以上五张表,并设置各表的主键。
2、在销售主表sales中添加字段“发票号码”invoice_no,char(10),notnull。
3、添加外键约束:
a.在销售主表sales的业务员编号字段sale_id上添加外键约束,参照字段为员工表employee中的字段员工编号emp_no,约束名为fk_sale_id。
b.在销售主表sales的客户号字段cust_id上添加外键约束,参照字段为客户表customer中的字段客户号cust_id,约束名为fk_cust_id。
c.在销售明细表sale_item的订单编号字段order_no上添加外键约束,参照字段为销售主表sales中的字段订单编号order_no,约束名为fk_order_no。
d.在销售明细表sale_item的产品编号字段prod_id上添加外键约束,参照字段为产品名称表product中的产品编号字段prod_id,约束名为fk_prod_id。
4、添加核查约束:
a.将员工表employee中的薪水字段salary的值限定在1000至10000间,约束名为ck_salary。
b.将员工表employee中的员工编号字段emp_no设定为以“e”字母开头,后面跟5位数的编号,约束名为ck_emp_no。
c.将员工表employee中的性别字段设定这取值只能是“男”和“女”。
约束名为ck_sex。
d.将销售主表sales中的发票号码字段invoice_no设定为以“i”字母开头,后面跟9位数的编号,约束名为ck_inno。
5、为销售主表sales中的字段发票号码invoice_no设置为唯一约束,约束名为un_inno。
三、实验结果
1、createtableemployee
(emp_nochar(5)notnullprimarykey,
emp_namevarchar(10)notnull,
sexchar
(2)notnull,
deptvarchar(10)notnull,
titlevarchar(10)notnull,
date_hireddatetimenotnull,
birthdaydatetimenull,
salaryintnotnull,
telephonevarchar(20)null,
addrvarchar(50)null
);
createtablecustomer
(cust_idchar(5)notnullprimarykey,
cust_namevarchar(20)notnull,
addrvarchar(40)notnull,
tel_novarchar(20)notnull,
zipchar(6)null
);
createtablesales
(order_nointnotnullprimarykey,
cust_idchar(5)notnull,
sale_idchar(5)notnull,
tot_amtnumeric(9,2)notnull,
order_datedatetimenotnull
);
createtablesale_item
(order_nointnotnull,
prod_idchar(5)notnull,
qtyintnotnull,
unit_pricenumeric(7,2)notnull,
order_datedatetimenull,
primarykey(order_no,prod_id)
);
createtableproduct
(prod_idchar(5)notnullprimarykey,
prod_namevarchar(20)notnull
);
2、altertablesalesaddinvoice_nochar(10)notnull;
3、a、altertablesales
addconstraintfk_sale_id
foreignkey(sale_id)referencesemployee(emp_no);
b、altertablesales
addconstraintfk_cust_id
foreignkey(cust_id)referencescustomer(cust_id);
c、altertablesale_item
addconstraintfk_order_no
foreignkey(order_no)referencessales(order_no);
d、altertablesale_item
addconstraintfk_prod_id
foreignkey(prod_id)referencesproduct(prod_id);
4、a、altertableemployee
addconstraintck_salarycheck(salarybetween1000and10000);
b、altertableemployee
addconstraintck_emp_nocheck(emp_nolike'e[0-9][0-9][0-9][0-9][0-9]');
c、altertableemployee
addconstraintck_sexcheck(sexlike('男''女'));
d、altertablesales
addconstraintck_inno
check(invoice_nolike'i[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]');
5、altertablesales
addconstraintun_innounique(invoice_no);
实验4简单的单表查询
一、实验目的:
熟练掌握用select语句实现简单的单表查询。
掌握select子句、from子句、where子句及orderby子句的用法。
2、实验内容
运行查询文件,生成上机必要的数据,然后完成以下操作。
1、查找所有经理的姓名、职称、薪水。
2、在销售主表sales中查找销售金额大于等于10000元的订单。
3、在员工表employee中查找薪水在4000至8000元之间的员工。
4、在员工表employee中查找住址为上海、北京、天津这三个城市的员工。
5、在客户表customer中查找住址不在上海、北京、天津这三个城市的客户。
6、在员工表employee中查找姓“王”用姓名最后一个字为“功”的员工。
7、在客户表customer中查找姓“刘”的客户名称、电话。
8、查找出职称为“经理”或“职员”的女工的信息。
9、查找薪水最高的前三条员工记录。
10、查找订单金额最高的前10%的订单记录。
11、查找员工表中所属部门(去掉重复记录)。
12、查找员工表中的所有记录,并按薪水由低到高进行排序。
三、实验结果
1、selectemp_name,title,salaryfromemployeewheretitle='经理';
2、select*fromsaleswheretot_amt>10000;
3、select*fromemployeewheresalarybetween4000and8000;
4、select*fromemployeewhereaddrin('上海','北京','天津');
5、select*fromcustomerwhereaddrnotin('上海','北京','天津');
6、select*fromemployeewhereemp_namelike'王%五';
7、selectcust_name,tel_nofromcustomerwherecust_namelike'刘%';
8、select*fromemployeewheretitlein('经理','职员')andsex='女';
9、selecttop3*fromemployeeorderbysalarydesc;
10、selecttop10percent*fromsalesorderbytot_amtdesc;
11、selectdistinctdeptfromemployee;
12、select*fromemployeeorderbysalary;
实验5复杂的单表查询
一、实验目的
熟练掌握select查询语句中的groupby子句、having子句的用法,以及汇总函数的使用。
二、实验内容
1、在员工表employee中统计员工人数。
2、统计各部门员工的员工人数及平均薪水。
3、查询销售业绩超过10000元的员工编号。
4、计算每一产品销售数量总和与平均销售单价。
5、统计各部门不同性别、或各部门、或不同性别或所有员工的平均薪水(在groupby子句中使用cube关键字)。
6、统计各部门不同性别、或各部门或所有员工的平均薪水(在groupby子句中使用rollup关键字)。
7、计算出一共销售了几种产品。
8、显示sale_item表中每种产品的订购金额总和,并且依据销售金额由大到小排列来显示出每一种产品的排行榜。
9、计算每一产品每月的销售金额总和,并将结果按销售(月份,产品编号)排序。
10、查询每位业务员各个月的业绩,并按业务员编号、月份降序排序。
三、实验结果
1、selectcount(emp_no)总人数fromemployee;
2、selectdept,count(emp_no)员工人数,avg(salary)平均薪水fromemployeegroupbydept;
3、selectsale_id,tot_amtfromwheretot_amt>10000;
4、selectprod_id,count(prod_id)销售总量,avg(unit_price)平均单价
fromgroupbyprod_id;
5、selectsex,title,avg(salary)平均薪水fromgroupbysex,titlewithcube;
6、selectcasewhen(grouping(sex)=1)then'all'
elseisnull(sex,'unknown')
endassex,
casewhen(grouping(title)=1)then'all'
elseisnull(title,'unknown')
endastitle,
avg(salary)as平均薪水
fromemployee
groupbysex,titlewithrollup;
7、selectdistinctcount(prod_id)种类数fromsale_item;
8、selectprod_id,sum(qty*unit_price)总额
fromsale_item
groupbyprod_id
orderbysum(unit_price)desc;
9、selectprod_id,month(order_date),sum(unit_price)
fromsale_item
groupbyprod_id,month(order_date)
orderbyprod_id,month(order_date)desc;
10、selectsale_id,month(order_date),sum(tot_amt)
fromsales
groupbysale_id,month(order_date)
orderbysale_id,month(order_date)desc;
实验6连接查询
一、实验目的
掌握使用连接的方法从多个表中查询数据。
理解内连接、外连接(包括左外连接、右外连接和全外连接)、自身连接的概念和使用。
要求学生熟练掌握在from子句和在where子句中指定连接条件的这两种方法。
二、实验内容
1、查找出employee表中部门相同且住址相同的女员工的姓名、性别、职称、薪水、住址。
2、检索product表和sale_item表中相同产品的产品编号、产品名称、数量、单价。
3、检索product表和sale_item表中单价高于2400元的相同产品的产品编号、产品名称、数量、单价。
4、查询在每张订单中订购金额超过24000元的客户名及其地址。
5、查找有销售记录的客户编号、名称和订单总额。
6、每位客户订购的每种产品的总数量及平均单价,并按客户号,产品号从小到大排列。
7、查找在1997年中有销售记录的客户编号、名称和订单总额。
8、分别使用左向外连接、右向外连接、完整外部连接检索product表和sale_item表中单价高于2400元的相同产品的产品编号、产品名称、数量、单价。
并分析比较检索的结果。
三、实验结果
1、select,,,,
fromemployeea,employeebwhere=and=and='女';
2、select,prod_name,qty,unit_price
fromsale_item,productwhere=;
3、select,prod_name,qty,unit_price
fromsale_item,productwhereunit_price>2400;
4、selectcust_name,addrfromcustomer
wherecust_idin(selectcust_idfromsaleswheretot_amt>24000);
5、select,cust_name,tot_amtfromcustomera,salesbwhere=;
6、selectprod_id,cust_id,qty,unit_pricefromsale_item,salesorderbyprod_id,cust_id;
7、select,cust_name,tot_amt
fromcustomera,salesbwhere=andconvert(char(4),order_date,120)='1997';
8、
左外连接
select,,,
fromproductaleftouterjoinsale_itembon=and>2400;
右外连接
select,,,
fromproductarightouterjoinsale_itembon=and>2400;
完整外部连接
select,,,
fromproductafulljoinsale_i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 原理 实验 报告