返回顶部
首页 > 资讯 > 数据库 >数据库系统头歌实验二 SQL的多表查询
  • 752
分享到

数据库系统头歌实验二 SQL的多表查询

数据库sqlmysql 2023-10-27 05:10:53 752人浏览 泡泡鱼
摘要

第一关:等值连接:求S表和J表城市相同的等值连接(列顺序还是按照S、J表) 工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供

第一关:等值连接:求S表和J表城市相同的等值连接(列顺序还是按照S、J表)

工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成. S表如下图:

USE mydata;#请在此处添加实现代码########## Begin ##########SELECT S.*,J.*FROM S,JWHERE S.city=J.city;########## End ##########

 

第2关:查询供应情况,并显示供应商、零件和工程三者的名称

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成. S表如下图:

零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成; P表如下图:

工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。 J表如下图:

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QtY)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY。 SPJ表如下图:

 

USE mydata;#请在此处添加实现代码########## Begin ##########SELECT SNAME,PNAME,JNAME,QTYFROM S,P,J,SPJWHERE SPJ.sno=S.sno AND SPJ.pno=P.pno AND SPJ.jno=J.jno;########## End ##########

 

第3关:找出上海厂商供应的所有零件号码(注意去重)

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成. S表如下图:

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY。 SPJ表如下图:

USE mydata;#请在此处添加实现代码########## Begin ##########SELECT DISTINCT PNO FROM S,SPJWHERE SPJ.sno=S.sno AND city='上海';########## End ##########

第4关:找出使用上海产的零件的工程名称,结果按工程名称降序排序

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成. S表如下图:

工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。 J表如下图:

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY。 SPJ表如下图:

USE mydata;#请在此处添加实现代码########## Begin ##########SELECT DISTINCT JNAMEFROM S,SPJ,JWHERE SPJ.sno=S.sno AND J.jno=SPJ.jno AND S.city='上海';########## End ##########

第5关:找出没有使用天津产的零件的工程号码

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成. S表如下图:

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY。 SPJ表如下图:

USE mydata;#请在此处添加实现代码########## Begin ##########SELECT JNOFROM SPJWHERE JNO NOT IN(    SELECT JNO    FROM SPJ    WHERE SNO IN(        SELECT SNO        FROM S        WHERE CITY='天津'    ));########## End ##########

第6关:求供应工程J1零件为红色的供应商号码SNO

零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成; P表如下图:

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY。 SPJ表如下图:

USE mydata;#请在此处添加实现代码########## Begin ##########SELECT SNOFROM SPJWHERE JNO='J1' AND PNO IN(    SELECT PNO    FROM P    WHERE COLOR='红');########## End ##########

第7关:求没有使用天津供应商生产的红色零件的工程号 JNO

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成. S表如下图:

零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成; P表如下图:

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,标识某供应商 供应某种零件 给某工程项目的数量为QTY。 SPJ表如下图:

USE mydata;#请在此处添加实现代码########## Begin ##########SELECT DISTINCT JNOFROM SPJWHERE JNO NOT IN(    SELECT JNO    FROM SPJ    WHERE PNO IN(        SELECT PNO        FROM P        WHERE COLOR='红') AND SNO IN(            SELECT SNO            FROM S            WHERE CITY='天津'        ));########## End ##########

第8关:查询每个选手的信息及其提交的解答信息,没做题的选手不显示 (查询结果仅显示前50条,即在查询语句末尾加LIMIT 50)

users为选手信息表;

solution为选手提交的题目解答

USE `sqlexp-sztuoj`;#请在此处添加实现代码,在语句末尾加LIMIT 50,即可显示查询结果前50条。########## Begin ##########SELECT*FROM users,solutionWHERE users.user_id=solution.user_id LIMIT 50;########## End ##########

第9关:查询做了1001题且耗时大于500(time)的选手信息

users为选手信息表;

solution为选手提交的题目解答

USE `sqlexp-sztuoj`;#请在此处添加实现代码########## Begin ##########SELECT DISTINCT users.user_id,reg_time,nameFROM users,solutionWHERE users.user_id=solution.user_id AND solution.problem_id=1001 AND solution.time>500;########## End ##########

第10关:查询所有选手信息及其提交的解答信息,没做题的选手也要显示 (查询结果仅显示前50条,即在查询语句末尾加LIMIT 50)

users为选手信息表;

solution为选手提交的题目解答

USE `sqlexp-sztuoj`;#请在此处添加实现代码,在语句末尾加LIMIT 50,即可显示查询结果前50条。########## Begin ##########SELECT *FROM usersLEFT JOIN solutionON users.user_id=solution.user_id LIMIT 50;########## End ##########

