数据库作业9:第三章作业

数据库作业9:第三章作业

本文可分为以下几个部分

第3题

3.有两个关系S(A,B,C,D)和T(C,D,E,F),写出与下列查询等价的SQL表达式

(1)δA=10(S);

SELECT *
FROM S
WHERE A=10;

(2)∏A,B(S);

SELECT A,B
FROM S;

(3)S连接T;

SELECT A,B,C,D,E,F
FROM S,T
WHERE S.C=T.C AND S.D=T.D;

(4)S连接T当S.C=T.C时;

SELECT A,B,C,D,E,F
FROM S,T
WHERE S.C=T.C;

(5)S连接T当A<E时;

SELECT A,B,C,D,E,F
FROM S,T
WHERE S.A<T.E;

(6)∏C,D(S)xT

SELECT S.C,S.D
FROM S,T
WHERE S.C=T.C AND S.D=T.D

第4题

4.用SQL语句建立第二章习题6中的4个表;针对建立的四个表用SQL完成第2章习题6中的查询;

表的建立:

--P71
DROP TABLE IF EXISTS S;
DROP TABLE IF EXISTS P;
DROP TABLE IF EXISTS J;
DROP TABLE IF EXISTS SPJ;


CREATE TABLE S(--创建S表
	SNO CHAR(9),--供应商代码
	SNAME CHAR(20),--姓名
	STATUS1 CHAR(9),--状态
	CITY CHAR(20)--城市
);

CREATE TABLE P(--创建P表
	PNO CHAR(9),--零件代码
	PNAME CHAR(20),--零件名
	COLOR CHAR(9),--颜色
	WEIGHT1 SMALLINT--重量
);

CREATE TABLE J(--创建J表
	JNO CHAR(9),--工程项目代码
	JNAME CHAR(20),--工程项目名
	CITY CHAR(20)--工程所在城市
);

CREATE TABLE SPJ(--创建SPJ
	SNO CHAR(9),
	PNO CHAR(9),
	JNO CHAR(9),
	QTY SMALLINT--供应数量
)

--表格详情参照《数据库系统概论(第5版)》P71(S)
INSERT INTO S(SNO,SNAME,STATUS1,CITY) VALUES('S1','精益','20','天津');
INSERT INTO S(SNO,SNAME,STATUS1,CITY) VALUES('S2','盛锡','10','北京');
INSERT INTO S(SNO,SNAME,STATUS1,CITY) VALUES('S3','东方红','30','北京');
INSERT INTO S(SNO,SNAME,STATUS1,CITY) VALUES('S4','丰泰盛','20','天津');
INSERT INTO S(SNO,SNAME,STATUS1,CITY) VALUES('S5','为民','30','上海');

SELECT * FROM S;--查询学生表

--表格详情参照《数据库系统概论(第5版)》P71(P)
INSERT INTO P(PNO,PNAME,COLOR,WEIGHT1) VALUES('P1','螺母','红',12);
INSERT INTO P(PNO,PNAME,COLOR,WEIGHT1) VALUES('P2','螺栓','绿',17);
INSERT INTO P(PNO,PNAME,COLOR,WEIGHT1) VALUES('P3','螺母','蓝',14);
INSERT INTO P(PNO,PNAME,COLOR,WEIGHT1) VALUES('P4','螺母','红',14);
INSERT INTO P(PNO,PNAME,COLOR,WEIGHT1) VALUES('P5','螺母','蓝',40);
INSERT INTO P(PNO,PNAME,COLOR,WEIGHT1) VALUES('P6','螺母','红',30);

SELECT *FROM P;

--表格详情参照《数据库系统概论(第5版)》P71(J)
INSERT INTO J(JNO,JNAME,CITY) VALUES('J1','三建','北京');
INSERT INTO J(JNO,JNAME,CITY) VALUES('J2','一汽','长春');
INSERT INTO J(JNO,JNAME,CITY) VALUES('J3','弹簧厂','天津');
INSERT INTO J(JNO,JNAME,CITY) VALUES('J4','造船厂','天津');
INSERT INTO J(JNO,JNAME,CITY) VALUES('J5','机车厂','唐山');
INSERT INTO J(JNO,JNAME,CITY) VALUES('J6','无线电厂','常州');
INSERT INTO J(JNO,JNAME,CITY) VALUES('J7','半导体厂','南京');

SELECT *FROM J;

--表格详情参照《数据库系统概论(第5版)》P71(SPJ)
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P1','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P1','J3',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P1','J4',700);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S1','P2','J2',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J1',400);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J2',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J4',500);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P3','J5',400);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P5','J1',400);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S2','P5','J2',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S3','P1','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S3','P3','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S4','P5','J1',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S4','P6','J3',300);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S4','P6','J4',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S5','P2','J4',100);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S5','P3','J1',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S5','P6','J2',200);
INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES('S5','P6','J4',500);

