欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据库(SQL Server )经典例题(二):对S表、P表、J表、SPJ表的操作——单表查询

程序员文章站 2022-11-30 16:59:30
一、运行环境说明1、电脑环境:win102、数据库软件: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)、供应商状态...

一、运行环境说明
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。
数据库(SQL Server )经典例题(二):对S表、P表、J表、SPJ表的操作——单表查询

三、经典例题
(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