数据库实验:使用sql语句
来源:互联网 发布:平价蓝光机 知乎 编辑:程序博客网 时间:2024/06/11 18:55
实验数据
关系数据库SPJ,包含以下四个关系
关系S
SNO
SNAME
STATUS
CITY
S1
精 益
20
天津
S2
盛 锡
10
北京
S3
东方红
30
北京
S4
丰泰盛
20
天津
S5
为 民
30
上海
关系P
PNO
PNAME
COLOR
WEIGHT
P1
螺 母
红
12
P2
螺 栓
绿
17
P3
螺丝刀
蓝
14
P4
螺丝刀
红
14
P5
凸 轮
蓝
40
P6
齿 轮
红
30
关系J
JNO
JNAME
CITY
J1
三 建
北京
J2
一 汽
长春
J3
弹 簧 厂
天津
J4
造 船 厂
天津
J5
机 车 厂
唐山
J6
无线电厂
常州
J7
半导体厂
南京
关系SPJ
SNO
PNO
JNO
QTY
S1
P1
J1
200
S1
P1
J3
100
S1
P1
J4
700
S1
P2
J2
100
S2
P3
J1
400
S2
P3
J2
200
S2
P3
J4
500
S2
P3
J5
400
S2
P5
J1
400
S2
P5
J2
100
S3
P1
J1
200
S3
P3
J1
200
S4
P5
J1
100
S4
P6
J3
300
S4
P6
J4
200
S5
P2
J4
100
S5
P3
J1
200
S5
P6
J2
200
S5
P6
J4
500
对应的各个关系模式如下
S(SNO,SNAME,STATUS,SCITY)
P(PNO,PNAME,COLOR,WEIGHT)
J(JNO,JNAME,JCITY)
SPJ(SNO,PNO,JNO,QTY)
其中:S代表供应商,它的各属性依次表示:供应商号、供应商名、供应商状态、供应商所在城市。
P代表零件,其属性依次表示:零件号、零件名、零件颜色、零件重量。
J代表工程,其属性依次表示:工程号、工程名、工程所在城市。
SPJ代表供货关系,其属性依次表示:供应商号、零件号、工程号、供应数量。
实验平台
MSSQL Server 2008
实验目标
能够熟练使用MS SQL Server的Query Analyzer工具,联机运行SQL并观察分析SQL的执行结果。掌握SQL的数据定义、数据查询和数据修改功能,能独立用SQL表述问题,解决较复杂的应用需求。
实验要求
上机完成实验内容,主要是编写、运行和分析SQL,请预先自行判断SQL的运行结果(例如:查询结果包含哪些数据;更新后关系数据如何变化),然后与实际的运行结果比较,以此发现和修正SQL编写中的错误。
实验内容
一、数据定义
① 用SQL创建SPJ数据库
create database spj
② 用SQL创建SPJ数据库中的各个关系,要求为属性选择合适的数据类型
③ 根据各个关系的意义和彼此间的联系,自行设计并用SQL定义合适的完整性约束,覆盖以下类型:主码约束、外部码约束、非空约束。
create table s ( sno char(8) notnull unique, sname char(16)not null, status int, city char(16), primary key(sno)) create table p ( pno char(8) notnull unique, pname char(16)not null, color char(8)not null, weight int, primary key(pno)) create table j ( jno char(8) notnull unique, jname char(16)not null, city char(16), primary key(jno)) create table spj ( sno char(8) notnull unique, pno char(8) notnull unique, jno char(8) notnull unique, qty int, primary key(sno, pno, jno), foreign key(sno)references s(sno) on delete cascade, foreign key(pno)references p(pno) on delete cascade, foreign key(jno)references j(jno) on delete cascade)
④ 用SQL定义一个视图,反映:“三建”工程的供应商号,供应商名,零件号,零件重量,供应数量。(注:②、③的SQL允许合并,即在同一个SQL语句中完成关系的定义和相关完整性的定义)
create view sanjian(sno, sname, pno, weight, qty) as select s.sno,s.sname, p.pno, weight, qty from s, p,j, spj wherejname = '三建' ands.sno = spj.sno andp.pno = spj.pno andj.jno = spj.jnowith check option
二、数据操纵
① 用SQL完成:插入各个关系的第一个元组
insert into svalues('s1', '精益' , '20' , '天津')insert into pvalues('p1', '螺母' , '红', '12')insert into jvalues('j1', '三建', '北京')insert into spjvalues('s1', 'p1', 'j1', '200')
② 自行选择方法输入各个关系的剩余元组 (不要求编写SQL)
我们用Excel表格导入数据,操作过程如下:
剩下的就是下一步,完成之类的了。
③ 用SQL完成:把S5供应的所有P6零件更改为P4零件
updatespjsetpno = 'p4'wherepno = 'p6' and sno = 's5'
④ 用SQL完成:对供应数量总和超过1500的供应商,供应商状态更改为0。
update sset status = 0where sno in ( select sno from spj group by sno having SUM(qty) > 1500)
⑤ 用SQL完成:删除供应商S2,并且删除S2的供货信息。
delete from s where sno = 's2'delete from spj where sno = 's2'
⑥ 用SQL完成:删除绿色零件的供货信息。
delete from spjwhere pno in ( select pno from p where color = '绿' )
三、数据查询
用SQL完成以下查询
① 至少向北京或天津的工程提供了零件的供应商名,供应的零件名、工程名和供应数量。
selectsname, pname, jname, qty from s, p, j, spjwherespj.sno = s.sno and spj.pno = p.pno and spj.jno = j.jno and (j.city = '北京' or j.city = '天津')
② 供应红色零件给工程J1的供应商名
selectsname from s, p, spjwherespj.sno = s.sno and spj.pno = p.pno and spj.jno = 'J1' and color = '红'
③ 没有使用天津产的零件的工程号
selectjno from jwherejno not in ( select jno from spj, s where spj.sno = s.sno and s.city = '天津')
④ 没有向位于相同城市的工程供应零件的供应商名
selectsname from swheresno not in ( select s.sno from s, j, spj where s.sno = spj.sno and j.jno = spj.jno and s.city = j.city)
⑤ 每种颜色零件的总重量
selectcolor, SUM(weight) from pgroupby color
⑥ 红色零件的平均重量
selectcolor, AVG(weight) from pwherecolor = '红'groupby color
⑦ 供应商最集中的城市(意即,哪个城市的供应商最多?)
select city, COUNT(city) from sgroup by cityhaving COUNT(city) >= all (select COUNT(city) froms group by city)
⑧ 对上海和天津,统计该城市的供应商一共供应了多少数量的零件。结果保存到一个新关系Temp(City, QTYSum)中 (至多使用一个SQL语句用于定义,和一个SQL语句用于查询)
createtable temp ( city char(16) not null, qtysum float) insertinto temp(city, qtysum)selects.city, SUM(qty) from s, spjwheres.sno = spj.sno and (s.city = '上海' or s.city = '天津')groupby s.city
- 数据库实验:使用sql语句
- 数据库SQL语句使用
- 数据库SQL语句使用
- 使用SQL语句创建数据库
- 使用SQL语句创建数据库
- 使用SQL语句操作数据库
- 实验1 SQL*Plus使用及简单Select语句
- 数据库,包括sql语句的使用总结
- 通用SQL数据库查询语句使用简介
- SQL数据库表维护语句使用简要
- 使用SQL语句备份与恢复数据库
- 数据库SQL语句使用(一)
- 运行数据库正在使用的sql语句
- ACESS 数据库如何使用SQL语句
- 使用动态SQL语句 创建数据库
- 使用SQL语句操作SQLite数据库
- 数据库中查询语句的使用(sql)
- 使用SQL语句创建基本数据库
- 菜鸟Android学习之路29——AlertDialog
- 配置 CKEditor
- ORACLE临时表总结[好处,何时用]
- ArcGisService-GIS服务器安装后配置教程
- Android中shape的使用
- 数据库实验:使用sql语句
- 解决ora-00257 archive error -- 空间不够引起
- hibernateTemplate常用方法总结
- update语法汇总
- Java内嵌入Excel
- 初创IT公司里开发者最容易犯的九种错误@http://www.csdn.net/article/2013-12-25/2817919-9-common-mistakes-developers-make
- 为webview添加复制文本的功能
- 在Android 中使用KSOAP2调用WebService
- Pomelo 新手入门(四)