设有4个关系模式: 供应商关系:S(SNO,SNAME,CITY),属性依次是供应商号、供应商名称和所在城市; 零件关系:P(PNO,PNAME,COLOR,WEIGHT),属性依次是零件号、零件名和颜色; 工程关系:J(JNO,JNAME,CITY),属性依次是工程号、工程名和所在城市; 供应关系:SPJ(SNO,PNO,JNO,QTY),属性依次是供应商号、零件号、工程号和数量。 用SQL语句实现下列操作: (1)创建以上四个表。(8分) (2)求供应工程J1零件的供应商号码SNO。(6分) (3)求供应工程J1零件P1的供应商号码SNO。(6分) (4)求供应工程J1零件为红色的供应商号码SNO。(6分) (5)求没有使用天津供应商生产的红色零件的工程号。(6分) (6)求至少用了供应商S1所供应的全部零件的工程号 JNO ;(8分)
时间: 2023-12-31 11:05:50 浏览: 282
(1) 创建表语句如下:
```sql
CREATE TABLE S(
SNO VARCHAR(10),
SNAME VARCHAR(20),
CITY VARCHAR(20)
);
CREATE TABLE P(
PNO VARCHAR(10),
PNAME VARCHAR(20),
COLOR VARCHAR(20),
WEIGHT FLOAT
);
CREATE TABLE J(
JNO VARCHAR(10),
JNAME VARCHAR(20),
CITY VARCHAR(20)
);
CREATE TABLE SPJ(
SNO VARCHAR(10),
PNO VARCHAR(10),
JNO VARCHAR(10),
QTY INT
);
```
(2) 求供应工程J1零件的供应商号码SNO的SQL语句如下:
```sql
SELECT SNO
FROM SPJ
WHERE JNO = 'J1' AND PNO = 'P1';
```
(3) 求供应工程J1零件P1的供应商号码SNO的SQL语句如下:
```sql
SELECT SNO
FROM SPJ
WHERE JNO = 'J1' AND PNO = 'P1';
```
(4) 求供应工程J1零件为红色的供应商号码SNO的SQL语句如下:
```sql
SELECT DISTINCT SNO
FROM SPJ
INNER JOIN P ON SPJ.PNO = P.PNO
WHERE JNO = 'J1' AND COLOR = '红色';
```
(5) 求没有使用天津供应商生产的红色零件的工程号的SQL语句如下:
```sql
SELECT DISTINCT JNO
FROM SPJ
INNER JOIN S ON SPJ.SNO = S.SNO
INNER JOIN P ON SPJ.PNO = P.PNO
WHERE CITY <> '天津' AND COLOR = '红色'
AND JNO NOT IN (
SELECT JNO
FROM SPJ
INNER JOIN S ON SPJ.SNO = S.SNO
WHERE CITY = '天津'
);
```
(6) 求至少用了供应商S1所供应的全部零件的工程号JNO的SQL语句如下:
```sql
SELECT JNO
FROM SPJ
WHERE SNO = 'S1'
GROUP BY JNO
HAVING COUNT(DISTINCT PNO) = (
SELECT COUNT(DISTINCT PNO)
FROM SPJ
WHERE SNO = 'S1'
);
```
阅读全文