《数据库系统原理》实验报告Word下载.docx

上传人:b****1 文档编号:1503586 上传时间:2023-04-30 格式:DOCX 页数:61 大小:87.86KB
下载 相关 举报
《数据库系统原理》实验报告Word下载.docx_第1页
第1页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第2页
第2页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第3页
第3页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第4页
第4页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第5页
第5页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第6页
第6页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第7页
第7页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第8页
第8页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第9页
第9页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第10页
第10页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第11页
第11页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第12页
第12页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第13页
第13页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第14页
第14页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第15页
第15页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第16页
第16页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第17页
第17页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第18页
第18页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第19页
第19页 / 共61页
《数据库系统原理》实验报告Word下载.docx_第20页
第20页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《数据库系统原理》实验报告Word下载.docx

《《数据库系统原理》实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《《数据库系统原理》实验报告Word下载.docx(61页珍藏版)》请在冰点文库上搜索。

《数据库系统原理》实验报告Word下载.docx

实验报告装订要求

实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称:

数据库定义与操作语言实验学时:

2

同组学生姓名:

孟陈、陈晓雪、季佰军

实验地点:

1318

实验日期:

实验成绩:

批改教师:

批改时间:

一、实验目的

1、理解和掌握数据库DDL语言,能够熟练地使用SQLDDL语句创建、修改和删除数据库、模式和基本表。

2、掌握SQL册亨徐设计基本规范,熟练运用SQL语言实现数据基本查询,包括单表查询、分组统计查询和连接查询

3、掌握SQL嵌套查询和集合查询等,各种高级查询的设计方法等.

4、熟悉数据库的数据更新操作,能够使用sql语句对数据库进行数据的插入、修改、删除操作。

5、熟悉sql语言有关系图的操作,能够熟练使用sql语言来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。

6、掌握所以设计原则和技巧,能够创建合适的索引以提高数据库查询、统计分析效率。

二、实验内容和要求

1、理解和掌握SQLDDL语句的语法,特别是各种参数的具体含义和使用方法;

使用sql语句创建、修改和删除数据库、模式和基本表。

掌握sql语句常见语法错误的调试方法。

2、针对TPC-H数据库设计各种单表查询sql语句、分组统计查询语句;

设计单个表针对自身的连接查询,涉及多个表的连接查询。

理解和掌握sql查询语句各个子句的特点和作用,按照sql程序设计规范写出具体的sql查询语句,并调试通过。

3、针对TPC-H数据库,证券分析用户查询要求,设计各种嵌套查询和集合查询。

4、针对TPC-H数据库设计单元主唱入、批量数据插入、修改数据和删除数据的sql语句。

理解和掌握insert、update、delete语法结构的各个组成成分,结合嵌套sql子查询,分别设计几个不同形式的插入、修改和删除数据的语句,并调试成功。

5、针对给定的数据库模式,以及相应的应用要求,创建视图和带WITHCHECKOPTION的视图,并验证视图WITHCHECKOPTION选项的有效性。

理解和掌握试图消解执行原理,掌握可更新视图和不可更新视图的区别。

6、针对给定的数据库模式和具体应用需求,创建唯一索引、函数索引、复合索引等;

修改索引;

删除索引。

设计相应的sql查询验证索引有效性,学习利用EXPLAIN命令分析sql查询是否使用了所创建的索引,并能够分析其原因,执行sql查询并估算索引提高查询效率的百分比,要求实验数据达到10万条记录以上的数据量,以便验证所以效果.

三、实验过程

1、数据库定义实验

(1)定义数据库

采用中文字符集创建名为TCHP的数据库。

CREATEDATABASETPCHENCODING=’GBK’;

(2)定义模式

在数据库TPCH中创建名为SALES的模式。

CreateSCHEMASales;

(3)定义基本表

在TPCH数据库的Sales模式中创建8个基本表。

/*设置当前会话的搜索路径为sales模式、public模式,基本表就会自动创建在sales模式下。

*/

SETSEARCH_PATHTOSales,Public;

CREATETABLERegion(

regionkeyINTEGERPRIMARYKEY,

nameCHAR(25),

commentVARCHAR(152));

