实验二:简单查询和连接查询
(一)实验目的:熟练掌握用SQL语句实现数据库和基本表的创建、数据
的更新。
(二)实验内容:
①查询所有“天津”的供应商明细;
②查询所有“红色”的14公斤以上的零件。
③查询工程名称中含有“厂”字的工程明细。
(一)完成下面的连接查询:
①等值连接:求s表和j表的相同城市的等值连接。
②自然连接:查询所有的供应明细,要求显示供应商、零件和工程
的名称,并按照供应、工程、零件排序。
③笛卡尔积:求s和p表的笛卡尔积
④左连接:求j表和spj表的左连接。
⑤右连接:求spj表和j表的右连接。
(三)完成情况(附上设计的SQL语句),语句与查询结果:
①查询所有“天津”的供应商明细;
Select *
From S
Where CITY=‘天津’
②查询所有“红色”的14公斤以上的零件。
Select *
From P
Where COLOR=‘红’and WEIGHT>14
③查询工程名称中含有“厂”字的工程明细。
Select *
From J
Where JNAME NOT IN(‘三建’,‘一汽’)
(二)完成下面的连接查询:
①等值连接:求s表和j表的相同城市的等值连接。
Select S.*,J.*
From S,J
Where
S.CITY=J.CITY
②自然连接:查询所有的供应明细,要求显示供应商、零件和工程
的名称,并按照供应、工程、零件排序。
Select SNAME,JNAME,PNAME
From S,J,P,SPJ
Where SPJ.SNO=S.SNO and SPJ.JNO=J.JNO and SPJ.PNO=P.PNO
③笛卡尔积:求s和p表的笛卡尔积Select *
From
s,p
④左连接:求j表和spj表的左连接。
Select SPJ.JNO,JNAME,PNO,QTY,CITY FROM J LEFT JOIN SPJ ON(J.JNO=SPJ.JNO)
⑤右连接:求spj表和j表的右连接。
Select SPJ.JNO,JNAME,PNO,QTY,CITY
FROM SPJ RIGHT JOIN J ON(J.JNO=SPJ.JNO)
(四)问题及解决:首先写出执行语句不成功的时候系统报告的错误信息。
然后分析错误原因,并给出解决办法。
1、左连接时,输入如下的sql语句,
Select SPJ.JNO,JNAME,PNO,QTY,CITY
FROM J LEFT JOIN SPJ ON(J.JNO=SPJ.JNO)
提示的错误为:在关键字 'left' 附近有语法错误。
解决办法:去掉“left”。
2、在做自然连接时,查询出来的结果有一百多行。
解决办法:仔细检查之后发现,少了一个连接Select SPJ.PNO=P.PNO (五)回答思考题提出的问题,
答:左连接和右连接的执行结果是一致的,因为J表左连接SPJ也即是SPJ 表右链接到J表。
(六)实验总结:心得体会,建议等。
通过本次实验,我发现自己对课本上的知识还没理解透彻,前面的知识也忘了不少了,如当问到笛卡尔积时,就感觉有点陌生了,不知道从哪着手。