可视化软件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)

大家都在看

  • Linux之Nginx模块扩展

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    Linux 2023年5月27日
    072
  • 理想汽车 x JuiceFS:从 Hadoop 到云原生的演进与思考

    理想汽车在 Hadoop 时代的技术架构 首先简单回顾下大数据技术的发展,基于我个人的理解,将大数据的发展分了4个时期: 第一个时期: 2006 年到 2008 年。2008 年左…

    Linux 2023年6月14日
    088
  • Redis Cluster集群

    Redis集群 Redis集群是一个可以在多个Redis节点之间进行数据共享的设施( installation )。 Redis集群不支持那些需要同时处理多个键的Redis命令,因…

    Linux 2023年5月28日
    082
  • 安卓加固方案从落地加载到类指令抽取编写报告

    一、前言以及环境配置 PS:突然想起来好久没在看雪发过啦,这次就同步一下吧!!! PS:该文已经首发于某公众号,介意者勿喷!!! 安卓的加固方案是从19年底开始写的,到现在为止差不…

    Linux 2023年6月8日
    0101
  • ret2syscall

    博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935 这一次我们来深入分析下更难的栈溢出题目 ret2syscall 首先还是先…

    Linux 2023年6月13日
    0118
  • 【Jmeter】jmeter提取response中的返回值,并保存到本地文件–BeanShell后置处理器

    有个需求,需要在压测环境中,创建几十万的账号数据,然后再根据创建结果,查询到某些账号信息。 按照之前我的做法,直接Python调用API,然后再数据库查询; 但是近期所有开发人员的…

    Linux 2023年5月28日
    077
  • Web前端基础精品入门(HTML+CSS+JavaScript+JS)[爱前端]听课笔记3:三角形的制作

    菜单中有的项目有夏季菜单,需要添加一个三角形,这个三角形是利用两个边框不同颜色产生的楔形制作的 设置盒子的高度和宽度均为0,边框合适的大小,透明颜色,对应边设置高度、颜色 几个变形…

    Linux 2023年6月14日
    098
  • ROS::message_filters中的一个报错(mt::TimeStamp……)

    <p>&#x300E;&#x65B9;&#x4FBF;&#x68C0;&#x7D22;&#x300F; ros::Tim…

    Linux 2023年6月14日
    076
  • Linux动静分离与Rewrite

    一、动静分离 1.1 单台机器动静分离 1、创建NFS挂载点(NFS服务端) mkdir /static vim /etc/exports /static 172.16.1.0/2…

    Linux 2023年6月14日
    082
  • NO.6 HTML+CSS 笔记

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    093
  • 多个USB转串口设备区分方法

    当计算机或者其他USB主机上使用多个USB转串口设备时,会遇到多个串口无法与具体的串口设备对应起来的问题,包括更换不同USB端口串口序号发生改变,多个设备USB插拔顺序不同导致串口…

    Linux 2023年6月7日
    060
  • C语言—>指针

    当两个指针 p1, p2相减时, p2-p1就是从 p1到 p2,不包含 p2的元素个数,结果的类型是 ptrdiff_t #include int main() { int a[…

    Linux 2023年6月8日
    082
  • HTS-一键启动

    #!/bin/bash #program:runall and checkall process #author:sundz 20220606 v1 如果此用户不存在这个,则配置为…

    Linux 2023年6月7日
    0100
  • docker安装redis

    安装镜像 docker pull redis:7.0 下载配置文件 wget http://download.redis.io/redis-stable/redis.conf 修改…

    Linux 2023年6月7日
    0119
  • Linux进度条制作

    进度条 先了解一下/r 的用法 /r 讲光标回到当前行的最开始 4 int main() 5 { 6 int i=0; 7 for(i=0;i10;i++) 8 { 9 print…

    Linux 2023年6月13日
    086
  • PHP利用Apache、Nginx的特性实现免杀Webshell

    环境函数用法 nginx get_defined_vars() 返回由所有已定义变量所组成的数组 apache getallheaders() 获取全部 HTTP 请求头信息 ap…

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