第11关:查询每个选手的信息、交的题目、和提交的结果,没做题的选手不显示 (查询结果仅显示前50条,即在查询语句末尾加LIMIT 50)

users为选手信息表;

solution为选手提交的题目解答

USE `sqlexp-sztuoj`;#请在此处添加实现代码,在语句末尾加LIMIT 50,即可显示查询结果前50条。########## Begin ##########SELECT  users.user_id,reg_time,name,problem_id,resultFROM users,solutionWHERE users.user_id=solution.user_id LIMIT 50;########## End ##########

第12关:用嵌套查询查找和problem_id为 1009 的题目属于同一个比赛的题目信息,结果按problem_id升序排序。

problem为题目表;

contest_problem为比赛-题目关系;

USE `sqlexp-sztuoj`;#请在此处添加实现代码########## Begin ##########SELECT problem.*FROM problemWHERE problem_id IN(    SELECT problem_id    FROM contest_problem    WHERE contest_id IN(        SELECT contest_id        FROM contest_problem        WHERE problem_id=1009    )    ORDER BY problem_id ASC)########## End ##########

第13关:用连接查询查找和problem_id为 1009 的题目属于同一个比赛的题目信息,结果按problem_id升序排序。

problem为题目表;

contest_problem为比赛-题目关系;

USE `sqlexp-sztuoj`;#请在此处添加实现代码########## Begin ##########SELECT problem.problem_id,title,description,hint,time_limit,memory_limitFROM problem,contest_problem A,contest_problem BWHERE A.problem_id=1009 AND A.contest_id=B.contest_id AND problem.problem_id=B.problem_idORDER BY B.problem_id ASC;########## End ##########

第14关:用 EXISTS 实现查询做了 1032 号题的选手信息

users为选手信息表;

solution为选手提交的题目解答

USE `sqlexp-sztuoj`;#请在此处添加实现代码########## Begin ##########SELECT user_id,reg_time,nameFROM usersWHERE EXISTS(    SELECT *    FROM solution    WHERE users.user_id=solution.user_id AND problem_id=1032);########## End ##########

第15关:用 EXISTS 实现查询没做 1032 号题的选手信息

users为选手信息表;

solution为选手提交的题目解答

USE `sqlexp-sztuoj`;#请在此处添加实现代码########## Begin ##########SELECT user_id,reg_time,nameFROM usersWHERE NOT EXISTS(    SELECT *    FROM solution    WHERE users.user_id=solution.user_id AND problem_id=1032);########## End ##########

第16关:用 EXISTS 实现查询和problem_id为 1009 的题目属于同一个比赛的题目信息,结果按problem_id升序排序。

problem为题目表;

contest_problem为比赛-题目关系;

USE `sqlexp-sztuoj`;#请在此处添加实现代码########## Begin ##########SELECT problem.*FROM problemWHERE problem_id IN(    SELECT problem_id    FROM contest_problem    WHERE contest_id IN(        SELECT contest_id        FROM contest_problem        WHERE problem_id=1009    )    ORDER BY problem_id ASC)########## End ##########

第17关:用 EXISTS 实现查询参与过所有比赛的选手信息

users为选手信息表;

contest为比赛信息表;

solution为选手提交的题目解答

USE `sqlexp-sztuoj`;#请在此处添加实现代码########## Begin ##########SELECT users.user_id,reg_time,nameFROM usersWHERE NO EXISTS(    SELECT *    FROM contest    WHERE NO EXISTS(        SELECT *        FROM solution        WHERE user_id=users.user_id AND contest_id=contest.contest_id    )  );########## End ##########

来源地址:https://blog.csdn.net/m0_53227534/article/details/128419664

您可能感兴趣的文档:

--结束END--

本文标题: 数据库系统头歌实验二 SQL的多表查询

