数据库(SQL Server )经典例题(二):对S表、P表、J表、SPJ表的操作——单表查询
一、运行环境说明
1、电脑环境:win10
2、数据库软件:SQL Server 2008 R2
二、经典例题原型
题目:设有一个 SPJ 数据库,包括 S、P、J 及 SPJ 4 个关系模式:
S (SNO,SNAME,STATUS,CITY) ;
P (PNO,PNAME,COLOR,WEIGHT) ;
J (JNO,JNAME,CITY) ;
SPJ (SNO,PNO,JINO,QTY) ;
应商表 S 由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。
供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
三、经典例题
(1)查询以“螺”开头,名称为3个汉字的零件信息。
命令:
SELECT *
FROM P
WHERE PNAME LIKE'螺__';
(2)在S表中插入(S6,微软_北京%,20,北京)
命令:
INSERT INTO S
VALUES('S6','微软_北京%','20','北京');
(3)查询名称为“微软_北京%”的供应商信息。(提示3种情况都要试验)
命令:
SELECT *
FROM S
WHERE SNAME LIKE'微软\_北京\%' ESCAPE '\'; --ESCAPE '\'为换码字符,表示后面的通义符转化为普通的字符。
(4)查询给工程J1供应了零件P3的供应商的供应商号及供应量,查询结果按供应量升序排列。
命令:
SELECT SNO,QTY
FROM SPJ
WHERE JNO='J1'AND PNO='P3'
ORDER BY QTY;--ORDER BY加列名加ASC|DESC表示对某属性列升降序排列,没有指明默认为升序
(5)查询供应商S5总共供应了多少种零件;
命令:
SELECT COUNT(SNO) 所用零件总数--聚集函数COUNT可用于统计某个元组的个数
FROM SPJ
WHERE SNO='S5';
(6)查询工程J4使用零件P6的总数量。
命令:
SELECT COUNT(QTY) 所用零件总数
FROM SPJ
WHERE JNO='J4'AND PNO='P6';
(7)查询零件的最大重量;
命令:
SELECT MAX(WEIGHT) 零件最大重量
FROM P
(8)查询S表中各城市的供应商个数;
命令:
SELECT COUNT(ONE.CITY),COUNT(TWO.CITY),COUNT(THREE.CITY)
FROM S ONE,S TWO,S THREE
WHERE ONE.CITY='北京'AND TWO.CITY='天津'AND THREE.CITY='上海'
GROUP BY ONE.CITY,TWO.CITY,THREE.CITY;
(9)查询供应商S5供应的各种零件及数量,查询结果按零件数量的降序排列;
命令:
SELECT PNO,QTY
FROM SPJ
WHERE SNO='S5'
GROUP BY PNO,QTY
ORDER BY QTY DESC;
(10)查询使用供应商S1所供应零件的工程号;
命令:
SELECT JNO
FROM SPJ
WHERE SNO='S1';
(11)查询北京和天津的工程项目的名称;
命令:
SELECT DISTINCT JNAME--DISTINCT可取消重复列
FROM J
WHERE CITY='北京'OR CITY='天津';
(12)查询使用零件总数量超过1000的工程号;
命令:
SELECT JNO
FROM SPJ
GROUP BY JNO
HAVING SUM(QTY)>1000;
(13)查询给工程J1供应红色零件的供应商号;
命令:
SELECT SPJ.SNO
FROM P,SPJ
WHERE P.PNO=SPJ.PNO AND JN0='J1'AND COLOR='红';
(14)查询没有使用天津供应商供应的红色零件的工程号;
命令:
SELECT SPJ.SNO
FROM S,P,SPJ
WHERE S.SNO=SPJ.SNO AND SPJ.PNO=P.PNO AND S.CITY NO LIKE '天津'AND P.COLOR NOT LIKE '红';
(15)查询工程项目J1使用的各种零件的名称及其数量;
命令:
SELECT DISTINCT PNAME,QTY
FROM P,SPJ
WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J1';
(16)查询上海的供应商供应的所有零件号;
命令:
SELECT PNO
FROM S,SPJ
WHERE S.SNO=SPJ.SNO AND CITY LIKE '上海';
(17)查询使用上海的供应商供应的零件的工程名;
命令:
SELECT JNAME
FROM S,J,SPJ
WHERE S.SNO=SPJ.SNO AND SPJ.JNO=J.JNO AND S.CITY LIKE'上海';
(18)查询每个供应商及其供应零件的情况;
命令:
SELECT S.SNO,SNAME,PNO,JNO,QTY
FROM S,SPJ
WHERE S.SNO=SPJ.SNO
(19)查询每个工程及其零件供应情况,包括没有开工的工程。
命令:
SELECT J.JNO,JNAME,SNO,PNO,QTY
FROM J,SPJ
WHERE J.JNO=SPJ.JNO
(20)找出重量最大的零件的名称。
命令:
SELECT PNAME
FROM P
GROUP BY PNAME
HAVING MAX(WEIGHT)>30 ;
(21)找出“三建”工程项目使用的各种零件的零件号及其数量;
命令:
SELECT DISTINCT PNO,QTY
FROM J,SPJ
WHERE J.JNO=SPJ.JNO AND JNAME LIKE '三建';
未完,待续。不足之处请大家多多批评指正!!!如有借鉴请评论和点赞!!!
本文地址:https://blog.csdn.net/hry1999/article/details/107323815
上一篇: MySQL数据库查询+事务+视图+索引
下一篇: 用记登陆判断账号密码是否正确