SQL进阶查询

news/2024/9/19 20:35:41/文章来源:https://www.cnblogs.com/Ho1dF0rward/p/18421276

前置知识

默认你已经掌握了基础的SQL使用,本文为复杂SQL查询编写。

需求场景

限制条数

限制结果为 10 条

SELECT * FROM table_name
LIMIT 10;

跳过前 5 条,返回接下来的 10 条

SELECT * FROM table_name LIMIT 5,10;

添加条件

基本格式

SELECT <列名>FROM <表名>WHERE <条件表达式>;

条件表达式

基本表达式
SELECT * 
FROM table_name 
WHERE column_name = 'value';//等于SELECT * 
FROM table_name 
WHERE column_name <> 'value';//不等于
多重逻辑
SELECT * 
FROM table_name 
WHERE column1 = 'value1' AND column2 = 'value2'; //且SELECT * 
FROM table_name 
WHERE column1 = 'value1' OR column2 = 'value2';//或SELECT * 
FROM table_name 
WHERE NOT column_name = 'value';//非
范围条件
SELECT *
FROM products
WHERE price BETWEEN 10 AND 50;//在10和50之间SELECT * 
FROM table_name 
WHERE column_name IN ('value1', 'value2', 'value3');//在这个三个数之间
模糊匹配
SELECT * 
FROM table_name 
WHERE column_name LIKE '%pattern%'; //包含 'pattern'SELECT * 
FROM table_name 
WHERE column_name LIKE '%suffix';  //以 'suffix' 结尾
NULL 值检查
SELECT * 
FROM table_name 
WHERE column_name IS NULL;

处理结果

行处理

即改变行的数量

切分

即将一个大表,按照一个字段分为几个小表。

SELECT product_type, COUNT(*)FROM productGROUP BY product_type;// 按照商品种类统计数据行数
聚合

即配合上文的切分,组合特定的几个小表结果

SELECT department, COUNT(*) AS employee_count
FROM employees
WHERE salary > 50000
GROUP BY department
HAVING COUNT(*) > 5;//计算每个部门的员工数量,但只考虑工资大于 50000 的员工,并只返回员工数量超过 5 的部门

这里先使用GROUP BY 按照部门进行切分,在使用HAVING组合出员工数量大于5的部门

排序
SELECT name, salary
FROM employees
ORDER BY salary ASC (DESC);//按照工资从低到高排序(高到低)。
集合运算
SELECT name FROM employees
UNION
SELECT name FROM contractors;//并集SELECT name FROM employees
UNION ALL
SELECT name FROM contractors;//不去重

列处理

即改变列的数量

内连结
SELECT customers.customer_name, orders.order_id
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;//重

这里的

FROM customers
INNER JOIN orders

说明了表,然后

ON customers.customer_id = orders.customer_id;

配置了合并条件

外连结

内连结会丢弃两张表中不满足 ON 条件的行,和内连结相对的就是外连结。外连结会根据外连结的种类有选择地保留无法匹配到的行。

外连结有三种形式:

  • 左连结会保存左表中无法按照 ON 子句匹配到的行,此时对应右表的行均为缺失值;
  • 右连结则会保存右表中无法按照 ON 子句匹配到的行,此时对应左表的行均为缺失值;
  • 而全外连结则会同时保存两个表中无法按照 ON子句匹配到的行,相应的另一张表中的行用缺失值填充。
SELECT customers.customer_name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;SELECT customers.customer_name, orders.order_id
FROM customers
RIGHT JOIN orders ON customers.customer_id = orders.customer_id;SELECT customers.customer_name, orders.order_id
FROM customers
FULL OUTER JOIN orders ON customers.customer_id = orders.customer_id;

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

整除理论

整除的基本知识 有 \(12\) 个苹果,恰好平分给 \(x\) 个人(每个人分到的苹果完整且数量相同),\(x\) 能取到哪些值? 分别以 \(1\) 到 \(12\) 假设 \(x\),发现只有 \(x=1,2,3,4,6,12\) 这 \(6\) 个数字满足,这里用到的就是整除的概念。整数之间的整除性,体现为两个整数相除…

VulnHub-Bilu_b0x靶机笔记

Bilu_b0x 靶机 概述 Vulnhub 的一个靶机,包含了 sql 注入,文件包含,代码审计,内核提权。整体也是比较简单的内容,和大家一起学习 Billu_b0x.zip 靶机地址: https://pan.baidu.com/s/1VWazR7tpm2xJZIGUSzFvDw?pwd = u785 提取码: u785 一、nmap 扫描 1)主机发现 sudo nm…

春秋云镜 Hospital

春秋云镜 Hospital扔fscan去扫一下heapdump泄露,然而不知道在哪下.dirsearch扫一下访问/actuator/heapdump去下载泄露文件 直接用长城杯用的工具扫 java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump得到key为GAYysgMQhG7/CzIJlVpR2g==,使用shiro综合利用去打弹个shell ba…

章14——集合——Collection 接口

collection 里面可以存放不同数据类型,因为里面是 Object 遍历 Collection 接口方法1:迭代器 但凡实现了 collection 接口都可以用迭代器ArrayList list = new ArrayList();//得到一个集合的迭代器Iterator iterator = list.iterator();while (iterator.hasNext()){//next 函…

分享3款开源、免费的Avalonia UI控件库

Avalonia介绍 Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这意味着开发人员可以共享他们的UI代码,并在不同的目标平台…

想做数据报表?你的“后台”够硬吗

在数据驱动的时代,制作一份高效、精准的数据报表成为企业管理和决策的重要手段。但要做好数据报表,不仅需要一款功能强大的报表工具,还必须有一个强有力的“后台”管理系统来支撑。那么,为什么报表工具需要一个管理后台?以及管理后台的核心功能有哪些?今天就带大家一探究…

centos789手动无脑用sh脚本安装Java8

#老师给的文件是jdk1.8版本,所以我这边写的也是1.8的脚本 输入命令:mkdir –p /export/data #放置相关的数据文件 输入命令mkdir –p /export/servers #软件的安装目录 输入命令:mkdir –p /export/software 上传文件jdk-8u241-linux-x64.tar.gz到/export/software目录 然后…

C++ vector 的一些操作

▲ 《C++ Primer》 P87▲ 《C++ Primer》 P91

BoardLight

​​这是一个easy程度的靶机,所以博主写的也很简单,总共有2个flag。 信息收集端口扫描: ​​发现开放了22,80端口 Web渗透 ​​最底部发现域名 board.htb写进/etc/hosts​文件中 sudo echo "10.10.11.11 board.htb" | sudo tee -a /etc/hosts 对他进行子域名爆破…

LLM学习笔记-长度外推技术

长度外推为在不需要对模型进行额外训练的情况下,模型可以处理更长的序列。本篇文章主要介绍目前大模型用到的一些长度外推技术,包括以RoPE为基础进行位置插值、NTK-aware、动态NTK、NTK-by-parts 和YaRN。关于RoPE,可参见我的上一篇博客LLM学习笔记-位置编码篇 位置插值 回想…

裘立帆-第一次作业

在博客园建立个人技术博客,完善个人信息及博客设置,并发布一篇包含自我介绍、技能树与技术偏好、课程期望的随笔,以此作为课程参与的开始。这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc/这个作业的目标 熟悉博客的写作和使用,将自己介绍给老师和助教姓名…