Structured Query

简介: 【7月更文挑战第13天】

SQL(Structured Query Language)提供了多种高级查询方法,允许用户执行复杂数据检索和操作

  1. 连接(JOIN)
    • 用于结合两个或多个表中的行,基于相关的列。
    • 常用的JOIN类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN。
-- 内连接
SELECT a.column1, b.column2
FROM table1 a
INNER JOIN table2 b ON a.common_column = b.common_column;

-- 左连接
SELECT a.column1, b.column2
FROM table1 a
LEFT JOIN table2 b ON a.common_column = b.common_column;

-- 右连接
SELECT a.column1, b.column2
FROM table1 a
RIGHT JOIN table2 b ON a.common_column = b.common_column;

-- 全外连接
SELECT a.column1, b.column2
FROM table1 a
FULL OUTER JOIN table2 b ON a.common_column = b.common_column;
  1. 子查询(Subquery)
    • 一个查询嵌套在另一个查询中。
    • 可以在SELECT、INSERT、UPDATE或DELETE语句中使用。
-- 在SELECT中使用子查询
SELECT * FROM table1 WHERE column1 = (SELECT MAX(column1) FROM table2);

-- 在FROM中使用子查询(派生表/内嵌选择)
SELECT * FROM (SELECT column1 FROM table2) AS subquery;
  1. 聚合函数(Aggregate Functions)
    • 对一组值执行计算并返回单一值。
    • 包括SUM、AVG、MIN、MAX、COUNT等。
SELECT COUNT(*), AVG(column1), MAX(column2), MIN(column3)
FROM table1
WHERE condition;
  1. 窗口函数(Window Functions)
    • 对数据集的一个子集执行计算,并返回多个行。
    • 包括ROW_NUMBER、RANK、DENSE_RANK、NTILE等。
-- 使用窗口函数计算排名
SELECT column1, column2,
       RANK() OVER (ORDER BY column1 DESC) AS rank
FROM table1;
  1. 公用表表达式(Common Table Expressions, CTEs)
    • 定义了一个临时的结果集,可以由一个SELECT或INSERT、UPDATE、DELETE语句引用。
WITH cte_name (column1, column2) AS (
    SELECT column1, column2 FROM table1 WHERE condition
)
SELECT * FROM cte_name;
  1. 递归CTE
    • 允许递归地定义CTE,用于查询层次或递归数据结构。
WITH RECURSIVE cte_name AS (
    SELECT ...
    FROM ...
    WHERE ...

    UNION ALL

    SELECT ...
    FROM cte_name
    WHERE ...
)
SELECT * FROM cte_name;
  1. 分组(GROUP BY)
    • 将结果集按照一个或多个列进行分组,并使用聚合函数对每个组进行计算。
SELECT column1, SUM(column2)
FROM table1
GROUP BY column1;
  1. HAVING
    • 用于过滤分组后的结果,类似于WHERE,但是用于聚合函数。
SELECT column1, AVG(column2) AS average
FROM table1
GROUP BY column1
HAVING AVG(column2) > 100;
  1. UNION和UNION ALL
    • 用于合并两个或多个SELECT语句的结果集。
SELECT column1 FROM table1
UNION
SELECT column1 FROM table2;

-- 或者使用UNION ALL,允许重复行
SELECT column1 FROM table1
UNION ALL
SELECT column1 FROM table2;
  1. 临时表(Temporary Tables)
    • 在会话或事务期间创建的表,用于存储中间结果。
CREATE TEMPORARY TABLE temp_table_name (
    column1 datatype,
    column2 datatype
);

INSERT INTO temp_table_name
SELECT * FROM table1 WHERE condition;
目录
相关文章
|
SQL Oracle 关系型数据库
Oracle结构化查询语言(Structured Query Language)
SQL是结构化查询语言(Structured Query Language)    专门用于数据存取、数据更新及数据库管理等操作。    此文后积累学习用SQL语句对数据库的表进行增删改查的操作。    在Oracle开发中,客户端把SQL语句发送给服务器,服务器对SQL语句进行编译、执行,把执行的结果返回给客户端。 Oracle SQL语句由如下命令组成:   数据定义语言(D
1552 0
|
SQL Oracle 关系型数据库
SQL99中的natural join 和 using
natural join 叫自然连接,是SQL99语法中支持的一种连接方式,mysql与oracle等主流数据库均支持这种语法。natural join 无需声明连接条件,sql执行器会自动寻找连接的两个表中相同的字段去生成连接条件,然后取数据的交集。
187 0
|
3月前
|
SQL 存储 关系型数据库
SQL(Structured Query Language)简介和常见 SQL 命令示例
SQL(Structured Query Language)是一种用于访问和操作关系型数据库的标准语言。它是一个功能强大的语言,用于执行各种数据库操作,包括检索数据、插入新记录、更新记录、删除记录、创建数据库、创建新表、设置权限以及执行存储过程和视图等。以下是 SQL 的一些重要方面:
64 0
|
存储 JSON 缓存
Elasticsearch Query DSL之Term level queries
Elasticsearch Query DSL之Term level queries
Elasticsearch Query DSL之Term level queries
|
SQL
Distributed SQL Query Engine for Big Data
http://prestodb.io/ https://github.com/packetloop/packetpig https://github.
854 0
|
SQL 数据库 时序数据库
Influx Sql系列教程八:query数据查询基本篇
前面几篇介绍了InfluxDB的添加,删除修改数据,接下来进入查询篇,掌握一定的SQL知识对于理解本篇博文有更好的帮助,下面在介绍查询的基础操作的同时,也会给出InfluxSql与SQL之间的一些差别
526 0
|
SQL 监控 关系型数据库
Influx Sql系列教程九:query数据查询基本篇二
前面一篇介绍了influxdb中基本的查询操作,在结尾处提到了如果我们希望对查询的结果进行分组,排序,分页时,应该怎么操作,接下来我们看一下上面几个场景的支持
705 0
|
SQL Oracle 关系型数据库
|
3月前
|
SQL 缓存 Java
SQL Query Plan在Presto中的缓存设计与实现
阿里云日志服务(SLS)提供一站式数据采集、加工、查询分析、告警、可视化与投递等功能,其中查询分析以简单统一的接口提供大规模数据的查询、计算和分析能力,深受用户喜爱。 目前,分析系统每天接收5+亿次SQL查询请求,在底层,分析系统基于Presto内核,其中Coordinator节点上负载尤其严重,其...
147 0
SQL Query Plan在Presto中的缓存设计与实现