SQL语句实验报告.docx

上传人:b****4 文档编号:1396311 上传时间:2022-10-22 格式:DOCX 页数:32 大小:720.32KB
下载 相关 举报
SQL语句实验报告.docx_第1页
第1页 / 共32页
SQL语句实验报告.docx_第2页
第2页 / 共32页
SQL语句实验报告.docx_第3页
第3页 / 共32页
SQL语句实验报告.docx_第4页
第4页 / 共32页
SQL语句实验报告.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

SQL语句实验报告.docx

《SQL语句实验报告.docx》由会员分享,可在线阅读,更多相关《SQL语句实验报告.docx(32页珍藏版)》请在冰豆网上搜索。

SQL语句实验报告.docx

SQL语句实验报告

试验一:

数据定义及更新语句练习

一、试验目

熟练掌握用SQL语句实现数据库和基础表创建以及数据更新。

二、试验内容

(1)用SQL语句建立以下以自己名字为名数据库,包含S,P,J,和SPJ四个基础表(教材第二章习题5中四个表),要求实现关系三类完整性。

S(SNO,SNAME,STATUS,CITY);

P(PNO,PNAME,COLOR,WEIGHT);

J(JNO,JNAME,CITY);

SPJ(SNO,PNO,JNO,QTY);

(2)分别使用插入、删除、修改方法更新基础表中数据。

a.利用Insert语句将习题中给出示例统计插入各表。

b.利用Update更新表中统计:

①将p表中全部红色零件重量增加5。

②将spj表中全部天津供给商QTY属性值降低10。

用子查询。

c.利用Delete语句删除p表中全部红色零件统计。

三、完成情况

1.创建四个基础表:

CREATETABLES

(SNOCHAR(20)PRIMARYKEY,

SNAMECHAR(20),

STATUSINT,

CITYCHAR(20));

CREATETABLEP

(PNOCHAR(20)PRIMARYKEY,

PNAMECHAR(20),

COLORCHAR(10),

WEIGHTINT);

CREATETABLEJ

(JNOCHAR(20)PRIMARYKEY,

JNAMECHAR(20),

CITYCHAR(20));

CREATETABLESPJ

(SNOCHAR(20),

PNOCHAR(20),

JNOCHAR(20),

QTYINT,

PRIMARYKEY(SNO,PNO,JNO),

FOREIGNKEY(SNO)REFERENCESS(SNO),

FOREIGNKEY(PNO)REFERENCESP(PNO),

FOREIGNKEY(JNO)REFERENCESJ(JNO));

2.利用INSERT语句为四个基础表插入数据(每个表插入操作均只以两个数据插入为例,其它省略):

INSERT

INTOS

VALUES('S1','精益','20','天津');

INSERT

INTOS

VALUES('S2','盛锡','10','北京');

INSERT

INTOP

VALUES('P1','螺母','红','12');

INSERT

INTOP

VALUES('P2','螺栓','绿','17');

INSERT

INTOJ

VALUES('J1','三建','北京');

INSERT

INTOJ

VALUES('J2','一汽','长春');

INSERT

INTOSPJ

VALUES('S1','P1','J1','200');

INSERT

INTOSPJ

VALUES('S1','P1','J3','100');

3.利用UPDATE语句更新表中统计:

UPDATEP

SETWEIGHT=WEIGHT+5

WHERECOLOR='红';

UPDATESPJ

SETQTY=QTY-10

WHERESNOIN

(SELECTSNO

FROMS

WHERECITY='天津');

4.利用Delete语句删除p表中全部红色零件统计

DELETE

FROMSPJ

WHEREPNOIN

(SELECTPNO

FROMP

WHERECOLOR='红');

DELETE

FROMP

WHERECOLOR='红';

四、试验结果

1.利用INSERT语句为四个基础表插入数据:

2.利用UPDATE语句更新表中统计:

3.利用Delete语句删除p表中全部红色零件统计

五、问题与处理

1.怎样保留数据库?

 

原认为需要用一次输入一次,以后经过老师讲解知道能够分离数据库(只保留.mdf文件就行了,到用时在附加数据库),还能够备份数据库。

2.为基础表P插入数据犯错。

在定义基础表P时,为PNAME列定义了UNIQUE约束条件,但插入数据时发觉PNAME有两个相同数据,造成不能正确插入数据。

经老师提醒后,选择利用DROP语句删除SPJ表和P表,进行修改重新定义,再次插入数据时便可顺利插入。

3.用Delete语句删除p表中全部红色零件统计时,直接在P表中进行对应操作,造成出现:

“DELETE 语句与REFERENCE 约束"FK__spj__pno__4F7CD00D"冲突。

该冲突发生于数据库"myspj",表"dbo.spj", column 'pno'。

 语句已终止”情况。

经老师提醒后,发觉p.pno作为spj.pno外码,两张表相关系,需先在SPJ表中进行删除操作,然后才能在P表中进行删除操作,这么方可顺利完成p表中全部红色零件统计删除操作。

六、思索题

(1)在为各表设定关键字时弹出页面中相关键字和索引选项,试经过给基础表设定这两个项目并说明二者区分。

答:

关键字会受主码影响,而索引不受主码影响,能够为任何属性设索引。

索引能够加紧表查询速度,常常将用来查询一个或者多个字段设置为索引。

(2)基础表中输入数据时,注意数据与字段类型和长度以及能否为空属性是否一致,保留时如有错误分析错误原因,立刻更正并将错误汇报写在试验汇报中。

答:

在基础表中插入数据时,不为空地方不可输入空值,不然将无法继续插入。

七、试验总结

