用SQL语言完成如下要求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用SQL语言完成如下要求相关的知识,希望对你有一定的参考价值。

一、有如下的四个关系:
S(供应商):
SNO
(供应商号) SNAME
(供应商姓名) CITY
(供应商所在城市)
S1 精益 天津
S2 万胜 北京
S3 NewEast 北京
S4 Co_Band 上海
S5 Coway 南京
P(零件):
PNO
(零件号) PNAME
(零件名称) COLOR
(零件颜色) WEIGHT
(零件重量)
P1 螺母 红 12
P2 螺栓 绿 17
P3 螺丝刀 蓝 14
P4 螺丝刀 红 14
P5 凸轮 蓝 40
P6 钳子 蓝 28
J(项目):
JNO
(项目号) JNAME
(项目名称) CITY
(项目所在城市)
J1 三建 北京
J2 一汽 长春
J3 弹簧厂 天津
J4 造船厂 天津
J5 机车厂 唐山
J6 无线电厂 常州
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
S5 P6 J2 200
S5 P6 J4 500
用SQL语言完成如下要求:
1、 按照上面的关系建立数据库(注意主键和外键)(60分)
2、 把上面的信息插入到对应的表中(10分)
3、 求所有零件的名称、颜色、重量(10分)
2、求所有零件的最大重量,最小重量,平均重量(10分)
3、求供应情况中出现的零件编号,要求相同编号的只出现一次(10分)
本人急用答案
麻烦点请务必都写出

-------------------------napolun------------------------

mysql数据库:

1。 S(供应商)表:

create table S(
SNO char(2),
Sname char(10),
CITY char(4),
PRIMARY KEY(SNO));

2。P(零件):

create table P(
PNO char(2),
PNAME char(6),
color char(2),
weight int,
PRIMARY KEY(PNO));

3. J(项目):

create table J(
JNO char(2),
JNAME char(8),
CITY char(6),
PRIMARY KEY(JNO));

4.SPJ(供应情况):
SNO
(供应商号) PNO
(零件号) JNO
(项目号) QTY
(供应数量)
create table SPJ(
SNO char(2),
PNO char(2),
JNO char(2),
QTY int,
foreign key(SNO) references S(SNO),
foreign key(PNO) references P(PNO),
foreign key(JNO) references J(JNO));

----------------------未完待续----------------------------

问题二:

也就用insert into 表 values

剩下的发消息给你了收到回我!!!
-------------------有问题伐消息我--------------------------

这是总结果
+---------+------+--------+-------+--------+--------+-------+
| sname | city | pname | color | weight | jname | jcity |
+---------+------+--------+-------+--------+--------+-------+
| 精益 | 天津 | 螺母 | 红 | 12 | 弹簧厂 | 天津 |
| 精益 | 天津 | 螺母 | 红 | 12 | 造船厂 | 天津 |
| 精益 | 天津 | 螺母 | 红 | 12 | 三建 | 北京 |
| 精益 | 天津 | 螺栓 | 绿 | 17 | 一汽 | 长春 |
| 万胜 | 北京 | 螺丝刀 | 蓝 | 14 | 三建 | 北京 |
| 万胜 | 北京 | 螺丝刀 | 蓝 | 14 | 一汽 | 长春 |
| 万胜 | 北京 | 凸轮 | 蓝 | 40 | 三建 | 北京 |
| 万胜 | 北京 | 凸轮 | 蓝 | 40 | 一汽 | 长春 |
| 万胜 | 北京 | 螺丝刀 | 蓝 | 14 | 机车厂 | 唐山 |
| 万胜 | 北京 | 螺丝刀 | 蓝 | 14 | 造船厂 | 天津 |
| NewEast | 北京 | 螺母 | 红 | 12 | 三建 | 北京 |
| NewEast | 北京 | 螺丝刀 | 蓝 | 14 | 三建 | 北京 |
| Co_Band | 上海 | 凸轮 | 蓝 | 40 | 三建 | 北京 |
| Coway | 南京 | 钳子 | 蓝 | 28 | 造船厂 | 天津 |
| Coway | 南京 | 钳子 | 蓝 | 28 | 一汽 | 长春 |
+---------+------+--------+-------+--------+--------+-------+
s in set (0.01 sec)
参考技术A SQL~~~简单就太麻烦了!自己弄吧!闪了 参考技术B Power-Design X.X
用这个工具,10分钟就能完成。

用SQL语句写出完成如下查询

