快期末了,现在开始整理关于SQL Server的知识,主要还是Transact-SQL语法的问题,一天整理一点 :-)
Transact-SQL 程序设计
创建自定义用户类型
-- 创建自定义数据类型为test_add的数据类型
exec sp_addtype test_add, 'VARCHAR(10)','NOT NULL'
常量和变量
常量:表示特定数据值的符号,格式取决于其数据类型。
字符串和二进制常量
若字符串中包含单引号,则单引号需使用两个单引号来表示。
print 'hello '' world'
-- hello ' world
日期时间型常量
datatime常量使用特定格式的字符日期值表示,用单引号括起来。
数值常量
整型常量
由没有引号括起来,不含小数点的一串数字表示。
浮点常量
主要使用科学计数法表示,101.5E5,0.5E-2
货币常量
以’$’为前缀的一个整型或者实型常量数据,不需要单引号.
空值
空值可以表示整型,实型,字符型数据。
变量
变量用于存放临时数据,变量中的数据随程序的运行而变化,变量有名称和数据类型两个属性。
使用@开头为局部变量
使用@@开头为全局变量
局部变量
- DECLARE @NAME VARCHAR(30),@type int
- 使用SELECT 和 print显示
- 使用SELECT,UPDATE,SET进行赋值
declare @int_var int ;
select @int_var = 12;
select @int_var;
-- 12
从表中获取数据
DECLARE @customer VARCHAR(40), @cur_date DATETIME;
SELECT @customer = customer_name,@cur_date = GETDATE()
FROM customer
WHERE customer_id = 'C0002';
SELECT @customer;
SELECT @cur_date;
-- 北京泛亚实业公司
-- 2016-06-06 16:22:30.683
使用SET或者UPDATE(不推荐)同样可以给局部变量赋值
DECLARE @rows FLOAT
SET @rows = (SELECT COUNT(*) from employee)
SELECT @rows;
-- 5
全局变量
用于跟踪特定回话期间的信息,不能显示的被赋值和声明
全局变量不能由用户定义,只能有系统提供
简单介绍几个全局变量
- @@rowcount, 存储前一条命令影响到的记录总数,伴随每一条SQL语句发生变化
- @@error, 如果结果非0,则发生错误,伴随每一条SQL语句发生变化
- @@spid,返回当前用户进程的ID
- @@identity,返回语句产生的最后一个identity值
运算符和表达式
这里跟高级语言差不多,不在一一介绍了。
重点介绍下部分逻辑运算符
重点逻辑运算符
- LIKE 如果操作数与一种模式相匹配,那么返回true
- IN 如果操作数等于表达式列表的一个,那么返回true
- ALL 如果一系列比较都为true,那么值为true
- BETWEEN 如果操作数在某个范围内,那么值为true
- EXIST 如果子查询包含一些行,那么值为true
LIKE 通配符
符号 | 描述 |
---|---|
% | 包含0个或多个任意字符串 |
_ | 对应任何单个字符 |
[ ] | 指定范围a-f,或任意集合 |
[^] | 不属于任何指定范围或集合 |
连接运算符+
进行连接字符串操作。