SELECT *FROM SPJ;

在这里插入图片描述

在这里插入图片描述
填入成功;

(1)求供应工程J1零件的供应商号码SNO;

SELECT DISTINCT SNO
FROM SPJ
WHERE JNO='J1';

在这里插入图片描述

(2)求供应工程J1零件P1的供应商号码SNO;

SELECT SNO
FROM SPJ
WHERE SPJ.JNO='J1' AND SPJ.PNO='P1';

在这里插入图片描述

(3)求供应工程J1零件为红色的供应商号码SNO;

SELECT DISTINCT SNO
FROM SPJ,P
WHERE SPJ.JNO='J1' AND
	P.PNO=SPJ.PNO AND
	P.COLOR='红'

在这里插入图片描述

(4)求没有使用天津供应商生产的红色零件的工程号JNO;

SELECT DISTINCT JNO
FROM S,P,SPJ
WHERE JNO NOT IN
	(SELECT JNO 
	FROM S,P,SPJ 
	WHERE SPJ.SNO=S.SNO AND
		SPJ.PNO=P.PNO AND
		COLOR IN ('红') AND
		CITY IN('天津'));

在这里插入图片描述
(5)求至少用了供应商S1所供应的全部零件的工程号JNO

SELECT JNO
FROM SPJ
WHERE SPJ.SNO='S1'

在这里插入图片描述

第5题

(1)找出所有供应商的姓名和所在城市;

SELECT SNAME,CITY
FROM S;

在这里插入图片描述
(2)找出所有零件的名称、颜色、重量。

SELECT PNAME,COLOR,WEIGHT1
FROM P;

在这里插入图片描述
(3)找出使用供应商S1所供应零件的工程号码;

SELECT DISTINCT JNO
FROM SPJ
WHERE SNO='S1';

在这里插入图片描述
(4)找出工程项目J2使用的各种零件的名称及其数量;

SELECT DISTINCT P.PNAME,SPJ.QTY
FROM P,SPJ
WHERE SPJ.JNO='J2'

在这里插入图片描述

(5)找出上海厂商供应的所有零件号码;

SELECT DISTINCT PNO
FROM S,SPJ
WHERE S.CITY='上海' AND
	S.SNO=SPJ.SNO;

在这里插入图片描述
(6)找出使用上海产的零件的工程号码;

SELECT DISTINCT JNO
FROM S,SPJ
WHERE S.CITY='上海' AND
	SPJ.SNO=S.SNO;

--嵌套查询如下
SELECT DISTINCT JNO
FROM SPJ
WHERE SNO IN
	(SELECT SNO
	FROM S
	WHERE CITY='上海')

在这里插入图片描述
(7)找出没有使用天津产的零件的工程号码;

SELECT DISTINCT JNO
FROM SPJ
WHERE SNO NOT IN
	(SELECT SNO
	FROM S
	WHERE S.CITY='天津');

在这里插入图片描述
(8)把全部红色零件的颜色改为蓝色;

UPDATE P
SET COLOR='蓝'
WHERE COLOR='红';

SELECT *FROM P;

在这里插入图片描述
(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改;

UPDATE SPJ
SET SNO='S3'
WHERE PNO='P6' AND
	JNO='J4' AND
	SNO='S5';

SELECT *FROM SPJ;

在这里插入图片描述
(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录;

DELETE
FROM S
WHERE SNO='S2';

SELECT *FROM S;--查询S表检查

DELETE
FROM SPJ
WHERE SNO='S2';

SELECT *FROM SPJ;--查询SPJ表检查

在这里插入图片描述
(11)请将(S2,J6,P4,200)插入供应情况关系。

INSERT
INTO SPJ
VALUES ('S2','J6','P4',200);

SELECT *FROM SPJ;

在这里插入图片描述

第9题

9.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。针对该视图完成下列查询:

CREATE VIEW IS_SPJ
AS
SELECT SNO,PNO,QTY
FROM SPJ
WHERE JNO IN
	(SELECT JNO
	FROM J
	WHERE JNAME='三建');

在这里插入图片描述
查询检查:

SELECT *FROM IS_SPJ;

在这里插入图片描述
(1)找出三建工程项目使用的各种零件代码及其数量;

SELECT PNO,SUM(QTY) QTY
FROM IS_SPJ
GROUP BY PNO;

在这里插入图片描述
(2)找出供应商S1的供应情况;

SELECT *
FROM IS_SPJ
WHERE SNO='S1';

在这里插入图片描述

至此,第三章作业已完成,在第二题和第五题中发现自己对于嵌套查询的使用不够熟练,更喜欢用“AND”连接,在平时应该多加练习。在第四题创建四个表的时候需要有耐心,仔细慢慢输入!在第九题中,视图的建立并不是十分熟悉~

在课下仍应该反复复习,练习,牢记常用SQL语句~

感谢阅读~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值