Sql学习第二天——SQL DML与CTE概述

DML (Data Manipulation Language) 与 CTE (Common Table Expression)

今天看书时遇到的两个缩写,不知道其含义,于是就百度了一下,特地在此记录下来,以便于下次复习使用。

关于DML (Data Manipulation Language):

数据操纵语言,用户能够查询数据库以及操作已有数据库中的数据的计算机语言。具体是指是UPDATE更新、INSERT插入、DELETE删除。

关于CTE (Common Table Expression):

CTE(Common Table Expression) ,即公用表表达式,可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE ⅥEW 语句的执行范围内定义的临时结果集。CTE与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次。

CTE可用于:

1.创建递归查询(我个人认为CTE最好用的地方)。

2.在同一语句中多次引用生成的表。

CTE优点:

1.使用 CTE 可以获得提高可读性和轻松维护复杂查询的优点。

2.查询可以分为单独块、简单块、逻辑生成块。之后,这些简单块可用于生成更复杂的临时 CTE,直到生成最终结果集。

CTE可使用的范围:

可以在用户定义的例程(如函数、存储过程、触发器或视图)中定义 CTE。

下面看一个简单的CTE例题:

把test表中salary最大的id记录保存在test_CTE中,再调用

代码如下:

复制代码 代码如下:

with test_CTE(id,salary)

as 

(

select id,max(salary)

from test

group by id 

)

select * from test_cte

时间: 2024-09-30 09:58:35

Sql学习第二天——SQL DML与CTE概述的相关文章

Sql学习第二天——SQL DML与CTE概述_MsSql

DML (Data Manipulation Language) 与 CTE (Common Table Expression) 今天看书时遇到的两个缩写,不知道其含义,于是就百度了一下,特地在此记录下来,以便于下次复习使用. 关于DML (Data Manipulation Language): 数据操纵语言,用户能够查询数据库以及操作已有数据库中的数据的计算机语言.具体是指是UPDATE更新.INSERT插入.DELETE删除. 关于CTE (Common Table Expression)

Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)_MsSql

SQL 将变量定义为Table类型 在平时定义sql语句中的变量时通常我们定义的都是像char,varchar,nvarchar,int........,那如何让变量作为一个像虚拟表一样呢,其实很简单. 基本语法: 复制代码 代码如下: declare @t table(列名1 列的数据类型1 , 列名2 列的数据类型2 , ...............) insert into @t(列名1 ,列名2 ,...............) values (...............) [c

Sql学习第一天——SQL UNION 和 UNION ALL 操作符认识_MsSql

关于SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 注意: 1.UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同. 2.UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名. SQL UNION 语法(结果集没有重复值): 复制代码 代码如下: SELECT s FROM table1 UNION SELECT s FROM t

Sql学习第一天——SQL UNION 和 UNION ALL 操作符认识

关于SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 注意: 1.UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同. 2.UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名. SQL UNION 语法(结果集没有重复值): 复制代码 代码如下: SELECT s FROM table1 UNION SELECT s FROM t

Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)

SQL 将变量定义为Table类型 在平时定义sql语句中的变量时通常我们定义的都是像char,varchar,nvarchar,int........,那如何让变量作为一个像虚拟表一样呢,其实很简单. 基本语法: 复制代码 代码如下: declare @t table(列名1 列的数据类型1 , 列名2 列的数据类型2 , ...............) insert into @t(列名1 ,列名2 ,...............) values (...............) [c

SQL学习笔记一SQL基础知识

常用字段类型bit(0和1),datetime,int,varchar,nvarchar(可能含有中文用nvarchar) Varchar,nvarchar和char(n)的区别char(n)不足长度n的部分用空格填充. SQL语句中,字符串用单引号. SQL语句大小写不敏感.不敏感是指SQL的关键字,字符串值还是敏感的. 简单的INSERT语句 INSERT INTO Person(Id,Name,Age) VALUES(1,'Jim',20) 常用int和uniqueidentifier做主

Sql学习第一天——SQL 练习题(建表/sql语句)_MsSql

题目:来自Madrid且订单数少于3的消费者   建表: 复制代码 代码如下: set nocount on --当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数).当 SET NOCOUNT 为 OFF 时,返回计数 use SY GO if object_Id('dbo.Orders') is not null drop table dbo.Orders GO if object_Id('dbo.Customers') is not nu

Sql学习第一天——SQL 练习题(建表/sql语句)

题目:来自Madrid且订单数少于3的消费者 建表:复制代码 代码如下: set nocount on --当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数).当 SET NOCOUNT 为 OFF 时,返回计数 use SY GO if object_Id('dbo.Orders') is not null drop table dbo.Orders GO if object_Id('dbo.Customers') is not null

学习:在SQL Server 2000 数据仓库中使用分区

server|sql|数据 分区视图联接来自一组成员的水平分区数据,使数据看起来象来自同一张表.SQL Server 2000 区分本地分区视图和分布式分区视图.在本地分区视图中,所有相关表和视图驻留在 SQL Server 的同一实例上.在分布式分区视图中,相关表中至少有一张表驻留在其他某个(远程)服务器上.建议您不要将分布式分区视图用于数据仓库应用程序. 矢量数据仓库围绕事实(标量)和矢量构建,从物理上通常表示为星形架构和雪花形架构,极少有同时包含事实和矢量的完全非正交化的平面表.由于矢量架