试验刚开始时,因为之前没有接触过SQLServer软件,造成有点不知所措,更不知从何下手,在老师指导和同学们帮助下,逐步学会了怎样进行试验操作。

感觉数据库还是比很好学(相对编程来说),不过建数据库时候轻易犯错,工作比较繁琐,建表时更要考虑周全并仔细检验,稍不小心,就可能造成前功尽弃,造成进行重新建表、插入数据等一系列操作。

试验二:

简单查询和连接查询

一、试验目

熟练掌握用SQL语句实现简单查询和多个数据表连接查询。

二、试验内容

(一)完成下面简单查询:

①查询全部“天津”供给商明细;

②查询全部“红色”14千克以上零件。

③查询工程名称中含有“厂”字工程明细。

(二)完成下面连接查询:

①等值连接:

求s表和j表相同城市等值连接。

②自然连接:

查询全部供给明细,要求显示供给商、零件和工程名称,

并根据供给、工程、零件排序。

③笛卡尔积:

求s和p表笛卡尔积。

④左连接:

求j表和spj表左连接。

⑤右连接:

求spj表和j表右连接。

三、完成情况

(一)简单查询

①查询全部“天津”供给商明细

SELECT*

FROMS

WHERECITY='天津';

②查询全部“红色”14千克以上零件

SELECT*

FROMP

WHERECOLOR='红'ANDWEIGHT>='14';

③查询工程名称中含有“厂”字工程明细

SELECT*

FROMJ

WHEREJNAMELIKE'%厂';

(二)连接查询

①等值连接

SELECTS.*,J.*

FROMS,J

WHERES.CITY=J.CITY;

②自然连接

SELECTSNAME,JNAME,PNAME,QTY

FROMS,P,J,SPJ

WHERES.SNO=SPJ.SNOAND

P.PNO=SPJ.PNOAND

J.JNO=SPJ.JNO;

③笛卡尔积

SELECT*

FROMS,P;

④左连接

SELECT*

FROMJLEFTOUTERJOINSPJON(J.JNO=SPJ.JNO);

⑤右连接

SELECT*

FROMSPJRIGHTOUTERJOINJON(SPJ.JNO=J.JNO);

四、试验结果

(一)简单查询

①查询全部“天津”供给商明细②查询全部“红色”14千克以上零件

③查询工程名中含“厂”字工程明细

(二)连接查询①等值连接

②自然连接

③笛卡尔积

④左连接⑤右连接

五、问题与处理

1.因为试验一对表中数据有所更改,进行试验二时不得不对试验数据再

次进行更改,添加和删除。

 

处理:

对有影响数据进行更改,而没有影响数据不做改变。

 

2.对多个表进行连接时,数据有时会被打乱。

 

处理:

对每一个数据名称前都加上所在表前缀,方便于区分数据。

 

3.对于存在量词和全称量词无法正确把握,不能得出正确查询结果。

 

处理:

对书中数据查询进行逐句逐字了解,以正确把握存在量词和全称量词利用。

4.在做自然连接时,查询出来结果有一百多行。

 

处理措施:

仔细检验以后发觉,少了一个连接Select SPJ.PNO=P.PNO。

六、思索题

查看试验内容2中左连接和右连接实施结果是否一致,为何?

答:

不一致,左连接是输出第一个表全部,二右连接是输出第二个表全部。

原因:

左连接列出左边关系中全部元组,右连接列出右边关系中全部元组。

七、试验总结

经过此次试验,我发觉自己对书本上知识点了解还不够透彻,前面所学知识也忘了不少,做试验时几乎都是翻着书本做出来。

如求s和p表笛卡尔积时,就感觉有点陌生了,不知道从哪着手,本认为会很麻烦,问询同学后才发觉简单“SELECT*FROMS,P;”语句就能够处理,由此可见自己对知识点了解还不够到位。

试验三:

分组查询和嵌套查询

一、试验目

熟练掌握用SQL语句实现多个数据表分组查询和嵌套查询。

二、试验内容

(一)分组查询:

1、求多种颜色零件平均重量。

2、求北京供给商和天津供给商总个数。

3、求各供给商供给零件总数。

4、求各供给商供给给各工程零件总数。

5、求使用了100个以上P1零件工程名称。

6、求各工程使用各城市供给零件总数。

(二)嵌套查询:

1、in连接谓词查询:

①查询没有使用天津供给商供给红色零件工程名称。

②查询供给了1000个以上零件供给商名称。

(having)

2、比较运算符:

求重量大于全部零件平均重量零件名称。

3、Exists连接谓词:

①查询供给J1全部零件都是红色供给商名称。

②最少用了供给商S1所供给全部零件工程号JNO。

三、完成情况

(一)分组查询

1.求多种颜色零件平均重量

SELECTCOLOR,AVG(WEIGHT)

FROMP

GROUPBYCOLOR;

2.求北京供给商和天津供给商总个数

SELECTCITY,COUNT(CITY)

FROMS

GROUPBYCITY

HAVINGCITY='北京'ORCITY='天津';

3.求各供给商供给零件总数

SELECTSPJ.SNO,SUM(QTY)

FROMSPJ

GROUPBYSPJ.SNO;

4.求各供给商供给给各工程零件总数

SELECTSPJ.SNO,JNO,SUM(QTY)

FROMSPJ

GROUPBYSPJ.SNO,JNO;

5.求使用了100个以上P1零件工程名称

SELECTJNAME

FROMSPJ,J

WHEREJ.JNO=SPJ.JNOANDPNO='P1'

GROUPBYJNAME,QTY

HAVINGQTY

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

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1