[T-SQL]从变量与数据类型说起
1.变量
学习计算机语言,难免不碰到这个名词,不过咱这里说的是MSSQL(微软SQL Server产品)里的数据库语言实现。
稍微对程序比较严谨的语言都要求使用之前都要声明变量先,比如c.c++,java,c#之类,T-SQL也没有例外。
可以试验下:
SELECT @hello
会有如下类似错误信息:
[Err] 42000 - [SQL Server]必须声明标量变量 "@hello"。
声明变量使用如下关键字:DECLARE(不区分大小写的)
声明变量需要使用类型,因为“我”要知道你这玩意到底是整数还是日期还是字符串,我该给你分配多少字节空间啊。
2.数据类型
数据类型就是之前提到的整型,字符之类的类别。
我们的格式是:
DECLARE 变量名 类型
我这里约定下,关键字和类型等用大写,变量名小写,你可以不这样子,但希望你遵守“我们学堂”的规范,呵呵。
先说下,TSQL这孩子变量分好多哇,跟其他语言差不多(其他语言有,局部变量,全局变量之类的,俺可没搞什么大的特殊)
这里先用局部变量(Local Variant),T-SQL局部变量是@后接变量名字,
DECLARE @hello VARCHAR(30)
俺可以一次声明多个呢,
DECLARE @i INT,
@j INT
当然了声明后,俺们的值是个NULL(注意不是'NULL'字符串哦)
SELECT @i 您看看吧
你坑我啊,光个NULL怎么用,别急,我们看看怎么给他们赋值,不会和其他语言一样直接用赋值运算符=吧,对头不过语法稍微区别下
3.赋值
- SET @i=123
这次看看吧SELECT @i
当然SET也可以用SELECT代替。
稍微来点复杂的:
--=====================
--计算面积@area=@m*@n
--=====================
- DECLARE @m INT,
- @n INT,
- @area INT
- SET @m=12
- SET @n=5
- SET @area=@m*@n
- SELECT @area
赋值也可以是sql执行的结果:
- USE pubs
- GO
- DECLARE @count INT
- SET @count=(SELECT COUNT(*) FROM authors)
- SELECT @count
- GO
变量也可以用在sql里,比如下面:
- USE pubs
- GO
- DECLARE @city CHAR(20)
- SET @city='Oakland'
- SELECT RTRIM(au_fname) + ' ' + RTRIM(au_lname) AS Name
- FROM authors
- WHERE city = @city
- GO
4.流程控制
分支条件语句这个太常见了,顺序、分支和重复(循环)是结构化程序设计的3个流程,不得不说。
我们看看T-SQL里的条件语句怎么写,关键字IF不多说了。
如下:
- DECLARE @i INT
- SET @i=123
- IF @i>0 (SELECT 'positive')
一条语句可以这么干,多条语句块怎么整呢,别着急,BEGIN...END啊,(如果没在一些语言里见过,c类似的里面的{}总该行了吧)
- DECLARE @i INT
- SET @i=123
- IF @i>0
- BEGIN
- SELECT 'positive'
- SELECT 'not negative'
- END
- ELSE
- SELECT 'OMG'
没错ELSE也支持的。
也可以嵌套。
循环LOOP
使用关键字WHILE
- DECLARE @i INT
- SET @i=0
- WHILE @i<10
- BEGIN
- SET @i=@i+1
- PRINT '@i='+CAST(@i AS CHAR)
- END
while也可以嵌套。
5.附录:数据类型总结
比特bit:取值0,1和NULL
整型:
tinyint:取值0-255,存储大小1个字节
smallint:2个字节,-32768~+32767
int:4个字节
bigint:8个字节
以下来自文档:
decimal 和 numeric
从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。
功能上等同于 decimal。
money 和 smallmoney
货币数据值介于 -2^63 (-922,337,203,685,477.5808) 与 2^63 - 1 (+922,337,203,685,477.5807) 之间,精确到货币单位的千分之十。
货币数据值介于 -214,748.3648 与 +214,748.3647 之间,精确到货币单位的千分之十。
近似数字
从 -1.79E + 308 到 1.79E + 308 的浮点精度数字。
从 -3.40E + 38 到 3.40E + 38 的浮点精度数字。
datetime 和 smalldatetime
从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到百分之三秒(或 3.33 毫秒)。
从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,精确到分钟。
字符串
固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。
可变长度的非 Unicode 数据,最长为 8,000 个字符。
可变长度的非 Unicode 数据,最大长度为 2^31 - 1 (2,147,483,647) 个字符。
Unicode 字符串
固定长度的 Unicode 数据,最大长度为 4,000 个字符。
可变长度 Unicode 数据,其最大长度为 4,000 字符。sysname 是系统提供用户定义的数据类型,在功能上等同于nvarchar(128),用于引用数据库对象名。
可变长度 Unicode 数据,其最大长度为 2^30 - 1 (1,073,741,823) 个字符。
二进制字符串
固定长度的二进制数据,其最大长度为 8,000 个字节。
可变长度的二进制数据,其最大长度为 8,000 个字节。
可变长度的二进制数据,其最大长度为 2^31 - 1 (2,147,483,647) 个字节。
其它数据类型
游标的引用。
一种存储 SQL Server 支持的各种数据类型(text、ntext、timestamp 和 sql_variant 除外)值的数据类型。
一种特殊的数据类型,存储供以后处理的结果集。
数据库范围的唯一数字,每次更新行时也进行更新。
全局唯一标识符 (GUID)。
转载自:http://xcf007.blog.51cto.com/471707/833008
[T-SQL]从变量与数据类型说起的更多相关文章
- PL/SQL之--变量
一.PL/SQL 简介 PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL).PL/SQL是oracle对sql语句的一种扩展,在普通SQL语句的使用上 ...
- SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型
原文:SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server ...
- SQL SERVER 变量的使用和样例
定义和使用局部变量:说明: 局部变量是用户可自定义的变量. 作用范围仅在程序内部. 局部变量的名称是用户自定义的,命名的局部变量名要符合SQL Server 2000标识符命名规则=>以@开 在 ...
- Sql Server 支持的数据类型
T-SQL语言和SQLServer数据库中的数据通常需要定义一个数据类型,数据类型定义了对象可以容纳的数据的种类. 哪些对象需要数据类型 (1).表和视图的列: 在定义 ...
- SSIS 数据类型 第二篇:变量的数据类型
变量(Variable)用于存储在Package运行时用到的值,集成服务支持两种类型的变量:用户自定义的变量和系统变量,自定义的变量由用户来定义,系统变量由集成服务来定义. 变量的用途十分广泛,用于容 ...
- [C语言入门笔记]变量与数据类型
变量与数据类型 什么是变量? 变量是一个变化的量 是内存中的一个空间 变量的定义方法是什么? 数据类型 变量名 = 值; 数据类型有哪些? 整型int 浮点型float double 字符型char ...
- JS魔法堂:函数重载 之 获取变量的数据类型
Brief 有时我们需要根据入参的数据类型来决定调用哪个函数实现,就是说所谓的函数重载(function overloading).因为JS没有内置函数重载的特性,正好给机会我们思考和实现一套这样的机 ...
- Python变量、数据类型6
1.Python变量 变量,即代表某个value的名字. 变量的值存储在内存中,这意味着在创建变量时会在内存中开辟一个空间. !!!即值并没有保存在变量中,它们保存在计算机内存的深处,被变量引用.所以 ...
- SQL 表变量和临时表
SQL 表变量和临时表 表变量:存储在内存中,作用域是脚本的执行过程中,脚本执行完毕之后就会释放内存,适合短时间内存储数据量小的数据集. 优点:使用灵活,使用完之后立即释放,不占用物理存储空间 缺点: ...
- JS代码放置位置、变量与数据类型、运算符与逻辑表达运算符
内容简要: 1.JS代码放置位置的问题: 2.变量与数据类型: 3.运算符与逻辑表达式的运算符 我的位置 全局问题:为何在网页推荐位置(一般在<head></head>内部 ...
随机推荐
- c语言位运算符
C语言既具有高级语言的特点,又具有低级语言的功能. 所谓位运算是指进行二进制位的运算. C语言提供的位运算: 运算符 含义 & 按位与 | 按位或 ∧ 按位异或 ∽ ...
- WinForm聊天室
前几天开始学Socket编程,跟着老师一点一点的做.最后做了一个WinForm版的小聊天室.这个聊天室的客户端和服务端都只是在本机上运行. 这里我首先和大家谈谈我对聊天室的一点理解,聊天室其实是服务端 ...
- rownum
rownum是一个伪列,oracle数据库会对查找到的数据 从1 开始递增指定每行的rownum值, 当查询条件里有 rownum时(比如 where rownum>2),数据库会依次从数据集里 ...
- php练习2——乘法表,变量的使用
目标:输出九九乘法表 程序: 结果: 目标: 程序variable01.html和variable01.php 结果:
- grub命令来引导linux
由于对linux系统的好奇,想按在机器上玩玩.昨天忙活了一晚上,最终才把linux安装好.但高兴的有点太早了,我还以为进linux就像进 windows那么简单哪,没有想到却蹦出来一个引导命令(gru ...
- MVC + JQUERY + AJAX
- UIStackView 简单使用
UIStackView提供了一个高效的接口用于平铺一行或一列的视图组合.对于嵌入到StackView的视图,你不用再添加自动布局的约束了.Stack View管理这些子视图的布局,并帮你自动布局约束. ...
- UML类图的6中关系
引用自: http://blog.csdn.net/tianhai110/article/details/6339565 UML类图分为如下四种关系: 1. 泛化 (Generalization) ...
- BZOJ 1231: [Usaco2008 Nov]mixup2 混乱的奶牛
Description 混乱的奶牛 [Don Piele, 2007] Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S ...
- Android-x86虚拟机安装配置全攻略
转自Android-x86虚拟机安装配置全攻略 注:这里安装从简,具体请参考虚拟机Vmware安装运行安卓4.0详细教程 Android-x86虚拟机安装配置网上有很多,但是全部说明白的确不多,希望这 ...