SQL的高级查询练习知识点下(day26)

news2024/12/26 0:10:18

1 学习目标

  1. 重点掌握分组查询的语法

  2. 重点掌握分页查询的语法

2 分页查询

2.1 语法

SELECT 字段|表达式,...
FROM 表
[WHERE 条件]
[GROUP BY 分组字段]
[HAVING 条件]
[ORDER BY 排序的字段]
LIMIT [起始的条目索引,]条目数;

2.2 特点

  • 起始条目索引从0开始

  • limit子句放在查询语句的最后

  • 公式

    SELECT * FROM 表 LIMIT (page-1) * size , size
    • 每页显示条目数:size
    • 要显示的页数:page
  • 例子:

    • limit 10 前10行
    • limit 0,10 第1行开始的10行
    • limit 10,10 第11行开始的10行
    • limit 100,10 第101行开始的10行
    • 数据量大时(千万),分页数据越往后越慢

2.3 例子

①查询employees表中前10行记录

SELECT employee_id,first_name,last_name
FROM employees LIMIT 10;

②查询employees表中第1行记录开始后的10行记录

SELECT employee_id,first_name,last_name
FROM employees LIMIT 0,10;

③查询employees表中第11行记录开始后的10行记录

SELECT employee_id,first_name,last_name
FROM employees LIMIT 10,10;

3 多表连接查询

3.1 含义

  • 两张表,按指定条件连接,连接成一张表

image-20221122121327393

3.2 传统模式连接

3.2.1 语法

SELECT 字段,...
FROM 表1,表2
WHERE 筛选条件;

3.2.2 例子

3.2.2.1 查询员工信息,并附带显示部门名
  • 我们可以发现employees有部门id字段,所以是可以关联departments表的

image-20221122125940609

SELECT e.employee_id, e.first_name, e.salary, d.department_id, d.department_name
FROM employees e,
     departments d
WHERE e.department_id = d.department_id;
3.2.2.2 查询部门以及部门所在的城市
  • departments表中还包含location_id字段,所以也可以关联区域表,所以查询locations表

image-20221122130450944

SELECT d.department_id, d.department_name, l.city
FROM departments d,
     locations l
WHERE d.location_id = l.location_id;
3.2.2.3 查询部门以及部门经理
  • 发现departments表中还包含manager_id字段,该字段是部门经理的id,部门经理的id其实也是取自于员工表,所以这两个字段也是可以关联的,所以查询manger表
SELECT d.department_id, d.department_name, d.manager_id, e.first_name mgr
FROM departments d,
     employees e
WHERE d.manager_id = e.employee_id;
3.2.2.4 查询员工和员工的主管名
  • 此处需要使用自连接,就是将一张表看做是两张表

  • 经过分析可知,员工的信息在employees表,而员工的主管是manger_id字段,该字段的值是取自于employees表的,所以此时可以将employees表即当成员工表,也可以当成主管表

image-20221122132721557

SELECT e1.employee_id, e1.first_name, e1.salary, e2.first_name mgr
FROM employees e1,
     employees e2
WHERE e1.manager_id = e2.employee_id;

3.3 外连接

3.3.1 概念

  • 内连接:只查询符合连接条件的数据
  • 外连接:连接条件以外的数据,也要查询出来
    • 左外连接:左侧表中连接条件之外的数据
    • 右外连接:右侧表中连接条件之外的数据
    • 全外连接:双侧表中连接条件之外的数据

image-20221122133442841

3.3.2 语法

  • 内连接
SELECT ...
FROM a INNER JOIN b 
ON(连接条件)
  • 左外连接
SELECT ...
FROM a LEFT [OUTER] JOIN b 
ON(连接条件)
  • 右外连接
SELECT ...
FROM a RIGHT [OUTER] JOIN b 
ON(连接条件)
  • 全外连接(mysql不支持)
SELECT ...
FROM a FULL [OUTER] JOIN b 
ON(连接条件)

3.3.3 例子

①查询107个员工并显示部门名

SELECT e.employee_id, e.first_name, e.salary, d.department_name
FROM employees e
LEFT JOIN departments d
ON (e.department_id = d.department_id);

