SQL分类

SQL,全名结构化查询语言(Structured Query Language),是用于访问和处理数据库的标准语言。

SQL分为四类:DQLDDLDMLDCL

 

 

DQL,数据查询语言 (Data Query Language) 是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。核心指令为SELECT,以及一些辅助指令,如FROM、WHERE等。

DQL的语法结构为:

SELECT -- 可以用*表示全部column

FROM             -- 表示来源,可以搭配JOIN做链接查询
WHERE          -- 过滤条件
GROUP BY      -- 在使用聚合函数时用到,如SUM,COUNT,MAX,AVG
HAVING          -- 对聚合结果进行筛选,这是和WHERE的不同点
ORDER BY       -- 排序

 

---------------------------------------------------------------------------------------------------------------------------------

 

DML,数据操纵语言 (Data Manipulation Language) 是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是开发以数据为中心的应用程序必定会使用到的指令,因此有很多开发人员都把加上SQL的SELECT语句的四大指令以“CRUD”来称呼。

这个也很基本,而且比DQL简单,就不多说了。

 

---------------------------------------------------------------------------------------------------------------------------------

 

DDL,数据定义语言 (Data Definition Language,) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,主要语法有CREATE、ALTER与DROP等。

 

CREATE负责数据库对象的创建,如数据库、表、索引、存储过程、触发器、函数等,都可以使用CREATE指令来创建。而根据各种数据库对象的不同,CREATE也有很多的参数。

CREATE DATABASE;创建数据库 CREATE TABLE: 创建表 CREATE INDEX:创建索引 CREATE PROCEDURE:创建存储过程 CREATE FUNCTION:创建函数 CREATE VIEW:创建视图 CREATE MATERIALIZED VIEW: 创建物化视图 CREATE TRIGGER:创建触发器

 

 

ALTER是负责数据库对象修改的指令。基本结构如下:

ALTER TABLE t0 RENAME TO t1;                         -- 更改表名

ALTER TABLE t1 RENAME COLUMN columna TO columnb;     -- 更改字段名

ALTER TABLE t1 ADD column1 VARCHAR(20) NULL;         -- 在表t1中加入一个类型为varchar(20)的 字段column1,并且允许其值为NULL

ALTER TABLE t1 MODIFY column1 NUMBER(10) NOT NULL;   -- 更改column1结构

ALTER TABLE t1 DROP COLUMN column1;                  -- 删除column1字段 

具体就不展开讲了。

 

DROP则是删除数据库对象的指令。 DROP DATABASE db1; DROP TABLE t1; DROP VIEW v1; DROP INDEX i1;

 

TRUNCATE:初始化表,作用与没有WHERE子句的DELETE类似,速度比DELETE快。如果表中有自增字段且已有数据,当使用DELETE时,该字段数据不会回到初始值,但TRUNCATE就会。

 

其他还有ENABLE/DISABLE TRIGGERUPDATE STATISTICS等,不一一介绍了。

 

---------------------------------------------------------------------------------------------------------------------------------

 

DCL,数据控制语言 (Data Control Language)在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户帐户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。

GRANT: 授权

REVOKE: 收回权限

ROLLBACK: 回滚

COMMIT: 提交。 如直接用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、付费专栏及课程。

余额充值