可视化软件navicat

目录

  • 多表查询思路
  • 可视化软件navicat
  • *多表查询练习题

内容

多表查询思路

多表查询的思路总共就两种:

白嫖两个表

获取jason所在的部门名称

子查询

相当于是我们日常生活中解决问题的方式(一步步解决)

将一条SQL语句的查询结果加括号当做另外一条SQL语句的查询条件

先获取jason的部门编号

将结果加括号作为查询条件

连表操作

先将多张表拼接到一起,形成一张大表,然后基于单表查询获取数据

连表操作有四个关键字:

  • inner join 内连接(只连接两张表中有对应关系的数据)

  • left join 左连接(以左表为基准,展示所有的数据,没有对应项则用NULL填充)

  • right join 右连接(以右表为基准,展示所有的数据,没有对应项则用NULL填充)

  • union 全连接(左右两表数据全部展示,没有对应项则用NULL填充)

获取jason的部门编号

笛卡尔积

会将所有的数据全部对应一遍,效率低下

一条SQL语句的查询结果,我们也可以看成是一张虚拟表

如果一条SQL语句中涉及到多张表的字段名称编写,建议使用表名前缀做区分

可视化软件navicat

学会了连表操作之后,可以将N多张表拼接到一起(将两张表拼接之后的结果起别名当做一张表使用,然后再去跟另外一张表拼接)

可视化软件之Navicat

Navicat可以充当很多数据库软件的客户端,提供了图形化界面能够让我们更加快速的操作数据库

使用navicat编写SQL,如果自动补全语句,那么关键字都会变大写

SQL语句注释语法:快捷键与pycharm中的一致
多表查询练习题

  • *查询所有的课程的名称以及对应的任课老师姓名

  • 先明确需要几张表,course表,teacher表

  • 大致查找一些表中的数据情况
  • 既然是多表查询,那么查询思路,子查询,连表操作(复杂的SQL需要两者配合使用)
  • 编写完成后,使用美化功能,将SQL语句规范化

— SELECT

— course.cname,

— teacher.tname

— FROM

— course

— INNER JOIN teacher ON course.teacher_id = teacher.tid;

  • *查询平均成绩大于八十分的同学的姓名和平均成绩

  • 先明确需要用到几张表 student score

  • 大致查看一下两张表里面的数据
  • 先获取平均成绩大于80分的学生信息(按照student_id分组)
  • select score.student_id,avg(num) as avg_num from score group by score.student_id having avg_num>80;
  • 结果需要从两个表里面的获取 ,student ,SQL语句执行之后的虚拟表

— SELECT

— student.sname,

— t1.avg_num

— FROM

— student

— INNER JOIN ( SELECT student_id, avg( num ) AS avg_num FROM score GROUP BY score.student_id HAVING avg_num > 80 ) AS t1 ON student.sid = t1.student_id;

  • *查询没有报李平老师课的学生姓名

此题有两种思路:第一种是正向查询,第二种是反向查询(先查所有报了李平老师课程的学生id 之后取反即可)

  1. 先明确需要用到几张表,四张表
  2. 先查询李平老师的编号
  3. select tid from teacher where tname=’李平老师’
  4. 再查李平老师教授的课程编号
  5. select cid from course where teacher_id=(select tid from teacher where tname=’李平老师’)
  6. 根据课程编号,去score表中筛选出所有选了课程的学生编号
  7. select distinct student_id from score where course_id in (select cid from course where teacher_id=(select tid from teacher where tname=’李平老师’));
  8. 根据学生编号去学生表中反向筛选出没有报李平老师课程的学生姓名

— SELECT

— sname

— FROM

— student

— WHERE

— sid NOT IN ( SELECT DISTINCT student_id FROM score WHERE course_id IN ( SELECT cid FROM course WHERE teacher_id = ( SELECT tid FROM teacher WHERE tname = ‘李平老师’ ) ) )

  • *查询没有同时选修物理课程和体育课程的学生姓名

  • 先明确需要用到几张表 三张

  • 先获取物理课程和体育课程的编号
  • select cid from course where cname in (‘物理’,’体育’);
  • 再去分数表中筛选出选了物理和体育的数据(包含了选了一门和两门 没有选的就已经被排除了)
  • select * from score where course_id in (select cid from course where cname in (‘物理’,’体育’))
  • 如何剔除选了两门的数据(按照学生id分组 然后对课程计数即可)
  • select student_id from score where course_id in (select cid from course where cname in (‘物理’,’体育’))– group by student_id HAVING count(course_id) = 1;
  • 根据上述学生id号筛选出学生姓名

— SELECT

— sname

— FROM

— student

— WHERE

— sid IN (

— SELECT –

  • student_id

— FROM

— score

— WHERE

— course_id IN ( SELECT cid FROM course WHERE cname IN ( ‘物理’, ‘体育’ ) )

— GROUP BY

— student_id

— HAVING

— count( course_id ) = 1

— )

  • *查询挂科超过两门(包括两门)的学生姓名和班级

  • 先明确需要几张表 三张表

  • 先去score表中筛选出所有不及格的数据
  • select * from score where num < 60;
  • 如何筛选每个学生挂科的门数(按照学生id分组 对学科计数即可)
  • select student_id from score where num < 60 group by student_id — HAVING count(course_id) >= 2;
  • 由于最终的结果需要取自两张表,所以应该拼接
  • select student.sname,class.caption from class inner join student on class.cid=student.class_id;
  • 使用步骤3获取到的学生编号,对步骤4的表结果筛选数据

