《数据库系统原理实验报告.docx》由会员分享,可在线阅读,更多相关《数据库系统原理实验报告.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库系统原理实验报告班级姓名学号信息与电子工程学院三、实验结果1、select emp_name,title,salary from employee wher经e理H t le =,2、select * from sales where tot_amt 10000;3、select * from employee where salary between 4000 and 8000;4、select * from employee where add-匕海in;(北京;天津);5、select * from customer where addr n上ot海 1 n,北(京,天津);6、s
2、elect * from employee where emp_name 王lile五;7、select cust_name,tel_no from customer where cust_nam文Ue%li;ke8、select * from employee where tid至le理通职(员)and sexC-;9、select top 3 * from employee order by salary desc;10、select top 10 percent * from sales order by tot_amt desc;11、select distinct dept from
3、 employee;12、select * from employee order by salary;实验5复杂的单表查询一、实验目的熟练掌握select查询语句中的group by子句、having子句的用法,以及汇总函数的使用。二、实验内容1、在员工表employee中统计员工人数。2、统计各部门员工的员工人数及平均薪水。3、查询销售业绩超过1()()()()元的员工编号。4、计算每一产品销售数量总和与平均销售单价。5、统计各部门不同性别、或者各部门、或者不同性别或者所有员工的平均薪水(在group bv 子句中使用cube关键字)。6、统计各部门不同性别、或者各部门或者所有员工的平均薪
4、水(在group by子句中使用rollup关键字)。8、显示salejtem表中每种产品的订购金额总和,并且依据销售金额由大到小罗列来显示 出每一种产品的排行榜。9、计算每一产品每月的销售金额总和,并将结果按销售(月份,产品编号)排序。10、查询每位业务员各个月的业绩,并按业务员编号、月份降序排序。三、实验结果1、select count(emp_no总)人数 from employee;2、select dept,count(emp_n而)工人数,avg(salary平)均薪水 from employee group by dept;3、select sale_id,tot_amt fro
5、m dbo.sales where tot_amt 10000;4、select prod_id,count(prod销_i* )总量,avg(unit_pric 斗)均单价from dbo.sale_item group by prod_id;5、select sex,title,avg(srt:from dbo.employee group by sex,title with cube;6、select case when(grouping(sex)= 1 )then allelse isnuH(sex,unknown)end as sex,case when(grouping(title
6、)= 1) then allelse isnull(title,unknown)end as title,avg(salary) a平 s 均薪水from employeegroup by sex,title with rollup;7、select distinct count(pro m类id数)from salejtem;8、select prod_id,sum(qty * unit_pW 语 e)from sale_itemgroup by prod_idorder by sum(unit_price) desc;9、select prod_id,month(order_date),s
7、um(unit_price)from sale_itemgroup by prod_id, month(order_date)order by prod_id,month(order_date) desc;10、select sale_id,month(order_date), sum(tot_amt)from salesgroup by sale_id,month(order_date)order by sale_id,month(order_date) desc;实验6连接查询一、实验目的掌握使用连接的方法从多个表中查询数据。理解内连接、外连接(包括左外连接、右外连 接和全外连接)、自身连
8、接的概念和使用。要求学生熟练掌握在from子句和在where子句 中指定连接条件的这两种方法。二、实验内容1、查找出employee表中部门相同且住址相同的女员工的姓名、性别、职称、薪水、住址。2、检索product表和salejtem表中相同产品的产品编号、产品名称、数量、单价。3、检索produc俵和salejtem表中单价高于2400元的相同产品的产品编号、产品名称、数量、单价。4、查询在每张定单中订购金额超过24000元的客户名及其地址。5、查找有销售记录的客户编号、名称和定单总额。6、每位客户订购的每种产品的总数量及平均单价,并按客户号,产品号从小到大罗列。7、查找在1997年中有销
9、售记录的客户编号、名称和定单总额。8、分别使用左向外连接、右向外连接、完整外部连接检索product表和sale_item表中单 价高于2400元的相同产品的产品编号、产品名称、数量、单价。并分析比较检索的结 果。三、实验结果1 select a.emp_name,a.sex,a.title,a.salary,a.addrfrom employee a,employee b where a.dept=b.dept and a.addr=b.addr icnd;a.sex2、select product.prod_id,prod_name,qty,unit_pricefrom sale_item
10、,product where sale_item.prod_id=product.prod_id;3、select product.prod_id,prod_name,qty,unit_pricefrom sale_item,product where unit_price2400;4、select cust_name,addr from customerwhere cust_id in (select cust_id from sales where tot_amt24000);5、select a.cust_id,cust_name,tot_amt from customer a,sale
11、s b where a.cust_id=b.cust_id;6、select prod_id,cust_id,qty,unit_price from sale_item, sales order by prod_id,cust_id;7、select a.cust_id,cust_name,tot_amtfrom customer a,sales b where a.cust_id=b.cust_id and convert(char(4),order_date, 120)= 19971;8、左外连接select b.prod_id,a.prod_name,b.qrtii t_pricefro
12、m product a left outer join sale_item b on(a.prod_id=b.prod_id) and b. unit_price2400;右外连接select a.prod_id,a.prod_name,b.q ntyt_pricefrom product a right outer join sale_item b on a.prod_id=b.prod_id and t).unit_price2400;完整外部连接select a.prod_id,a.prod_name,b.qnti t_pricefrom product a full join sale
13、_item b on(a.prod_id=b.prod_id)and b.unit_price2400;实验7嵌套查询三、实验目的掌握select语句的嵌套使用,实现多表的复杂查询,进一步理解select语句的高级使用方 法。四、实验内容1、由sales表中查找出销售金额最高的定单。2、由sales表中查找出定单金额大于飞0013业务员在1996/10/15这天所接任一张定单的 金额”的所有定单,并显示承接这些定单的业务员和该条定单的金额。3、找出公司女业务员所接的定单。4、找出目前业绩未超过200000元的员工。5、在销售主表sales中查询销售业绩最高的业务员编号及销售业绩。6、找出目前业
14、绩超过232000元的员工编号和姓名。7、查询订购的产品至少包含了定单10003中所订购产品的定单。8、查询末承接业务的员工的信息。三、实验结果sales);1、select order_no,tot_amt from sales where tot_amt=(select max(tot_amt )from2、select order_no,tot_amt,sale_idfrom saleswhere tot_amtall(select tot_amtfrom saleswhere sale_id=e0013and order_date=* 1996/10/15f)order by tot_
15、amt;3、select emp_no from employee where s女et =;4、select emp_no,emp_name from employee where salary23200);7、select distinct order_nofrom sale_item awhere order_no10003andnot exists (select *from sale_item b where order_no - 100a0n3d not exists(select *from sale_item c where c.order_no=a.ordearn_dno c
16、.prod_id=b.prod_id);8、select *from employee awhere not exists(select * fromsales b wherea.emp_no=b.sale_id)实验8数据更新五、实验目的熟练使用insert/delete/upd语at句e进行表的更新操作。六、实验内容1、为各表添加若干条记录,必须符合实验二中设定的各种约束。2、将每一个员工的薪水上调10% o3、删除sales表中作废的定单(其发票号码为,000000004)其定货明细表中的数据也 一并删除。4、删除所有没有销售业绩的员工记录。5、对那些只要有一笔销售业绩超过20000元的
17、员工的薪水增加500元。三、实验结果实验1 sql server熟悉和数据库创建一、实验目的熟悉sql server 2005提供的服务管理器、企业管理器、查询分析器、客户端和服务器端网 络实用工具等常用管理工具的使用。理解客户/服务器模式,理解面向连接与非面向连接 的差别。理解交互式sql的工作机制。能够理解命名管道协议与tcp/ip协议的差别。能够登 陆上sql server数据库服务器。二、实验内容1、启动sql server服务。2、打开sql server的企业管理器,连接上sql server服务器。展开左边树状窗口的各级 结点,观察右边内容窗口的变化。3、打开sql serv画查
18、询分析器,用use命令打开样例数据库pubs。4、在查询窗口输入execsp_help,运行后察看结果。5、在查询窗口输入select * from authors,运行后察看结果。三、实验结果3、当不确定当前所操作的是哪个数据库,可使用use来定位到某数据库。4、;结果心消息NameOwnerObjectJype1: M Sreplication-options:dbouser table2 sptjallback_dbdbouser table3 sptjallback-devdbouser table4 sptjallback-usgdbouser table5 spt_monitord
19、bouser table6 spt_valuesdbouser tablesp_M Sdeanupmergepublisherdbostored procedure8 sp_MSrepl_startupdbostored procedure上- Userjype Storagejype Length Prec:Scale Nullable5、查询某张表的所有列。实验2简单查询一、实验目的:熟悉sql served企业管理器和查询分析器的用户界面,掌握用企业管理器和查询分析器 创建数据库,修改数据库和删除数据库的方法。二、实验内容分别使用sql server 20企05业管理器和tsql语句,按
20、下列要求创建、修改和删除用户数 据库。1、创建名称为company的数据库,数据库中包含一个数据文件,逻辑文件名为 company_data,磁盘文件名为company_data.mdf,文件初始容量为5mb ,最大容量为 15mb,文件容量递增值为1 mb ;事务日志文件的逻辑文件名为companyog,磁盘文件名为companyog.ld, f文件初始容量为5mb,最大容量为10mb ,文件容量递增值 为 Imb o2、对该数据库进行修改:添加一个数据文件,逻辑文件名为company2_data,磁盘文件 名为company2_data.ndf,文件初始容量为Imb,最大容量为5mb ,文
21、件容量递增值为Imb ;将日志文件companyog的最大容量增加为15mb ,文件容量递增值为2mb。3、在company数据库中添加一个文件组tempgroup,并向该文件组中添加一个容量为3mb,最大容量为10mb,递增量为Imb的数据文件,该数据文件的逻辑文件名为 company3_data, 磁盘文件名为 company3_data.ndo f4、在company数据库中删除数据文件company2_datao5、删除数据库company。6、采用默认设置创建数据库company。三、实验结果1、create database companyon ( name=company_dat
22、a,size=5mb,maxsize=15mb,filegrowth= 1 mb )log on (name=company_log,size=5mb,maxsize=10mb,filegrowth= 1 mb );2、alter database companyadd file(name二company 2_data,size=lmb,maxsize=5mb,filegrowth= 1 mb)alter database companymodify file(name=company_log,maxsize = 15mb,filegrowth=2mb);3、alter database co
23、mpanyadd filegroup tempgroupalter database companyadd file(name=company 3_data;size=3mb,maxsize=10mb,filegrowth= 1 mb)to filegroup tempgroup;4、alter database company remove file company2_data;5、drop database company;6、create database company;实验3创建和修改数据表一、实验目的:熟悉有关数据表的创建和修改等工作,理解数据库模式的概念,了解主键约束、外键约 束
24、、unique约束和check约束的创建和应用。要求学生熟练掌握使用企业管理器和tsql 语句create table alter table及drop tabi语e句对数据表进仃官理。二、实验内容分别在sql server 200企5业管理器和在查询分析分析器中使用tsql语句完成以下操作: 员工 人事表 employee客Femp_nochar(5) notnullprimary key员工编号emp_namevarchar( 10) not null员工姓名sexchar(2) notnull性别deptvarchar( 10) not null所属部门titlevarchar( 10)
25、 not null职称date_hireddatetime not null雇佣日DllinUaydatetime nuL.11生日odltTr jfplpnhnnpintnot nvQrrhQrf90 n111lU薪水addrvarcharf501 nLill电话,表 customer住址custid .cust namechart5) not n varchar(20) netullnullprimary key客户号addrvarchar(40) netnull客户名称tel_novarchar(20) netnull客户住址zipchar(6) null客户电话邮政编码销售主表sale
26、sorder_nointnot nullprimary key定单编号cust_idchar(5)not null客户号sale_idchar(5)not null业务员编号tot_amt nuneric(9,2)not null定单金额order_date 出itetimenot null定货日期销货明细表sale_itemorder_nointnot nullprimary key定单编号prod_idchar(5)not nullprimary key产品编号qtyintnot null销售数量unit_pricenumenc(/,2)not nullniiii单价orQcr_cidic
27、cidietimeIlUli定单日期产品名称表productprod_id ctar(5) not nu1 primary key产品编号prod_namevarchar(20) notnull产品名称1、在数据库company中创建以上五张表,并设置各表的主键。2、在销售主表sales中添加字段发票号码invoice_no, char(10), not nuo 113、添加外键约束:a.在销售主表sales的业务员编号字段salejd上添加外键约束,参照字段为员工表 employee中的字段员工编号emp_no ,约束名为fk_sale_io db.在销售主表sales的客户号字段cust_
28、id上添加外键约束,参照字段为客户表custome中的字段客户号cust_i, d约束名为fk_cust_i。dc.在销售明细表sale_item的定单编号字段ordejno上添加外键约束,参照字段为销 售主表sales中的字段定单编号order_no,约束名为fk_order_nood.在销售明细表salejtem的产品编号字段prodjd上添加外键约束,参照字段为产品 名称表product中的产品编号字段prod_id,约束名为fk_prod_id。4、添加核查约束:a.将员工表employee中的薪水字段salary的值限定在1000至10000间,约束名为ck_salaro yb.将员
29、工表employee中的员工编号字段emp_no设定为以“e”字母开头,后面跟f 位数的编号,约束名为ck_emp_nooc.将员工表employee中的性别字段设定这取值只能是男和女; 约束名为ck_sex。在将销售主表sales中的发票号码字段invoice。设定为以中字母开头,后面跟9 位数的编号,约束名为ck_inno。5、为销售主表sales中的字段发票号码invoice_no设置为惟一约束,约束名为un_inno。三、实验结果1 create table employee(emp_no char(5) not null primary key,emp_name varchar( 1
30、0) not null,sex char(2) not null,dept varchar(lO) not null,title varchar(lO) not null,date_hired datetime not null,birthday datetime null,salary int not null,telephone varchar(20) null,addr varchar(50) null);create table customer(cust_id char(5) not null primary key,cust_name varchar(20) not null,ad
31、dr varchar(40) not null,tel_no varchar(20) not null,zip char(6) null);create table sales(order_no inmot 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);create table sale_item(order_no int not null,prod_id char(5) not null
32、,qty int not null,unit_price numeric(7,2) not null,order_date datetime null,primary key(order_no,prod_id);create table product(prod_id char(5) not null primary key,prod_name varchar(20) not null);2、alter table sales add invoice_no char( 10) not null;3、a、alter table salesadd constraint fk_sale_idfore
33、ign key (sale_id) references employee(emp_no);alter table salesadd constraint fk_cust_idforeign key (cust_id) references customer(cust_id);c、alter table sale_itemadd constraint fk_order_noforeign key (order_no) references sales(order_no);d、alter table sale_itemadd constraint fk_prod_idforeign key (p
34、rod_id) references product(prod_id);4、a、alter table employeeadd constraint ck_salary check (salary between 1000 and 10000);b、alter table employeeadd constraint ck_emp_no check(emp_no like fe0-9 0-9 0-9 0-9 0-91); c alter table employeeadd constraint c匕sex check(sex 男Ti女kei I);d、alter table salesadd
35、constraint ck_innocheck(invoice_no like 40-9 LO-90-90-9J0-90-9J0-90-90-91);5、alter table salesadd constraint un_inno unique(invoice_no);实验4简单的单表查询一、实验目的:熟练掌握用select语句实现简单的单表查询。掌握select子句、from子句、where子句及orderby子句的用法。J二、实验内容运行查询文件company.sq, 1生成上机必要的数据,然后完成以下操作。1、查找所有经理的姓名、职称、薪水。2、在销售主表sales中查找销售金额大于等
36、于10000元的定单。3、在员工表employee中查找薪水在4000至8000元之间的员工。4、在员工表employee中查找住址为上海、北京、天津这三个城市的员工。5、在客户表customer中查找住址不在上海、北京、天津这三个城市的客户。6、在员工表employee中查找姓“王”用姓名最后一个字为“功”的员工。7、在客户表customer中查找姓“刘”的客户名称、电话。8、查找出职称为“经理”或者“职员”的女工的信息。9、查找薪水最高的前三条员工记录。10、查找定单金额最高的前10%的定单记录。11、查找员工表中所属部门(去掉重复记录)。12、查找员工表中的所有记录,并按薪水由低到高进行排序。