作业5 SQL查询(1)

1.设有四个关系(只示意性给出一条记录):

 

S(SNO,SNAME, ADDRESS,TEL)其中,SNO:供应商代码 SNAME:姓名 ADDRESS:地址 TEL:电话;

J(JNO,JNAME,LEADER,BG)其中,JNO:工程代码 JNAME:工程名 LEADER:负责人 BG:预算;

P(PNO,PNAME,SPEC,CITY,COLOR)其中,PNO:零件代码 PNAME:零件名 SPEC:规格 CITY:产地 COLOR:颜色;

SPJ(SNO,PNO,JNO,QTY)其中,SNO:供应商代码 JNO:工程代码 PNO:零件代码 QTY:数量;

(1)为每个关系建立相应的表结构,根据示例添加若干记录。

说明:建表时得注明属性列字段名、类型等,同时注明是否允许为空,设置好主键和外键

参考答案:

CREATE TABLE S(SNO VARCHAR(5) NOT NULL PRIMARY KEY,

                 SNAME VARCHAR(20) NOT NULL,

                 ADDRESS NVARCHAR(30),

                 TEL VARCHAR(20));

INSERT INTO S VALUES('S1', 'SN1', '上海南京路', '68564345');

……

CREATE TABLE P(PNO VARCHAR(5) NOT NULL PRIMARY KEY,

                 PNAME VARCHAR(20) NOT NULL,

                 SPEC VARCHAR(20),

                 CITY NVARCHAR(20),

                 COLOR NVARCHAR(2));

INSERT INTO P VALUES('P1', 'PN1', '8x8', '无锡', '红');

……

CREATE TABLE  J(JNO VARCHAR(5) NOT NULL PRIMARY KEY,

                 JNAME VARCHAR(20) NOT NULL,

                 LEADER NVARCHAR(10),

                 BG INT);

INSERT INTO J VALUES('J1', 'JN1', '王总',10);

……

CREATE TABLE  SPJ

 (SNO VARCHAR(5) NOT NULL CONSTRAINT S_F FOREIGN KEY REFERENCES S(SNO),

PNO VARCHAR(5) NOT NULL CONSTRAINT P_F FOREIGN KEY REFERENCES P(PNO),

JNO VARCHAR(5) NOT NULL CONSTRAINT J_F FOREIGN KEY REFERENCES J(JNO),

QTY INT,

CONSTRAINT PR_SPJ PRIMARY KEY(SNO,PNO,JNO));

INSERT INTO SPJ VALUES('S1', 'P1', 'J1', 200);

……

2.

设有学生-课程关系数据库,它由三个关系组成,它们的模式是:学生S(学号SNO,姓名SN,所在系DEPT,年龄AGE)、课程C(课程号CNO,课程名CN,先修课号CPNO)、SC(学号SNO,课程号CNO,成绩G)。

请用SQL语句写出下列查询:

 (1)检索学生的所有情况。

SELECT *
FROM S

 (2)检索学生年龄大于等于20岁的学生姓名。

SELECT SN
FROM S
WHERE AGE>=20

(3)检索先修课号为C2的课程号。

SELECT CNO
FROM C
WHERE CPNO='C2'

(4)检索不选修任何课程的学生的学号。

ELECT SNO
FROM S
except
SELECT DISTINCT SNO  
FROM SC
或者
SELECT SNO
FROM S

3.设有四个关系(只示意性给出一条记录):

S(SNO,SNAME, ADDRESS,TEL)其中,SNO:供应商代码 SNAME:姓名 ADDRESS:地址 TEL:电话;

J(JNO,JNAME,LEADER,BG)其中,JNO:工程代码 JNAME:工程名 LEADER:负责人 BG:预算;

P(PNO,PNAME,SPEC,CITY,COLOR)其中,PNO:零件代码 PNAME:零件名 SPEC:规格 CITY:产地 COLOR:颜色;

SPJ(SNO,PNO,JNO,QTY)其中,SNO:供应商代码 JNO:工程代码 PNO:零件代码 QTY:数量;

完成如下查询:

(1)找出所有供应商的姓名和地址、电话。

SELECT SNAME,ADDRESS,TEL 
FROM S

(2)找出所有零件的名称、规格、产地。

SELECT PNAME,SPEC,CITY 
FROM P

(3)找出使用供应商代码为S1供应零件的工程号。

SELECT DISTINCT JNO 
FROM SPJ 
WHERE SNO='S1'

(4)找出产地为上海的所有零件代码和规格.

SELECT PNO,SPEC 
FROM P 
WHERE CITY='上海'

(5)取出为工程J1和J2提供零件的供应商代号

SELECT distinct SNO
FROM SPJ 
WHERE JNO ='J1'
union
SELECT distinct SNO
FROM SPJ 
WHERE JNO ='J2'
--或  SELECT distinct SNO FROM SPJ WHERE JNO IN ('J1','J2');
--或  SELECT distinct SNO FROM SPJ WHERE JNO ='J1'  or JNO ='J2';

4.对于简易教学管理数据库有如下3个基本表:S(SNO,SN,AGE,SEX)、SC(SNO,CNO,SCORE)、C(CNO,CN,TH),其含义为SNO(学号),SN(姓名),AGE(年龄),SEX(性别),SCORE(成绩),CNO(课程号),CN(课程名),TH(教师名)。试用SQL语言表达如下查询及操作:

(1)检索年龄大于16岁的女学生的学号和姓名。

SELECT SNO,SN
FROM S
WHERE AGE>16 AND SEX='女'

--或 SELECT SNO,SN FROM S WHERE SEX='女' INTERSECT SELECT SNO,SN FROM S WHERE AGE>16

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值