1、SNAME CHAR(20),STATUS INT,CITY CHAR(20);CREATE TABLE P(PNO CHAR(20)PRIMARY KEY,PNAME CHAR(20),COLOR CHAR(10),WEIGHT INT);CREATE TABLE J(JNO CHAR(20)PRIMARY KEY,JNAME CHAR(20),CREATE TABLE SPJ(SNO CHAR(20),PNO CHAR(20),JNO CHAR(20),QTY INT,PRIMARY KEY(SNO,PNO,JNO),FOREIGN KEY(SNO)REFERENCES S(SNO),FO
2、REIGN KEY(PNO)REFERENCES P(PNO),FOREIGN KEY(JNO)REFERENCES J(JNO);2.利用INSERT语句为四个基础表插入数据(每个表插入操作均只以两个数据插入为例, 其它省略):INSERTINTO SVALUES(S1,精益20天津);S2盛锡10北京INTO PP1螺母红12P2螺栓绿17INTO JJ1三建J2一汽长春INTO SPJ200J31003.利用UPDATE语句更新表中统计:UPDATE PSET WEIGHT=WEIGHT+5WHERE COLOR=;UPDATE SPJSET QTY=QTY-10WHERE SNO IN
3、(SELECT SNOFROM SWHERE CITY=4.利用Delete语句删除p表中全部红色零件统计DELETEFROM SPJWHERE PNO IN(SELECT PNOFROM P四、 试验结果 1.利用INSERT语句为四个基础表插入数据:2.利用UPDATE语句更新表中统计:3.利用Delete语句删除p表中全部红色零件统计五、 问题与处理1.怎样保留数据库?原认为需要用一次输入一次, 以后经过老师讲解知道能够分离数据库(只保留.mdf文件就行了, 到用时在附加数据库), 还能够备份数据库。2.为基础表P插入数据犯错。在定义基础表P时, 为PNAME列定义了UNIQUE约束条件
4、, 但插入数据时发觉PNAME有两个相同数据, 造成不能正确插入数据。经老师提醒后, 选择利用DROP语句删除SPJ表和P表, 进行修改重新定义, 再次插入数据时便可顺利插入。3.用Delete语句删除p表中全部红色零件统计时, 直接在P表中进行对应操作, 造成出现: “DELETE语句与REFERENCE约束FK_spj_pno_4F7CD00D冲突。该冲突发生于数据库myspj, 表dbo.spj,columnpno。语句已终止”情况。 经老师提醒后, 发觉p.pno作为spj.pno外码, 两张表相关系, 需先在SPJ表中进行删除操作, 然后才能在P表中进行删除操作, 这么方可顺利完成p
5、表中全部红色零件统计删除操作。六、 思索题(1)在为各表设定关键字时弹出页面中相关键字和索引选项, 试经过给基础表设定这两个项目并说明二者区分。 答: 关键字会受主码影响, 而索引不受主码影响, 能够为任何属性设索引。索引能够加紧表查询速度, 常常将用来查询一个或者多个字段设置为索引。(2)基础表中输入数据时, 注意数据与字段类型和长度以及能否为空属性是否一致, 保留时如有错误分析错误原因, 立刻更正并将错误汇报写在试验汇报中。答: 在基础表中插入数据时, 不为空地方不可输入空值, 不然将无法继续插入。七、 试验总结 试验刚开始时, 因为之前没有接触过SQL Server软件, 造成有点不知所
6、措, 更不知从何下手, 在老师指导和同学们帮助下, 逐步学会了怎样进行试验操作。感觉数据库还是比很好学(相对编程来说), 不过建数据库时候轻易犯错, 工作比较繁琐, 建表时更要考虑周全并仔细检验, 稍不小心, 就可能造成前功尽弃, 造成进行重新建表、 插入数据等一系列操作。试验二: 简单查询和连接查询 熟练掌握用SQL语句实现简单查询和多个数据表连接查询。(一)完成下面简单查询: 查询全部“天津”供给商明细; 查询全部“红色”14千克以上零件。 查询工程名称中含有“厂”字工程明细。(二)完成下面连接查询: 等值连接: 求s表和j表相同城市等值连接。 自然连接: 查询全部供给明细, 要求显示供给
7、商、 零件和工程名称, 并根据供给、 工程、 零件排序。 笛卡尔积: 求s和p表笛卡尔积。 左连接: 求j表和spj表左连接。 右连接: 求spj表和j表右连接。(一)简单查询查询全部“天津”供给商明细SELECT *查询全部“红色”14千克以上零件AND WEIGHT=14查询工程名称中含有“厂”字工程明细FROM JWHERE JNAME LIKE%厂(二)连接查询等值连接 SELECT S.*,J.*FROM S,JWHERE S.CITY=J.CITY;自然连接SELECT SNAME,JNAME,PNAME,QTYFROM S,P,J,SPJWHERE S.SNO=SPJ.SNO A
8、ND P.PNO=SPJ.PNO AND J.JNO=SPJ.JNO;笛卡尔积FROM S,P;左连接FROM J LEFT OUTER JOIN SPJ ON(J.JNO=SPJ.JNO);右连接FROM SPJ RIGHT OUTER JOIN J ON(SPJ.JNO =J.JNO);查询全部“天津”供给商明细 查询全部“红色”14千克以上零件 查询工程名中含“厂”字工程明细 (二)连接查询 等值连接左连接 右连接1.因为试验一对表中数据有所更改, 进行试验二时不得不对试验数据再次进行更改, 添加和删除。处理: 对有影响数据进行更改, 而没有影响数据不做改变。2.对多个表进行连接时, 数
9、据有时会被打乱。 对每一个数据名称前都加上所在表前缀, 方便于区分数据。3.对于存在量词和全称量词无法正确把握, 不能得出正确查询结果。 对书中数据查询进行逐句逐字了解, 以正确把握存在量词和全称量词利用。4.在做自然连接时, 查询出来结果有一百多行。处理措施: 仔细检验以后发觉, 少了一个连接SelectSPJ.PNO=P.PNO。查看试验内容2中左连接和右连接实施结果是否一致, 为何? 不一致, 左连接是输出第一个表全部, 二右连接是输出第二个表全部。原因: 左连接列出左边关系中全部元组, 右连接列出右边关系中全部元组。经过此次试验, 我发觉自己对书本上知识点了解还不够透彻, 前面所学知识
10、也忘了不少, 做试验时几乎都是翻着书本做出来。如求s和p表笛卡尔积时, 就感觉有点陌生了, 不知道从哪着手, 本认为会很麻烦, 问询同学后才发觉简单“SELECT * FROM S,P;”语句就能够处理, 由此可见自己对知识点了解还不够到位。试验三: 分组查询和嵌套查询熟练掌握用SQL语句实现多个数据表分组查询和嵌套查询。(一)分组查询: 1、 求多种颜色零件平均重量。 2、 求北京供给商和天津供给商总个数。 3、 求各供给商供给零件总数。 4、 求各供给商供给给各工程零件总数。 5、 求使用了100个以上P1零件工程名称。 6、 求各工程使用各城市供给零件总数。(二)嵌套查询: 1、 in连
11、接谓词查询: 查询没有使用天津供给商供给红色零件工程名称。 查询供给了1000个以上零件供给商名称。(having) 2、 比较运算符: 求重量大于全部零件平均重量零件名称。 3、 Exists连接谓词: 查询供给J1全部零件都是红色供给商名称。 最少用了供给商S1所供给全部零件工程号JNO。(一)分组查询1.求多种颜色零件平均重量SELECT COLOR,AVG(WEIGHT)GROUP BY COLOR;2.求北京供给商和天津供给商总个数SELECT CITY,COUNT(CITY)GROUP BY CITYHAVING CITY=OR CITY=3.求各供给商供给零件总数SELECT SPJ.SNO,SUM(QTY)GROUP BY SPJ.SNO;4.求各供给商供给给各工程零件总数SELECT SPJ.SNO,JNO,SUM(QTY)GROUP BY SPJ.SNO,JNO;5.求使用了100个以上P1零件工程名称SELECT JNAMEFROM SPJ,JWHERE J.JNO=SPJ.JNO AND PNO=GROUP BY JNAME,QTYHAVING QTY
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1