使用自定义表类型(SQL Server 2008)
使用自定义表类型(SQL Server 2008)
http://tech.ddvip.com 2009年09月19日 来源:博客园 作者:陈希章
在 SQL Server 2008 中,用户定义表类型是指用户所定义的表示表结构定义的类型。您可以使用用户定义表类型为存储过程或函数声明表值参数,或者声明您要在批处理中或在存储过程或函数的主体中使用的表变量。有关如何定义表结构的详细信息,请参阅 CREATE TABLE (Transact-SQL)。
若要创建用户定义表类型,请使用 CREATE TYPE 语句。为了确保用户定义表类型的数据满足特定要求,您可以对用户定义表类型创建唯一约束和主键。
有关与用户定义类型相关联的目录视图的信息,请参阅 sys.types 和 sys.table_types。
限制
用户定义表类型具有下列限制:
用户定义表类型不能用作表中的列或结构化用户定义类型中的字段。
基于用户定义表类型的别名类型
[NOT FOR REPLICATION] 选项是不允许的。
CHECK 约束要求保留计算列。
计算列的主键必须是 PERSISTED 和 NOT NULL。
无法对用户定义表类型创建非聚集索引,除非该索引是对用户定义表类型创建 PRIMARY KEY 或 UNIQUE 约束的结果。(SQL Server 使用索引强制实施任何 UNIQUE 或 PRIMARY KEY 约束。)
不能在用户定义表类型的定义中指定 DEFAULT 值。
在创建用户定义表类型定义后不能对其进行修改。
不能在用户定义表类型的计算列的定义中调用用户定义函数。
安全性
用户定义表类型的权限通过使用下列 Transact-SQL 关键字来遵循 SQL Server 的对象安全模式:CREATE、GRANT、DENY、ALTER、CONTROL、TAKE OWNERSHIP、REFERENCES、EXECUTE、VIEW DEFINITION 和 REVOKE。
下面我用一个实例来讲解一下
-- ================================
-- 创建和使用自定义表类型
-- 陈希章
-- ================================
USE master
GO
-- ================================
-- 创建测试数据库
-- ================================
CREATE DATABASE demo
GO
-- ================================
-- 创建一个表
-- ================================
USE demo
GO
CREATE TABLE Customers
(
Id int NOT NULL,
Name char(10) NULL,
PRIMARY KEY (Id)
)
GO
USE d
相关文档:
SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SQL UNION 语法
SELECT column_name(s) from table_name1
UNION
SELECT column_name(s) from table_na ......
select * from tt t inner loop join ss s with(nolock) on s.c=t.c
使用 nested join
select * from tt t inner merge join ss s with(nolock) on s.c=t.c
使用 merge join
select * from tt t inner hash join ss s with(nolock) on s.c=t.c
使用 hash jion
&n ......
SQL注入是最常见的攻击方式之一,它不是利用操作系统或其它系统的漏洞来实现攻击的,而是程序员因为没有做好判断,被不法
用户钻了SQL的空子,下面我们先来看下什么是SQL注入:
比如在一个登陆界面,要求用户输入用户名和密码:
& ......
转自: http://hi.baidu.com/beanchx/blog/item/ed056509d66f65cc3bc763f4.html
p6spy的替代品:jdbc logger
2007年09月13日 下午 01:07
首先介绍一下这个开源的项目。这个是一个对jdbc中的sql进行logger的一个工具。若在项目中采用了较多的preparedStatement,那么打印出来的sql会有很多"?",非常不方便。有一个产品为p ......
sql日期函数(转)
[ 2007-8-23 16:33:00 | By: 步 ]1.一个月第一天的
Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
2.本周的星期一
Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
3.一年的第一天
Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
4.季度的第一天
Select DATEADD(qq, DATEDIFF(qq,0,getdat ......