SELECT student.sname,class.caption FROM class INNER JOIN student ON class.cid = student.class_id WHERE student.sid IN ( SELECT student_id FROM score WHERE num < 60 GROUP BY student_id HAVING count( course_id ) >= 2 );

Original: https://www.cnblogs.com/zzs0626/p/16230552.html
Author: 顺溜_7
Title: 可视化软件navicat

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582456/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 阿里云-docker上安装redis

    1、取最新版的 Redis 镜像 这里我们拉取官方的最新版本的镜像: $ docker pull redis:latest 2、查看本地镜像 使用以下命令来查看是否已安装了 red…

    Linux 2023年5月28日
    090
  • Linux CURL的安装和使用

    –获得安装包,从网上直接下载或者其他途径,这里直接wgetwget http://curl.haxx.se/download/curl-7.17.1.tar.gz&#8…

    Linux 2023年6月13日
    091
  • 十一、服务介绍及端口

    服务管理简介服务器的作用主要是什么?主要是通过网络来提供服务,比如apache提供一个web服务,mysql提供一个数据库服务,dns提供一个域名解析服务,ftp提供一个文件服务器…

    Linux 2023年6月7日
    0112
  • 统计算法_数值/线性关系度量

    继续统计算法,这次也没什么特别的,还没到那么深入,也是比较基础的1、方差-样本2、协方差(标准差)-样本3、变异系数4、相关系数 依然是先造个list,这次把这个功能写个函数,方便…

    Linux 2023年6月6日
    0158
  • 【深度学习】ml_collections报错

    在一些源码中,看见了一个导入: import ml_collections 此时会报错,这个包并不是PyTorch的包,同时也非源码中模块 解决办法: pip install ml…

    Linux 2023年6月13日
    088
  • Redis 通过 RDB 方式进行数据备份与还原

    Redis 通过 RDB 方式进行数据备份与还原 Intro 有的时候我们需要对 Redis 的数据进行迁移,今天介绍一下通过 RDB(快照)文件进行 Redis 数据的备份和还原…

    Linux 2023年5月28日
    0160
  • mysql select语句查询流程是怎么样的

    mysql select查询的数据是查询内存里面,如果没有查询的数据没有在内存,就需要mysql的innodb引擎读取磁盘,将数据加载的内存后在读取。这就体现了,mysql查询大量…

    Linux 2023年6月8日
    0102
  • linux 系统调优相关参数

    posted @2022-09-05 00:32 LB_运维技术 阅读(4 ) 评论() 编辑 Original: https://www.cnblogs.com/libin-li…

    Linux 2023年6月13日
    0123
  • redis五种数据类型及使用场景

    一、Redis简介Redis 是一个开源的使用 C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库。它可以用作数据库、缓存和消息中间件。它支持的数据类…

    Linux 2023年5月28日
    090
  • 如何写出有效的单元测试

    测试不要名不副实避免测试的描述与测试内容不符;测试结果必须精准;测试该失败的时候一定要失败! 测试私有或者受保护的方法解决思路: 将方法变成公共方法; 将方法抽取到新类; 将方法变…

    Linux 2023年6月8日
    0106
  • nslookup:command not found的解决办法

    nslookup:command not found的解决办法 通过nslookup查看DNS记录,在这里遇到了一个小插曲,nslookup:command not found(未…

    Linux 2023年6月7日
    085
  • 重写并自定义依赖的原生的Bean方法

    转载请注明出处: 在项目开发过程中,往往是直接应用很多jar包中依赖且声明好的Bean,拿来即用,但很多场景也需要对这些原生的Bean 进行自定义,定制化封装,这样在项目使用的过程…

    Linux 2023年6月15日
    0133
  • centos7安装redis设置开机启动

    首先下载redis源码,并使用tar进行解压缩 wget http://download.redis.io/releases/redis-4.0.8.tar.gztar xvzf …

    Linux 2023年5月28日
    0112
  • MyCAT实现MySQL读写分离

    用户连接到MySQL的中间件(代理),中间件接收用户的访问转发给后端的mysql数据库。 是MySQL的一个中间件软件,Mycat是一个开源的分布式数据库系统,是一个实现了MySQ…

    Linux 2023年6月7日
    093
  • 一篇文章剖析设计模式中的简单工厂、工厂方法和抽象工厂

    前言 大部分的面试者在IT行业面试中,提及设计模式,可以列举一大堆,但是面试官要求细说的时候,往往部分基础不够牢固的同学只能提及简单工厂。今天我们来对面试过程中最常见的简单工厂、工…

    Linux 2023年6月13日
    0101
  • [Python]Tkinter 做简单的窗口视窗GUI(参考莫烦笔记)

    Label & Button 标签与按钮 Entry & Text 输入与文本框 ListBox 列表部件 Radiobutton 选择按钮 Scale 尺度 Ch…

    Linux 2023年6月13日
    0139
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球