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

这篇具有很好参考价值的文章主要介绍了数据库系统头歌实验二 SQL的多表查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

########## End ##########

 

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

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

 

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

########## End ##########

 

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

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

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

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

########## End ##########

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

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

USE mydata;
#请在此处添加实现代码
########## Begin ##########
SELECT JNO
FROM SPJ
WHERE 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表如下图:

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

########## End ##########

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

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

USE mydata;
#请在此处添加实现代码
########## Begin ##########
SELECT DISTINCT JNO
FROM SPJ
WHERE 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为选手信息表;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

solution为选手提交的题目解答

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

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

users为选手信息表;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

solution为选手提交的题目解答

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

########## End ##########

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

users为选手信息表;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

solution为选手提交的题目解答

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

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

users为选手信息表;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

solution为选手提交的题目解答

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

########## End ##########

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

problem为题目表;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

contest_problem为比赛-题目关系;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

USE `sqlexp-sztuoj`;
#请在此处添加实现代码
########## Begin ##########
SELECT problem.*
FROM problem
WHERE 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为题目表;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

contest_problem为比赛-题目关系;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

########## End ##########

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

users为选手信息表;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

solution为选手提交的题目解答

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

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

########## End ##########

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

users为选手信息表;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

solution为选手提交的题目解答

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

USE `sqlexp-sztuoj`;
#请在此处添加实现代码
########## Begin ##########
SELECT user_id,reg_time,name
FROM users
WHERE 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为题目表;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

contest_problem为比赛-题目关系;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

USE `sqlexp-sztuoj`;
#请在此处添加实现代码
########## Begin ##########
SELECT problem.*
FROM problem
WHERE 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为选手信息表;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

contest为比赛信息表;

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql

solution为选手提交的题目解答

sql的多表查询-1头哥,数据库实验,数据库,sql,mysql文章来源地址https://www.toymoban.com/news/detail-733913.html

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

########## End ##########

到了这里,关于数据库系统头歌实验二 SQL的多表查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [SQL Server]数据库入门之多表查询

    🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📆 未来很长,值得我们全力奔赴更美好的生活✨ ------------------❤️分割线❤️------------------------- —————————

    2024年02月08日
    浏览(57)
  • 数据库 SQL高级查询语句:聚合查询,多表查询,连接查询

    创建Students和Courses表 直接查询 设置别名查询 设置条件查询 使用COUNT(*) 和 COUNT(StudentID)是一样的效果,因为StudentID是主键,每行记录的主键都不同。另外我们在聚合查询中还是能使用WHERE子句的,比如我们要 查找年龄大于20岁的学生数量 ,可使用以下SQL语句: 函数 说明 SUM

    2024年02月09日
    浏览(127)
  • 《数据库原理》实验六 SQL数据查询实验

    本系列传送门: 实验二 SQL Server SSMS工具创建和管理数据库及数据表 实验三 SQL Server SSMS工具添加数据 实验四 SQL的数据定义语句 实验五 数据库完整性约束的实现与验证 实验六 SQL数据查询实验 实验六(2) SQL数据查询—连接查询 实验七 SQL的数据更新和视图 实验八 T_SQL编程

    2024年02月03日
    浏览(101)
  • 数据库:实验一 SQL数据定义

    1.用数据定义语言创建教学管理数据库stu_db,在数据库中创建schema T,在架构T下创建Student、Course、SC三张数据表(参见教材),并建立相应 索引 。       创建student数据表      创建course数据表       创建sc数据表        2. 在以上三张表中录入若干数据。        录入数

    2024年04月12日
    浏览(46)
  • 数据库实验:SQL的数据视图

    视图是由数据库中的一个表或多个表导出的虚拟表,其作用是方便用户对数据的操作 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的

    2024年02月05日
    浏览(62)
  • 数据库实验:SQL的数据更新

    再次书接上文,sql基础的增删改查 (1) 掌握DBMS的数据查询功能 (2) 掌握SQL语言的数据更新功能 (1) update 语句用于对表进行更新 (2) delete 语句用于对表进行删除 (3) insert 语句用于对表进行插入 (1) 熟练掌握SQL的数据更新语句INSERT、UPDATE、DELETE (2) 写出实验报告 认真阅读S_T.sql,理

    2024年02月05日
    浏览(54)
  • 【SQL】实验十 数据库完整性实验

    一、实验目的 1、 熟悉通过SQL对数据进行完整性控制。熟练掌握数据库 三类完整性约束 (实体完整性、用户自定义完整性、参照完整性) 2、了解SQL SERVER 的违反完整性处理措施。 3、了解主键(PRIMARY KEY)约束 、 外键(FOREIGN KEY)约束 、 唯一性(UNIQUE)约束 、 检查(CHE

    2024年02月01日
    浏览(69)
  • ​数据库原理及应用上机(实验二 SQL数据定义功能实验)

    ✨ 作者:命运之光  ✨ 专栏:数据库原理及应用上机实验   目录 ✨一、实验目的和要求 ✨二、实验内容与步骤 ✨三、附加练习 ✨四、实验总结 🍓🍓 前言:   数据库原理及应用上机实验报告的一个简单整理后期还会不断完善 🍓🍓 1.掌握利用SQL查询分析器和企业管理

    2024年02月05日
    浏览(47)
  • 【数据库 Microsoft SQL Server】实验五 数据库安全性与完整性实验

    一、实验目的 1、掌握数据库的自主存取控制方法,学会使用SQL数据控制语句来进行授权控制和权限回收,理解视图安全机制。 2、掌握数据库的三类完整性约束,定义数据库完整性及违约处理,通过违约操作实验来理解数据库完整性机制。 二、实验环境与实验准备工作 实验

    2024年02月08日
    浏览(45)
  • 《数据库》实验二:SQL练习1

    目录 一、实验目的 二、实验学时 三、实验内容     1.掌握基本表的定义;     2.掌握插入数据、修改数据和删除数据语句的常用形式。     2学时 1.利用Enterprise Manager,新建一个数据库,命名为zyxt,并有以下要求:       ⑴ 该数据库记录某采油厂对油/水井实施作业

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包