CREATETABLENation(

nationkeyINTEGERPRIMARYKEY,

addressVARCHAR(40),

regionkeyINTEGERREFERENCESREGION(REGIONKEY),

CREATETABLESupplier(

suppkeyINTEGERPRIMARYKEY,

nationkeyINTEGERREFERENCESNation(nationkey),

phoneCHAR(15),

acctbalREAL,

commentVARCHAR(101));

CREATETABLEPart(

partkeyINTEGERPRIMARYKEY,

nameVARCHAR(55),

mfgrCHAR(25),/*制造厂*/

brandCHAR(10),

typeVARCHAR(25),

sizeINTEGER,

containerCHAR(10),

retailpriceREAL,

commentVARCHAR(23));

CREATETABLEPartSupp(

partkeyINTEGERREFERENCESPart(partkey),

suppkeyINTEGERREFERENCESSupplier(suppkey),

availqtyINTEGER,

supplycostREAL,

commentvarchar(199),

PRIMARYKEY(parkey,suppkey));

CREATETABLECostomer(

custkeyINTEGERPRIMARYKEY,

nameVARCHAR(25),

mktsegmentCHAR(10),

commentVARCHAR(117));

CREATETABLEOrders(

orderkeyINTEGERPRIMARYKEY,

custkeyINTEGERREFERENCESCustomer(custkey),

orderstatusCHAR

(1),

totalpriceREAL,

orderdateDATE,

orderpriorityINTEGER,

commentVARCHAR(79));

CREATETABLELineitem(

orderkeyINTEGERREFERENCESOrder(orderkey),

suppkeyINTEGERREFERENCESSupplier(suppkey),

linenumberINTEGER,

quantityREAL,

extendedpriceREAL,

discountREAL,

taxREAL,

returnflagCHAR

(1),

linestatusCHAR

(1),

shipinstructCHAR(25),

shipmodeCHAR(10),

commentVARCHAR(44),

PRIMARYKEY(orderkey,linenumber),

FOREIGNKEY(Partkey,suppkey)REFERENCESPartSupp(partkey,suppkey));

2、数据基本查询

(1)单表查询(实现投影操作)

查询供应商的名称、地址和联系电话。

SELECTEname,address,phoneFROMSupplier;

(2)单表查询(实现选择操作)

查询最近一周内提交的总价大于1000元的订单的编号、顾客编号等订单的所有信息。

SELECT*FROMWHERECURRENT_DATE-orderdata<

7ANDtotalprice>

1000;

(3)不带分组过滤条件的分组统计查询

统计每个顾客的订购金额

SELECT,SUM

FROMcustomerC,OrdersO

WHERE=

GROUPBY;

(4)带分组过滤条件的分组统计查询

查询订单平均金额超过1000元的顾客编号及其姓名

SELECT,MAX()

FROMCustomerC,OrdersO

HAVINGAVG()>

(5)表单自身连接查询

查询与“金仓集团”在同一个国家的供应商编号、名称和地址信息。

SELECT,,

FROMSupplierF,SupplierS

WHERE=AND='

金仓集团'

;

(6)两表连接查询(普通连接)

查询供应价格大于零售价格的零件名、制造商名、零售价格和供应价格。

SELECT,,,

FROMPartP,PartsuppPS

WHERE>

(7)两表连接查询(自然连接)

WHERE=AND

>

(8)三表连接查询

查询顾客“苏举库”订购的订单编号、总价及其订购的零件编号、数量和明细价格。

SELECT,,,,

FROMCustomC,OrdersO,LineitemL

WHERE=AND=AND='

苏举库'

3、数据高级查询实验

(1)IN嵌套查询

查询订购了“海大”制造的“船舶模拟驾驶舱”的顾客。

SELECTcustkey,name

FROMCustomer

WHEREcustkeyIN(SELECT

FROMOrdersO,LineitmeL,PartSuppPS,PartP

WHERE=AND

=AND

='

海大'

AND='

船舶模拟驾驶舱'

);

SELECTcustkey,name

WHEREcuskeyIN(SELECT

FROMOrdersO,LineitemL,PartP

WHERE=AND

(2)单层EXISTS嵌套查询

查询没有购买过“海大”制造的“船舶模拟驾驶舱”的顾客。

WHERENOTEXISTS(SELECT

FROMOrdersO,LineitemL,PartSuppPS,PartP

(3)双层EXISTS嵌套查询

查询至少购买过顾客“张三”购买过的全部零件的顾客姓名。

SELECT

FROMCustomerCA

WHERENOTEXISTS

(SELECT*

FROMCustomerCB,OdersOB,LineitemLB

WHERE=AND

=AND

='

张三'

AND

NOTEXISTS(SELECT*

FROMOrdersOC,LineitemLC

WHERE=AND

=AND

=);

(4)FROM子句中的嵌套查询

查询订单平均金额超过1万元的顾客中的中国籍顾客信息。

SELECTC.*

FROMCustomerC,(SELECTcustkey

FROMOrders

GROUPBYcustkey

HAVINGAVG(totalprice)>

10000)B,NationN

=AND='

中国'

(5)集合查询(交)

查询顾客“张三”和“李四”都订购过的全部零件的信息。

SELECTP.*

FROMCustomerC,OrdersO,LineitemL,PartSuppPS,PartP

WHERE=AND=AND

=AND=AND

=AND='

李四'

INTERSECTION

=AND

='

(6)集合查询(并)

查询顾客“张三”和“李四”订购的全部零件的信息。

UNION

(7)集合查询(差)

顾客“张三”订购过而“李四”没订购过的零件的信息。

EXCEPT

4、数据更新实验

(1)INSERT基本语句(插入全部列的数据)

插入一条顾客记录,要求每列都给一个合理的值。

INSERTINTOCustomer

VALUES(30,'

'

北京市'

40,'

0'

,'

Northeast'

VIPCustomer'

(2)INSERT基本语句(插入部分列的数据)

插入一条订单记录,给出必要的几个字段值。

INSERTINTOLineitem(orderkey,Linenumber,partkey,suppkey,quantity,shipdate)

VALUES(862,ROUND(RANDOM()*100,0,479,1,10,'

2012-3-6'

/*RANDOM()函数为随机小数生成函数,ROUND()为四舍五入函数*/

(3)批量数据INSERT语句

① 创建一个新的顾客表,把所有中国籍顾客插入到新的顾客表中。

CREATETABLENewCustmoerASSELECT*FROMCustomerWITHNODATA;

/*WITHNODATA子句使得SELECT查询只生成一个结果模式,不查询出实际数据*/

INSERTINTONewCustomer/*批量插入SELECT语句查询结果到NewCustomer表中*/

FROMCostomerC,NationN

② 创建一个顾客购物统计表,记录每个顾客及其购物总数和总价等信息。

CREATETABLEShoppingStat

(custkeyINTEGER,

quantityREAL,

totalpriceREAL);

INSERTINTOShoppingStat

SELECT,Sum,Sum/*对分组后的数据求总和*/

FROMCustomerC,OrderO,LineitemL

WHERE=AND=

GROUPBY

③ 倍增零件表的数据,多次重复执行,直到总记录数达到50万为止。

INSERTINTOPart

SELECTpartkey+(SELECTCOUNT(*)FROMPart),

name,mfgr,brand,type,size,container,retailprice,comment

FROMPart;

(4)UPDATE语句(插入部分记录的部分列值)

“金仓集团”供应的所有零件的供应成本价下降10%。

UPDATEPartSupp

SETsupplycost=supplycost*

WHEREsuppkey=(SELECTsuppkey/*找出要修改的那些记录*/

FROMSupplier

WHEREname='

(5)UPDATE语句(利用一个表中的数据修改另外一个表中的数据)

利用Part表中的零售价格来修改Lineitem中的extendedprice,其中extendedprice=*quantity。

UPDATELineitemL

SET=*

FROMPartP

WHERE=;

/*Lineitem表也可以直接与Part表相连接,而不需通过PartSupp连接*/

(6)DELETE基本语句(删除给定条件的所有记录)

删除顾客张三的所有订单记录。

DELECTFROMLineitem/*先删除张三的订单明细记录*/

WHEREorderkeyIN(SELECTorderkey

FROMOrderO,CustomerC

WHERE=AND='

DELECTFROMOrder/*再删除张三的订单记录*/

WHEREcustkey=(SELECTcustkey

FROMCustomer

5、视图

(1)创建视图(省略视图列名)

创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp1,要求列出供应零件的编号、零件名称、可用数量、零售价格、供应价格和备注等信息。

CREATEVIEWV_DLMU_PARTSUPP1AS/*由SELECT子句目标列组成视图属性*/

SELECT,,,,,

FROMPartP,PartSuppPS,SupplierS

海大汽配'

(2)创建视图(不能省略列名的情况)

创建一个视图V_CustAvgOrder,按顾客统计平均每个订单的购买金额和零件数量,要求输出顾客编号、姓名,平均购买金额和平均购买零件数量。

CREATEVIEWV_CustAvgOrder(custkey,cname,avgprice,avgquantity)AS

SELECT,MAX,AVG,AVG

FROMCustomerC,OrdersO,LineitemL

(3)创建视图(WITHCHECKOPTION)

使用WITHCHECKOPTION,创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp2,要求列出供应零件的编号、可用数量和供应价格等信息。

然后通过该视图分别增加、删除和修改一条“海大汽配”零件供应记录,验证WITHCHECKOPTION是否起作用。

CREATEVIEWV_DLMU_PartSupp2

AS

SELECTpartkey,suppkey,availqty,supplycost

FROMPartSupp

WHEREsuppkey=(SELECTsuppkey

WITHCHECKOPTION;

INSERTINTOV_DLMU_PartSupp2

VALUES(58889,5048,704,77760);

UPADTEV_DLMU_PartSupp2

SETsupplycost=12

WHEREsuppkey=58889;

DELETEFROMV_DLMU_PartSupp2

(4)可更新的视图(行列子集视图)

使用WITHCHECKOPTION,创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp4,要求列出供应零件的编号、可用数量和供应价格等信息。

然后通过该视图分别增加、删除和修改一条“海大汽配”零件供应记录,验证该视图是否是可更新的,并比较上述“(3)创建视图”实验任务与本任务结果有何异同。

CREATEVIEWV_DLMU_PartSupp3

AS

FROMSupplier

WHEREname='

INSERTINTOV_DLUM_PartSupp3

VALUES(58889,5048,704,77760);

UPDATEV_DLMU_PartSupp3

DELETEFROMV_DLMU_PartSupp3

(5)可更新的视图

INSERTINTOV_CustAvgOrder

VALUES(100000,NULL,20,2000);

(6)删除视图(RESTRICT/CASCADE)

创建顾客订购零件明细视图V_CustOrd,要求列出顾客编号、姓名、购买零件数、金额,然后在该视图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2