1.查询同时只选修了1号和2号课程的学生的学号
2.查询至少选修了1号和2号课程的学生的学号,按学号降序排列
3.查询被3门以上(包含3门)课程作为直接先行课的课程号
5.查询平均分在80分以下的学生的学号和选修的课程名

表student

学号 姓名 性别 年龄 所在系
Sno Sname Ssex Sage Sdept
200215121 李勇 男 20 CS
200215122 刘晨 女 19 IS
200215123 王敏 女 18 MA
200215125 张立 男 19 IS

表course
课程号 课程名 先行课 学分
Cno Cname Cpno Ccredit
1 数据库 5 4
2 数学 2
3 信息系统 1 4
4 操作系统 6 3
5 数据结构 7 4
6 数据处理 2
7 PASCAL语言 6 4

表sc
学号 课程号 成绩
Sno Cno Grade
200215121 1 92
200215121 2 85
200215121 3 88
200215122 2 90
200215122 3 80

参考技术A 近来在巩固SQL中,以下语句经过运行,完全正确,有问题请加MSN:guoyunsky@hotmail.com
--1.查询同时只选修了1号和2号课程的学生的学号
SELECT DISTINCT SNO FROM SC WHERE SNO IN (SELECT DISTINCT S1.SNO FROM SC AS S1,SC AS S2 WHERE S1.SNO=S2.SNO AND ((S1.CNO=1 AND S2.CNO=2) OR (S1.SNO=2 AND S2.SNO=1))) GROUP BY SNO HAVING COUNT(*)=2
或者:
SELECT SNO FROM SC GROUP BY SNO HAVING (COUNT(*)=2 AND MIN(CNO)=1 AND MAX(CNO)=2)

--2.查询至少选修了1号和2号课程的学生的学号,按学号降序排列
SELECT DISTINCT S1.SNO FROM SC AS S1,SC AS S2 WHERE S1.SNO=S2.SNO AND ((S1.CNO=1 AND S2.CNO=2) OR (S1.CNO=2 AND S2.CNO=1) ) ORDER BY S1.SNO DESC

--3.查询被3门以上(包含3门)课程作为直接先行课的课程号
SELECT CPNO FROM C GROUP BY CPNO HAVING COUNT(*)>=3

--4.查询平均分在80分以下的学生的学号和选修的课程名
SELECT DISTINCT SNO,(SELECT CNAME FROM C WHERE CNO=SC.CNO) FROM SC GROUP BY SNO,CNO HAVING AVG(GRADE)<80
参考技术B 1.select sno from sc where exists (select SNO FROM SC WHERE CNO=1) and exists (select SNO FROM SC WHERE CNO=2) ;

2.SELECT SNO FROM SC WHERE CNO IN (1,2) order by sno desc;

3. select distinct c.cno from ( select sno from (select sno,count(cno) n from sc group by sno) where n>=3)a,sc c where a.sno=c.sno

第四个题目有点不理解!!!!
不知道是学生平均分还是课程平均分本回答被提问者采纳
参考技术C 1.查询同时只选修了1号和2号课程的学生的学号
SELECT DISTINCT Sno FROM (SELECT Sno FROM sc WHERE Cno=1) AS A INNER JOIN (SELECT Sno FROM sc WHERE Cno=2) B ON A.Sno=B.Sno

2.查询至少选修了1号和2号课程的学生的学号,按学号降序排列
SELECT DISTINCT Sno FROM sc WHERE Cno=1 OR Cno=2 ORDER BY Sno DESC

3.查询被3门以上(包含3门)课程作为直接先行课的课程号
不知道什么是直接先行课.

5.查询平均分在80分以下的学生的学号和选修的课程名
平均分是指什么?如果按课程平均,则不会有课程名,如果按照每种课程不同次考试的成绩:
SELECT A.Sno,B.CName FROM (SELECT Sno,Cno,AVG(Grade) FROM sc GROUP BY Sno,Cno HAVING AVG(Grade)<80) AS A INNER JOIN Course B ON A.Cno=B.Cno
参考技术D 出题目要给高分 第5个回答  2008-11-04 你自己参考相关书籍,自己写吧

以上是关于用SQL语言完成如下要求的主要内容,如果未能解决你的问题,请参考以下文章

用SQL语言完成下面四个问题,谢谢大家了!

用sql语句实现'查询各部门名称和该部门员工数'

SQL语言必须大写吗?

用SQL语句编写:定义两个变量并赋值,要求输出较小的那个值。

数据库:实验三 数据库查询语言

数据库实验:SQL语言实践-创建并维护关系模式,完成元组的增删改查