②查询27个部门,有经理显示经理,没有经理显示NULL

SELECT d.department_id, d.department_name, e.first_name mgr
FROM departments d
LEFT JOIN employees e 
ON(d.manager_id=e.employee_id);

③查询107个员工,显示主管名

SELECT e1.employee_id, e1.first_name, e1.salary, e2.first_name mgr
FROM employees e1
LEFT JOIN employees e2 
ON (e1.manager_id = e2.employee_id);

④107个员工,显示部门名,城市

SELECT e.employee_id, e.first_name, e.salary, d.department_name, l.city
FROM employees e
LEFT JOIN departments d ON (e.department_id = d.department_id)
LEFT JOIN locations l ON (d.location_id = l.location_id);

4 总结

  • 分页查询的公式是什么?

    SELECT * 
    FROM 表 
    LIMIT (page-1) * sizePerPage , sizePerPage
  • 什么是多表连接查询?

    两张表,按指定条件连接,连接成一张表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ARM32开发——GD32F4 DMA功能查询

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 DMA0DMA1 DMA0 DMA1

蔬菜识别数据集 蔬菜数据集 用于训练,有十种蔬菜,如图已经标注好的版本

数据集概述 该数据集包含十种常见的蔬菜:胡萝卜、包菜、水果辣椒、青瓜、南瓜、土豆、花菜和西红柿。数据集已经进行了精细的标注,适用于深度学习模型的训练,尤其是用于物体检测和分类任务。 数据集特点 种类多样:涵盖了八种蔬菜…

Github 2024-09-07Rust开源项目日报Top10

