电子商务1201班 杨荣清 数据库实验报告.docx
- 文档编号:11592020
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:20
- 大小:262.07KB
电子商务1201班 杨荣清 数据库实验报告.docx
《电子商务1201班 杨荣清 数据库实验报告.docx》由会员分享,可在线阅读,更多相关《电子商务1201班 杨荣清 数据库实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
电子商务1201班杨荣清数据库实验报告
《数据库原理与技术》实验报告
专业电子商务
班级1201班
学号121406020135
学生姓名杨荣清
指导老师蔡羽
河南科技大学管理学院
实验一、数据定义及更新语句练习
实验学时:
2
一、实验目的
熟练掌握用SQL语句实现数据库和基本表的创建、数据的更新。
二、实验内容及完成过程
内容:
(一)用SQL语句建立如下mySPJ数据库,包括S,P,J,和SPJ四个基本表(教材第二章习题5中的四个表),要求实现关系的三类完整性。
S(SNO,SNAME,STATUS,CITY);
P(PNO,PNAME,COLOR,WEIGHT);
J(JNO,JNAME,CITY);
SPJ(SNO,PNO,JNO,QTY)
供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。
供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
(2)分别使用插入、删除、修改的方式更新基本表中的数据。
过程:
(三)完成情况
CREATEtables
(
snochar(9)primarykey,//主键约束
snamechar(20)unique,//唯一值
statussmallint,
citychar(20),
);
createtablep
(
pnochar(9)primarykey,//主键约束
pnamechar(20),
colorchar(9),
weightsmallint,
);
CREATEtablej
(
jnochar(9)primarykey,//主键约束
jnamechar(20)unique,//唯一值
citychar(20),
);
createtablespj
(
snochar(9),
pnochar(9),
jnochar(9),
QTYsmallint,
primarykey(sno,pno,jno),//主键约束
foreignkey(sno)referencess(sno),//外键约束
foreignkey(pno)referencesp(pno),//外键约束
foreignkey(jno)referencesj(jno),//外键约束
);
(四)实验结果
1、利用Insert语句将习题中给出的示例记录插入各表
INSERT
intos(sno,sname,status,city)
values('s1','精益',20,'天津')
insert
intos
values('s2','盛锡',10,'北京')
insert
intos
values('s3','东方红',30,'北京')
insert
intos
values('s4','丰泰盛',20,'天津')
insert
intos
values('s5','为民',30,'上海')
select*
froms
insert
intop
values('p1','螺母','红',12)
insert
intop
values('p2','螺栓','绿',17)
insert
intop
values('p3','螺丝刀','蓝',14)
insert
intop
values('p4','螺丝刀','红',14)
insert
intop
values('p5','凸轮','蓝',40)
insert
intop
values('p6','齿轮','红',30)
select*
fromp
insert
intoj
values('j1','三建','北京')
insert
intoj
values('j2','一汽','长春')
insert
intoj
values('j3','弹簧厂','天津')
insert
intoj
values('j4','造船厂','天津')
insert
intoj
values('j5','机车厂','唐山')
insert
intoj
values('j6','无线电厂','常州')
insert
intoj
values('j7','半导体厂','南京')
select*
fromj
insert
intospj
values('s1','p1','j1',200)
insert
intospj
values('s1','p1','j3',100)
insert
intospj
values('s1','p1','j4',700)
insert
intospj
values('s1','p2','j2',100)
insert
intospj
values('s2','p3','j1',400)
insert
intospj
values('s2','p3','j2',200)
insert
intospj
values('s2','p3','j4',500)
insert
intospj
values('s2','p3','j5',400)
insert
intospj
values('s2','p5','j1',400)
insert
intospj
values('s2','p5','j2',100)
insert
intospj
values('s3','p1','j1',200)
insert
intospj
values('s3','p3','j1',200)
insert
intospj
values('s4','p5','j1',100)
insert
intospj
values('s4','p6','j3',300)
insert
intospj
values('s4','p6','j4',200)
insert
intospj
values('s5','p2','j4',100)
insert
intospj
values('s5','p3','j1',200)
insert
intospj
values('s5','p6','j2',200)
insert
intospj
values('s5','p6','j4',500)
select*
fromspj
2.利用Update更新表中的记录:
①将p表中的所有红色零件的重量增加5。
updatep
setweight=weight-5
wherecolor='红'
②将spj表中所有天津供应商的QTY属性值减少10。
用子查询。
updatespj
setQTY=QTY-10
wheresnoin
(
selectsno
froms
wherecity='天津'
)
3.利用Delete语句删除p表中的所有红色零件的记录。
delete
fromp
wherecolor='红'
DELETE语句与REFERENCE约束"FK__spj__pno__4F7CD00D"冲突。
该冲突发生于数据库"myspj",表"dbo.spj",column'pno'。
语句已终止。
(p.pno作为spj.pno的外键,两张表有关系)
三、问题与解决
1、数据库如何保存?
本以为要用一次输入一次,后来通过老师讲解知道可以分离数据库(只保留.mdf
文件就行了,到用时在附加数据库),还可以备份数据库。
2、输入表是出错?
有时候在建基本表的时侯很容易输错,然会就输不进去了,只能把整个表全删了,再建一个新表。
实验二简单查询和连接查询
实验学时:
2学时
一、实验目的
熟练掌握用SQL语句实现的简单查询和多个数据表连接查询。
二、实验内容及完成过程
内容:
(一)完成下面的简单查询:
①查询所有“天津”的供应商明细;
②查询所有“红色”的14公斤以上的零件。
③查询工程名称中含有“厂”字的工程明细。
(二)完成下面的连接查询:
①等值连接:
求s表和j表的相同城市的等值连接。
②自然连接:
查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
③笛卡尔积:
求s和p表的笛卡尔积
④左连接:
求j表和spj表的左连接。
⑤右连接:
求spj表和j表的右连接。
过程:
(三)完成下面的简单查询:
①查询所有“天津”的供应商明细;
select*
froms
wherecity='天津'
②查询所有“红色”的14公斤以上的零件
select*
fromp
wherecolor='红'and
weight>'14'
③查询工程名称中含有“厂”字的工程明细
select*
fromj
wherejnamelike'%厂'
(四)完成下面的连接查询:
①等值连接:
求s表和j表的相同城市的等值连接。
selects.*,j.*
froms,j
wheres.city=j.city
②自然连接:
查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
selectsname,jname,pname
froms,p,j,spj
wherespj.sno=s.snoand
spj.pno=p.pnoand
spj.jno=j.jno
③笛卡尔积:
求s和p表的笛卡尔积
select*
froms,p
④左连接:
求j表和spj表的左连接
selectj.jno,jname,city,spj.sno,pno,QTY
fromjleftjoinspjon(j.jno=spj.jno)
⑤右连接:
求spj表和j表的右连接
selectj.jno,jname,city,spj.sno,pno,QTY
fromspjrightjoinjon(j.jno=spj.jno)
实验结果:
(一)
①查询所有“天津”的供应商明细;
②查询所有“红色”的14公斤以上的零件
③查询工程名称中含有“厂”字的工程明细
(二)
①等值连接:
求s表和j表的相同城市的等值连接
②自然连接:
查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
③笛卡尔积:
求s和p表的笛卡尔积
④左连接:
求j表和spj表的左连接
⑤右连接:
求spj表和j表的右连接
三、问题与解决
1、笛卡尔积不会求
上网查资料。
实验三分组查询和嵌套查询
实验学时:
4学时
一、实验目的
熟练掌握用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、求北京供应商和天津供应商的总个数。
selectcount(city)
froms
wherecity='北京'orcity='天津'
3、求各供应商供应的零件总数。
selectsno,SUM(qty)
fromspj
groupbysno
4、求各供应商供应给各工程的零件总数。
selectsno,jno,SUM(qty)
fromspj
groupbysno,jno
5、求使用了100个以上P1零件的工程名称(不用在pno=p1时,再对qty求和,系统会自动求和)。
selectjname
fromj
wherejnoin
(
selectjno
fromspj
wherepno='p1'and
qty>100
)
6、求各工程使用的各城市供应的零件总数。
selectjname,s.city,sum(qty)
froms,spj,j
wheres.sno=spj.snoand
j.jno=spj.jno
groupbys.city,j.jno,jname
(二)嵌套查询:
1、in连接谓词查询:
①查询没有使用天津供应商供应的红色零件的工程名称。
selectjname
fromj
wherejnonotin
(
selectjno
fromspj,s,p
where
s.sno=spj.snoand
p.pno=spj.pnoand
s.city='天津'and
p.color='红'
)
②查询供应了1000个以上零件的供应商名称。
(having)
selectsname
froms
wheresnoin
(
selectsno
fromspj
groupbysno
havingsum(qty)>1000
)
2、比较运算符:
求重量大于所有零件平均重量的零件名称。
selectpname
fromp
whereweight>(selectAVG(weight)
fromp
)
3、Exists连接谓词:
③查询供应J1的所有的零件都是红色的供应商名称。
selectsname
froms
whereexists(
select*
fromp,spj
wherep.pno=spj.pnoand
s.sno=spj.snoand
color='红'and
jno='j1'
)
④至少用了供应商S1所供应的全部零件的工程号JNO。
selectdistinctjno
fromspjspjx
wherenotexists
(
select*
fromspjspjy
wherespjy.sno='s1'and
notexists
(
select*
fromspjspjz
wherespjz.pno=spjy.pnoand
spjz.jno=spjx.jnoand
spjz.sno='s1'
)
)
实验结果:
(一)分组查询:
1、求各种颜色零件的平均重量。
2、求北京供应商和天津供应商的总个数。
3、求各供应商供应的零件总数。
4、求各供应商供应给各工程的零件总数。
5、求使用了100个以上P1零件的工程名称。
6、求各工程使用的各城市供应的零件总数。
(二)嵌套查询:
1.in连接谓词查询:
①查询没有使用天津供应商供应的红色零件的工程名称。
②查询供应了1000个以上零件的供应商名称。
(having)
2、比较运算符:
求重量大于所有零件平均重量的零件名称。
3、Exists连接谓词:
查询供应J1的所有的零件都是红色的供应商名称。
至少用了供应商S1所供应的全部零件的工程号JNO。
三、问题与解决
1、求使用了100个以上P1零件的工程名称。
不用在pno=p1时,再对qty求和,系统会自动求和。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子商务1201班 杨荣清 数据库实验报告 电子商务 1201 数据库 实验 报告