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;
目录
相关文章
|
7月前
|
Oracle 关系型数据库
Adaptive Query Optimization
Adaptive Query Optimization
44 4
|
7月前
Adaptive Query Plans
Adaptive Query Plans
31 0
|
7月前
|
SQL 存储 关系型数据库
SQL(Structured Query Language)简介和常见 SQL 命令示例
SQL(Structured Query Language)是一种用于访问和操作关系型数据库的标准语言。它是一个功能强大的语言,用于执行各种数据库操作,包括检索数据、插入新记录、更新记录、删除记录、创建数据库、创建新表、设置权限以及执行存储过程和视图等。以下是 SQL 的一些重要方面:
88 0
|
存储 SQL 关系型数据库
Optimizing Queries with EXPLAIN(用explain来优化查询语句)
Optimizing Queries with EXPLAIN(用explain来优化查询语句)
46 0
|
7月前
|
SQL 缓存 Java
SQL Query Plan在Presto中的缓存设计与实现
阿里云日志服务(SLS)提供一站式数据采集、加工、查询分析、告警、可视化与投递等功能,其中查询分析以简单统一的接口提供大规模数据的查询、计算和分析能力,深受用户喜爱。 目前,分析系统每天接收5+亿次SQL查询请求,在底层,分析系统基于Presto内核,其中Coordinator节点上负载尤其严重,其...
276 0
SQL Query Plan在Presto中的缓存设计与实现
|
分布式计算 Scala 流计算
Structured Streaming报错记录:Overloaded method foreachBatch with alternatives
Structured Streaming报错记录:Overloaded method foreachBatch with alternatives
153 0
Structured Streaming报错记录:Overloaded method foreachBatch with alternatives
|
消息中间件 SQL 分布式计算
Structured_Sink_Foreach | 学习笔记
快速学习 Structured_Sink_Foreach
Structured_Sink_Foreach | 学习笔记
|
SQL Oracle 关系型数据库
SQL99中的natural join 和 using
natural join 叫自然连接,是SQL99语法中支持的一种连接方式,mysql与oracle等主流数据库均支持这种语法。natural join 无需声明连接条件,sql执行器会自动寻找连接的两个表中相同的字段去生成连接条件,然后取数据的交集。
249 0
|
存储 JSON 缓存
Elasticsearch Query DSL之Term level queries
Elasticsearch Query DSL之Term level queries
Elasticsearch Query DSL之Term level queries
|
缓存 Java
Elasticsearch Query DSL之Compound queries(复合查询)
Elasticsearch Query DSL之Compound queries(复合查询)
Elasticsearch Query DSL之Compound queries(复合查询)