Select SNAME from S Join SP on S.SNO=SP,SNO Where PNO=”P1” and S.SNO in(select SNO from SP where PNO=’P2’);
时间: 2024-03-24 17:37:47 浏览: 172
这是一个SQL查询语句,意思是查询出在SP表中存在PNO='P2'的SNO,且在SP表中存在PNO='P1'的SNO所对应的SNAME。具体的查询语句如下:
```
SELECT SNAME FROM S
JOIN SP ON S.SNO = SP.SNO
WHERE PNO = 'P1' AND S.SNO IN (SELECT SNO FROM SP WHERE PNO = 'P2');
```
相关问题
建立商品销售数据库SPXS,并SPXS数据库中用CREAT TABLE语句建立如下三个表: 商店S: sno sname city S1 百盛 北京 S2 沃尔玛 深圳 S3 华联 长春 S4 国商 长春 S5 百货大楼 北京商品P: Pno pname color price P1 电视 黑 5000 P2 冰箱 灰 3000 P3 洗衣机 白 3500 P4 电饭煲 白 1500 P5 电磁炉 黑 500销售SP: pno sno qty p1 S1 100 P3 S1 200 P1 S2 50 P2 S2 30 P2 S3 60 P1 S4 150 P2 S4 120 P4 S5 90 P5 S5 60
好的,以下是创建SPXS数据库和三个表的SQL代码:
```sql
-- 创建SPXS数据库
CREATE DATABASE SPXS;
-- 切换到SPXS数据库
USE SPXS;
-- 创建商店表
CREATE TABLE S(
sno CHAR(2) PRIMARY KEY,
sname VARCHAR(20) NOT NULL,
city VARCHAR(20) NOT NULL
);
-- 插入商店数据
INSERT INTO S VALUES
('S1', '百盛', '北京'),
('S2', '沃尔玛', '深圳'),
('S3', '华联', '长春'),
('S4', '国商', '长春'),
('S5', '百货大楼', '北京');
-- 创建商品表
CREATE TABLE P(
pno CHAR(2) PRIMARY KEY,
pname VARCHAR(20) NOT NULL,
color VARCHAR(10) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
-- 插入商品数据
INSERT INTO P VALUES
('P1', '电视', '黑', 5000),
('P2', '冰箱', '灰', 3000),
('P3', '洗衣机', '白', 3500),
('P4', '电饭煲', '白', 1500),
('P5', '电磁炉', '黑', 500);
-- 创建销售表
CREATE TABLE SP(
pno CHAR(2) NOT NULL,
sno CHAR(2) NOT NULL,
qty INT NOT NULL,
PRIMARY KEY (pno, sno),
FOREIGN KEY (pno) REFERENCES P (pno),
FOREIGN KEY (sno) REFERENCES S (sno)
);
-- 插入销售数据
INSERT INTO SP VALUES
('P1', 'S1', 100),
('P3', 'S1', 200),
('P1', 'S2', 50),
('P2', 'S2', 30),
('P2', 'S3', 60),
('P1', 'S4', 150),
('P2', 'S4', 120),
('P4', 'S5', 90),
('P5', 'S5', 60);
```
注意,以上代码仅为示例,具体的表结构和数据应根据实际情况进行设计。
SCG(Sno,Sname,Sage,Cno,Grade) SP(Sno,Sname,Scity,Pno,Pname,Qty) S:供应商 P:零件 Pty:数量 SL(Sno,Sname,Sdept,Sloc) Sloc:系办公室 SSC(Sno,Sid,Cno,score) Sid:身份证号 分别写出: (1)主码,主属性,非主属性 (2)函数依赖 (3)属于第几范式?为什么? (4)存在什么问题? (5)如何分解?分解后原问题是否解决?
(1)
- SCG表:主码为(Sno, Cno),主属性为Sno, Sname, Sage, Cno, Grade,非主属性为无。
- SP表:主码为(Sno, Pno),主属性为Sno, Sname, Scity, Pno, Pname, Qty,非主属性为无。
- SL表:主码为Sno,主属性为Sno, Sname, Sdept, Sloc,非主属性为无。
- SSC表:主码为(Sno, Sid, Cno),主属性为Sno, Sid, Cno, score,非主属性为无。
(2)
- SCG表:(Sno, Cno) -> Grade
- SP表:(Sno) -> Sname, Scity;(Pno) -> Pname
- SL表:(Sno) -> Sname, Sdept, Sloc
- SSC表:(Sno, Cno) -> Sid, score
(3)
- SP表不满足第一范式,因为存在重复的列。
- SSC表不满足第二范式,因为Sid不完全依赖于主键(Sno, Cno)。
- 其余表均满足第三范式。
(4)
- SP表存在部分函数依赖,可能导致数据冗余和更新异常。
- SSC表存在传递依赖,可能导致数据冗余和更新异常。
(5)
- 将SP表分解成SP1(Sno, Pno, Qty)和SP2(Pno, Pname),消除SP表中的部分函数依赖;
- 将SSC表分解成SSC1(Sno, Cno, Sid)和SSC2(Sno, Cno, score),消除SSC表中的传递依赖。
- 分解后原问题得到解决。
阅读全文