根据Github Trendings的统计,今日(2024-09-07统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10CUE项目1Python项目1Go项目1Polars: Rust中的DataFrame接口和OLAP查询引擎 创建周期:1354 天开发语言:Rust, Python协议类型:MIT …

Vue-Pinia状态管理案列Demo

上一篇文章已经介绍了pinia的基本使用,现在做一个小的案列来巩固。 数据绑定修改pinia中的状态。 在页面刷新的时候会显示pinia中的数据 import { createApp } from vue // import ./style.css import App from ./App.vueimport { createPinia } from pinia cons…

心觉:接纳父母,就是接纳自己---创富第一步

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松搞定人生挑战,实现心中梦想! 挑战日更写作162/1000(完整记录在下面) 公门洞开纳百川 众心逐梦越千山 号召引领潜力绽 心觉潜意识无间 很多人抱怨父母&…

Linux是如何收发网络包的

Linux网 络协议栈 从上述⽹络协议栈,可以看出: 收发流程 ⽹卡是计算机⾥的⼀个硬件,专⻔负责接收和发送⽹络包,当⽹卡接收到⼀个⽹络包后,会通过 DMA 技术,将⽹络包放⼊到 Ring Buffer ,这个是…

解决 Tomcat 启动时 JAR 包 `Invalid byte tag in constant pool` 异常问题

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

未来出行:高效智能的汽车充电桩

解析高效智能的汽车充电桩的结构设计技术要求 充电桩按照充电方式分为交流充电桩与直流充电桩、交直流一体充电桩三种。直流充电桩一般安装在高速公路,充电站等地;交流充电桩一般安装在小区、停车场、道路停车位、高速公路服务区等位置。根据国网Q/GDW4…

[3.4]【机器人运动学MATLAB实战分析】PUMA560机器人正运动学MATLAB计算

PUMA560是六自由度关节型机器人,其6个关节都是转动副,属于6R型操作臂。各连杆坐标系如图1,连杆参数如表1所示。 图1 PUMA560机器人的各连杆坐标系 表1 PUMA560机器人的连杆参数 按D-H方法建立操作臂运动学方程。建立PUMA560机器人运动学方程的步骤如下࿱

【网络安全】Jenkins任意文件读取漏洞及检测工具(CVE-2024-23897)

原创文章,不得转载。 文章目录 漏洞成因影响范围检测工具更多细节漏洞成因 Jenkins CLI 接口存在任意文件读取漏洞(CVE-2024-23897)。该问题源于 args4j 库在解析文件名参数时,会将@符号后的字符串视为文件名并尝试读取文件,而且该功能默认处于启用状态。 影响范围 Jen…

部署Apache网站

简易部署自己的apache网站 写在前面:先安装好mysql,再来搭建站点 1.安装php [rootlocalhost ~]# yum install php -y ##安装了php,默认会和apache结合工作2.创建文件编写php网页代码 [rootlocalhost ~]# vim /var/www/html/index.php ##创…

1-6 图像覆盖掩膜 opencv树莓派4B 入门系列笔记

目录 一、提前准备 二、代码详解 hsv cv2.cvtColor(img, cv2.COLOR_BGR2HSV) lower_range np.array([101, 100, 100], dtypenp.uint8) upper_range np.array([121, 255, 255], dtypenp.uint8) mask cv2.inRange(hsv, lower_range, upper_range) mask2 cv2.inRange(…

【Python】数据可视化之分类图

目录 条形图 箱形图 散点图 分簇散点图 小提琴 分簇小提琴 条形图 条形图是一种直观的图表形式,它通过不同长度的矩形条(即“条形”)来展示数值变量的中心趋势估计值,其中每个矩形的高度直接对应于该组数据的某个中心量度&…

urdf ( xacro ) 的 collision碰撞参数设置

目录 写在前面的话整体流程1 URDF 文件结构2 查看原始碰撞形状描述3 加入简单碰撞形状描述方法一 Meshlab 自动测量方法二 人为测量 4 加入XACRO函数简化描述 最终结果展示侧视图正视图碰撞几何体中心点设置不对出现的结果 写在前面的话 本文使用的 URDF 文件是由 solidworks …

百度飞浆OCR半自动标注软件OCRLabel配置【详细

今天帮标注人员写了一份完整的百度飞浆OCR标注软件的安装配置说明书、以供标注人员使用 包括各种环境安装包一起分享出来【conda\python\label项目包、清华源配置文件、pycharm社区版安装包】 提取码:umys 1、解压并安装tools文件下的miniconda,建议安装在D盘下的…

【docker】基于docker-compose 安装elasticsearch + kibana + ik分词器(8.10.4版本)

记录下,使用 docker-compose 安装 Elasticsearch 和 Kibana,并配置 IK 分词器,你可以按照以下步骤进行。此过程适用于 Elasticsearch 和 Kibana 8.10.4 版本。 安装 首先,在你的工作目录下创建一个 docker-compose.yml 文件&…

Java基础-IO相关

文章目录 类层次结构1. java.io 包整体示意图核心类字节流(Byte Stream)字符流(Character Stream)其他辅助类 2. java.nio 包示意图核心类文件操作 总结 字符流读写1. 字符流的核心类1.1 Reader 和 Writer 2. 常用的字符流类2.1 字…

vue3写一个无限树形菜单,递归组件

原本使用element plus的el-tree&#xff0c;可是他的UI不匹配&#xff0c;狠难改成自己想要的&#xff0c;所以只能自己去写一个&#xff0c;做法&#xff1a;使用递归组件 效果 组件代码itemDir.vue // itemDir.vue<template><div><ul v-for"node in li…

Java+Swing+sqlserver学生成绩管理系统

JavaSwingsqlserver学生成绩管理系统 一、系统介绍二、系统展示1.登陆2.课程分配3.选课管理4.学生打分--教师4.查询个人成绩--学生 三、其他1.其它系统 一、系统介绍 管理员:登陆页面、课程管理、选课管理 老师&#xff1a;给学生打分 学生&#xff1a;查询个人成绩 二、系…

景联文科技:专业图像采集服务,助力智能图像分析

景联文科技是专业数据服务公司&#xff0c;致力于为人工智能企业提供从数据采集、清洗到标注的全流程解决方案。协助客户解决AI开发过程中数据处理环节的关键问题&#xff0c;助力企业实现智能化转型。 1.多样化的图像采集服务 景联文科技提供多样化的图像采集服务&#xff0c…