表类型

  表类型简化了表变量的定义。通过创建表类型,可以把表的定义保存到数据库中,以后在定义表变量,存储过程和用户定义函数的输入参数时,就可以将表类型作为表的定义而重用。

下面的示例演示了如何通过表类型来简化表变量的定义,并且如何重用它。

USE TSQLFundamentals2008;
GO

IF TYPE_ID(‘dbo.OrderTotalsByYear‘) IS NOT NULL DROP TYPE dbo.OrderTotalsByYear;
GO
-- 创建表类型
CREATE TYPE dbo.OrderTotalsByYear AS TABLE
(
    orderyear INT NOT NULL PRIMARY KEY,
    qty INT NOT NULL
);

-- 通过表类型创建表变量,并且填充数据
DECLARE @MyOrderTotalsByYear AS dbo.OrderTotalsByYear;

INSERT INTO @MyOrderTotalsByYear( orderyear,qty )
SELECT YEAR(orders.orderdate)AS orderdate,SUM(orderdetails.qty) AS qty FROM Sales.Orders AS orders
LEFT JOIN Sales.OrderDetails AS orderdetails ON orders.orderid = orderdetails.orderid
GROUP BY YEAR(orders.orderdate);

SELECT * FROM @MyOrderTotalsByYear;

查询结果:

时间: 2024-12-09 00:55:35

表类型的相关文章

关于自定义表类型遇到的问题~

有时候存储过程使用自定义表类型,就一个字~方便,类似于整个table直接传入到存储过程里面去玩,比起"万能"的xml~ 还不用解析,直接能用~多方便. 但是!!! 使用自定义表变量,并不一定是一帆风顺的~比如说和如果调用的参数不是有数据库这边来组装,由程序去控制传入的时候,我目前发现的就有以下2个地方十分的需要注意 1.字段顺序! 在我们看来,自定义表变量,就当时一个普通的表进行使用,赋值,写插入,直接insert select 就完事了~但是,如果写在存储过程的传入参数里面,确不一定

关于SQL Server中修改“用户自定义表类型”的问题

本文出处:http://www.cnblogs.com/wy123/p/7282682.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) SQL Server开发过程中,为了传入数据集类型的变量(比如接受C#中的DataTable类型变量),需要定义“用户自定义表类型”,通过“用户自定义表类型”可以接收二维数据集作为参数,在需要修改“用户自定义表类型”的时候,增加字段,删除字段,修改字段类型等,它没有像表一样

MySQL表类型MyISAM/InnoDB的区别(解决事务不回滚的问题)(转)

MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键.如果事物回滚将造成不完全回滚,不具有原子性.如果执行大量的SELECT,MyISAM是更好的选择. InnoDB:这种类型是事务安全的.它与BDB类

mysql修改表类型(1064错误)

本想将表类型修改为MyISAM,却报错了,如下图: 出错原因: 由于MYSQL查询语句写法 TYPE=MyISAM 太老了,在MYSQL 5.5上已经被禁用 使用sql语句: alter table product  ENGINE = MyISAM:#(用ENGINE = MyISAM代替TYPE=MyISAM,修改成功了)

WITH (UPDLOCK,HOLDLOCK)提示与不同表类型

WITH (UPDLOCK,HOLDLOCK)提示与不同表类型 我们先来了解下UPDLOCK和HOLDLOCK的概念. UPDLOCK 指定采用更新锁并保持到事务完成. UPDLOCK 仅对行级别或页级别的读操作采用更新锁. 如果将 UPDLOCK 与 TABLOCK 组合使用或出于一些其他原因采用表级锁,将采用排他 (X) 锁. HOLDLOCK 等价于SERIALIZABLE.保持共享锁直到事务完成,使共享锁更具有限制性:而不是无论事务是否完成,都在不再需要所需表或数据页时立即释放共享锁.并

Sqlserver 自定义表类型定义,使用,删除

--创建用户自定义表类型CREATE TYPE dbo.CustomerTable AS TABLE ( Id int NOT NULL, Name char(10) NULL, PRIMARY KEY (Id))---使用用户自定义表类型DECLARE @c CustomerTableINSERT INTO @c VALUES(1,'Xizhang')SELECT * FROM @c --判断自定义表是否存在IF TYPE_ID('CustomerTable') IS NOT NULL --删

MySQL表类型

MyISAM表类型: ISAM(Indexed Sequential Access Method,索引顺序存取方法),是IBM公司发展起来的一个文件操作系统,可以连续地或者任意地记录任何访问.每次索引定义了一次不同排列的记录.它是一种索引机制,用于高效访问文件中的数据行. MyISAM表是ISAM类型的一种延伸,具有很多优化和增强的特性,它是MySQL的默认表类型.MyISAM优化了压缩比例和速度,并且可以很方便的在不同的操作系统和平台之间进行移植. HEAP表类型: heap:堆,堆积,大堆阵

表类型(存储引擎)的选择

表类型(存储引擎)的选择 插件式存储引擎是MySQL数据库最重要的特性之一,用户可以依据应用的需要选择如何存储和索引数据.是否使用事务等. MySQL5.0支持的存储引擎包括MyISAM.InnoDB.BDB.MEMORY.MERGE.EXAMPLE.NDB Cluster.ARCHIVE.CSV.BLACKHOLE.FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎提供非事务安全表. 默认情况下,创建新表不指定表的存储引擎,则新表是默认存储引擎,如果需要修改,设置def

MySQL学习笔记之三 表类型

你能用的数据库引擎取决于MySQL在安装时候是如何被编译的.要添加一个新的引擎,就必须编译MySQL.仅仅为了添加一个特性而编译应用程序的想法对于Windows的开发人员来说可能有点小题大做,得不偿失,但是在Unix的世界里,这已经成为了标准.在缺省的情况下,MySQL支持三个引擎:ISAM.MyISAM和HEAP.另外两种类型InnoDB和Berkley(BDB),也常常可以使用. ISAM ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之初就考虑到数据库被查询的次数远远大于

Redis学习笔记09Redis数据类型之(2) 哈希表类型

1.1.1. hset 向hash中添加键值对. 语法: HSET key field value 参数: key :键名称,键值为一个hash表对象. field:hash表中的键名. value:hash表中的键值. 返回值: 整数:1,成功添加了一个原来不存在的新的键对应的键值对. 0,成功的更新了一个原来存在的键对应的键值对. ERROR:key对应的对象存在,但是并不是哈希表类型. 例子: redis.coe2coe.me:6379> hset myhash  host redis.c