本文链接: https://lsjlt.com/news/483001.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 数据库系统头歌实验二 SQL的多表查询
    第一关:等值连接:求S表和J表城市相同的等值连接(列顺序还是按照S、J表) 工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供...
    99+
    2023-10-27
    数据库 sql mysql
  • 实验一 关系数据库标准语言SQL 课后习题/头歌
     第1关:创建数据库 任务要求 建立demo数据库 并显示所有数据库 #代码开始CREATE DATABASE demo;show DATABASES; #代码结束 第2关:创建表 任务要求 设有一个demo数据库,包括S,P,J,SPJ...
    99+
    2023-10-27
    sql 数据库 mysql
  • sql数据库多表查询的方法是什么
    在SQL中,可以通过使用JOIN关键字来进行多表查询。JOIN操作允许将多个表连接起来,根据表之间的关系进行数据的检索和过滤。常见的...
    99+
    2023-10-08
    sql数据库
  • MySQL数据库查询中怎么实现多表查询
    今天小编给大家分享一下MySQL数据库查询中怎么实现多表查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、多表查询多表查...
    99+
    2023-06-29
  • mysql数据库多表关联查询的慢SQL优化
    工作中我们经常用到多个left join去关联其他表查询结果,但是随着数据量的增加,一个表的数据达到百万级别后,这种普通的left join查询将非常的耗时。 举个例子:     现在porder表有 1000W数据,其他关联的表数据都...
    99+
    2017-02-16
    mysql数据库多表关联查询的慢SQL优化
  • MySQL数据库中的多表查询
    这期内容当中小编将会给大家带来有关MySQL数据库中的多表查询,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。多表查询查询结果来自于多张表,即多表查询子查询:在SQL语句嵌套着查询语句,...
    99+
    2024-04-02
  • thinkphp:数据库查询二,嵌套别的表的查询(别的表做子查询)
     例子 从 vendors 表中选择记录。在 vendors 表中,筛选出具有满足以下条件的 vendor_code 值: 对应的采购订单(在 po_headers_all 表中)存在未完全接收的采购行(在 po_lines_all 表...
    99+
    2023-09-13
    数据库 sql php
  • mysql数据库表的多条件查询
    mysql数据库表的多条件查询 一、select语句基本查询 SELECT 字段1,字段2....FROM 表名[WHERE 条件] [LIMIT N][ OFFSET M] select可以返回多条数据也可以返回一条数据...
    99+
    2023-08-22
    数据库 mysql sql
  • sql怎么查询数据库的所有表
    查询所有数据库表的步骤:连接目标数据库。执行查询:select table_name from information_schema.tables where tab...
    99+
    2024-06-03
    mysql
  • 数据库查询锁表以及解锁表的sql
    之前程序运行的时候,突然发生页面卡死,后台不报错的现象,经过排查是数据库表被锁死,下面的sql是查询被锁的表,以及对应的解锁sql;select b.owner,b.object_name,a.s...
    99+
    2024-04-02
  • sql怎么查询数据库中所有的表
    查询数据库中所有表的命令因 dbms 而异,以下是三种常见 dbms 的命令:mysql:show tables;postgresql:select * from pg_cat...
    99+
    2024-06-03
    mysql
  • 怎么理解Oracle数据库中的多表查询,分组查询,子查询
    本篇内容介绍了“怎么理解Oracle数据库中的多表查询,分组查询,子查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
    99+
    2024-04-02
  • SQL查询服务器下所有数据库及数据库的全部表
    目录SQL查询服务器下所有数据库及数据库的全部表获取所有用户名获取所有用户数据库获取库中所有的表名获取某个表的字段名补充:SqlServer中查询某数据库所有表及其数据总条数和占用空间1.查询某数据库中的所有数据表2.查...
    99+
    2023-05-12
    SQL查询服务器数据库 sqlserver查询所有表
  • sql server中怎么实现多个数据库间快速查询某个表信息
    sql server中怎么实现多个数据库间快速查询某个表信息,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.先了解一下系统存储过程和系统表的...
    99+
    2024-04-02
  • mysql数据库实现单表查询的方法
    这期内容当中小编将会给大家带来有关mysql数据库实现单表查询的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。数据库单表查询的方法:1、select查询操作...
    99+
    2024-04-02
  • Oracle数据库多个实例的查询与指定
    近期在对单位某系统进行巡检时,发现该数据库有多个实例,直接对其中一个实例进行查询时,显示失败。后发现需要对其进行指定,修改环境变量。具体思路如下:      1、首先...
    99+
    2024-04-02
  • PHP怎么操作SQL Server数据库实现表的改查与统计
    今天小编给大家分享一下PHP怎么操作SQL Server数据库实现表的改查与统计的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2023-06-29
  • Java实现数据库中查询出的数据转存成excel表
    看了很多文章乱糟糟的,自己写了个简单暴力的一眼就懂,没有那么多花里胡哨,表格样式可以通过代码定义,我嫌麻烦注意日期格式如果是以String类型的方式存到数据库的导出时要转换一次,直接导出格式不对因为导出excel表格用的是get方式传参,所...
    99+
    2014-10-10
    java教程 Java
  • SQL多个主键的表,插入数据有重复时,查询数据的重复值?
    SQL多个主键的表,插入数据有重复时,会提示违反主键约束不能插入的错误。那么,如何找到插入数据的重复值?解决方法:使用group by 假设有个表#a,有saleid,vendorid,comid...
    99+
    2024-04-02
  • Sql查询MySql数据库中的表名和描述表中字段(列)信息
    下面为大家介绍利用SQL查询语句获取Mysql数据库中表的表名,表描述、字段ID、字段名、数据类型、长度、精度、是否可以为null、默认值、是否自增、是否是主键、列描述 一、查询表信息(表名/表描述) ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作