SQL分类

本文介绍了SQL(结构化查询语言)的基础知识,将其分为数据定义语言(DDL)、数据查询语言(DQL)、数据操纵语言(DML)和数据控制语言(DCL)四大类,并详细解释了各类语言的主要用途。

SQL Structure query language )结构化查询语言。是数据库的核心语言。

一、 SQL 分为四类: DDL DQL DML DCL

二、 DDL :数据定义语言

       CREATE TABLE | VIEW | INDEX

三、 DQL :数据查询语言

       SELECT  < 列名 >

       FROM   < 表名 >

       WHERE  < 条件语句 >

四、 DML :数据管理语言

       INSERT | UPDATE | DELETE

五、 DCL :数据控制语言

       GRANT (授权)

       ROLLBACK

       COMMIT

 

### SQL 分类汇总查询用法及示例 在 SQL 中,分类汇总是一种常见的需求,通常用于对数据进行分组并计算每个分组的聚合值。以下是一些常用的分类汇总方法及其示例。 #### 1. 使用 `GROUP BY` 进行分类汇总 `GROUP BY` 是 SQL 中最基本的分类汇总工具,它允许用户按照一个或多个字段对数据进行分组,并对每组数据执行聚合操作(如求和、计数等)。例如: ```sql SELECT category, SUM(sales) AS total_sales FROM sales_data GROUP BY category; ``` 上述查询将根据 `category` 字段对数据进行分组,并计算每个类别的总销售额[^1]。 #### 2. 使用 `WITH` 子句创建临时表 `WITH` 子句可以用来定义一个临时表,简化复杂查询的编写。例如: ```sql WITH CategorySales AS ( SELECT category, SUM(sales) AS total_sales FROM sales_data GROUP BY category ) SELECT category, total_sales, RANK() OVER (ORDER BY total_sales DESC) AS rank FROM CategorySales; ``` 这段代码首先通过 `WITH` 子句计算每个类别的总销售额,然后使用窗口函数 `RANK()` 对类别进行排名[^1]。 #### 3. 使用 `ROLLUP` 进行多级汇总 `ROLLUP` 是一种扩展的 `GROUP BY` 功能,它可以生成分组的多级汇总结果。例如: ```sql SELECT category, product, SUM(sales) AS total_sales FROM sales_data GROUP BY category, product WITH ROLLUP; ``` 该查询会生成按 `category` 和 `product` 分组的结果,同时还会为每个类别生成总计,并为所有数据生成一个全局总计[^2]。 #### 4. 使用 `CUBE` 进行全组合汇总 `CUBE` 是另一种扩展的 `GROUP BY` 功能,它会生成所有可能的分组组合的汇总结果。例如: ```sql SELECT category, product, SUM(sales) AS total_sales FROM sales_data GROUP BY CUBE(category, product); ``` 这段代码会生成按 `category` 和 `product` 的所有可能组合的汇总结果,包括每个类别的总计、每个产品的总计以及全局总计[^2]。 #### 5. 使用 `GROUPING SETS` 自定义汇总级别 `GROUPING SETS` 允许用户指定需要生成的汇总级别。例如: ```sql SELECT category, product, SUM(sales) AS total_sales FROM sales_data GROUP BY GROUPING SETS ( (category, product), (category), () ); ``` 此查询会生成按 `category` 和 `product` 分组的结果、按 `category` 分组的结果以及全局总计[^2]。 #### 6. 在 Flink SQL 中的分类汇总 Flink SQL 支持跨 Catalog 和数据库调用内置函数,因此可以在分类汇总时利用这些功能。例如: ```sql SELECT category, SUM(mycatalog.mydb.myfunc(sales)) AS total_sales FROM sales_data GROUP BY category; ``` 这里展示了如何在分类汇总中使用自定义函数 `myfunc` 来处理数据[^3]。 ### 注意事项 - 在创建表时,可以选择不同的存储引擎(如 MyISAM 或 InnoDB),这会影响事务支持和外键约束等功能[^4]。 - 窗口函数(如 `RANK()`)可以与分类汇总结合使用,以实现更复杂的分析需求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值