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

大家都在看

  • 剑指offer计划18( 搜索与回溯算法中等)—java

    1.1、题目1 剑指 Offer 55 – II. 平衡二叉树 1.2、解法 递归和下一面一题的结合版,abs去绝对值判断两边的差,然后递归isBalanced来遍历二…

    Linux 2023年6月11日
    068
  • 项目相关环境docker版安装教程总结

    项目环境docker及docker-compose文档 1、Linux环境介绍 centos7.6 16G以上内存空间(至少8G) 2、静态IP设置 1、找到配置文件 cd /et…

    Linux 2023年6月7日
    087
  • Windows时间同步命令

    Windows Time服务 sc query W32Time sc start W32Time Windows 时间同步命令 w32tm /config /manualpeerl…

    Linux 2023年6月6日
    094
  • 新手如何引入Echart图标

    1.首先需要到Echart官网去下载配置文件 (官网地址:https://echarts.apache.org/zh/index.html) a.点击下载 b.点击下载后进入到这个…

    Linux 2023年6月13日
    095
  • JuiceFS v1.0 beta3 发布,支持 etcd、Amazon MemoryDB、Redis Cluster

    JuiceFS v1.0 beta3 在元数据引擎方面继续增强,新增 etcd 支持小于 200 万文件的使用场景,相比 Redis 可以提供更好的可用性和安全性。同时支持了 Am…

    Linux 2023年6月14日
    0116
  • fastdfs集群部署

    fastdfs集群部署 参考链接:https://www.cnblogs.com/penngke/p/15396701.html部署架构如下: 部署规划 2台主机,数据存储节点共1…

    Linux 2023年6月8日
    0112
  • angular报错:Cannot assign to a reference or variable

    错误代码: <input #manufacturerId="ngModel" id="manufacturerId" name=&qu…

    Linux 2023年6月7日
    0105
  • CentOS7 小技巧总结

    1.CentOS7 解决无法使用tab自动补全 csharp;gutter:true; 原因:CentOS在最小化安装时,没有安装自动补全的包,需要手动安装。 yum -y ins…

    Linux 2023年6月7日
    0126
  • python接收微信消息报’HTMLParser’ object has no attribute ‘unescape’错误

    我的博客 一直有个想法,想要弄个微信机器人,然而出师不利,刚开始就碰壁了 先上代码,这个是用来接收消息的,是个测试脚本 #!/usr/bin/python coding: utf-…

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

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

    Linux 2023年5月27日
    0109
  • SQLI-LABS(Less-8)

    Less-8(GET-Blind-Boolean Based-Single Quotes) 打开 Less-8页面,可以看到页面中间有一句 Please input the ID …

    Linux 2023年6月6日
    093
  • 快速构建Web应用,从零学习React后台项目模版

    想要快速构建实际应用,离不开一个好的应用模版,React作为大厂出品工具,有着稳定性和可维护性的保障,同时可以使用相关的全套全家桶(React + React-router + A…

    Linux 2023年5月27日
    095
  • Linux常用命令

    Linux常用命令 在学习瑞吉外卖项目课程中自己做的一个linux常用命令的小笔记便于以后复习使用,仅供参考。 文件目录操作命令 pwd:显示该目录或者文件的路径 ls命令 ls:…

    Linux 2023年6月7日
    091
  • Hadoop 调优

    Hadoop 调优 HDFS 调优 hdfs-site.xml 1. hadoop 文件块大小,通常为 128MB 或 256MB dfs.block.size 134217728…

    Linux 2023年6月8日
    0102
  • maven安装及导入本地jar包

    一、maven的安装方法 1.去maven官网下载适合的版本 下载地址: 官方下载地址 2.下载后解压到任意目录 3.配置系统环境变量 M2_HOME ,值为maven解压后的目录…

    Linux 2023年6月14日
    0135
  • docker 安装mysql5.7

    docker 安装mysql5.7 前言 MySQL 是目前最流行的关系型数据库管理系统,开发者是瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网…

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