sql server 基础知识(一)变量和数据类型

一、变量

1. 定义变量

DECLARE @number INT --定义一个名称为@number的变量,指定其类型为整数
DECLARE @number1 INT

2. 赋值变量

1)SET赋值

对单个变量赋值可以使用SET

set @number =1234--如果写SET @number ='XXXX'会报错,因为XXXX是字符串且无法隐式转换为数字

SET @number =DBO.FUN1(@number )--用标量值函数赋值

SET @number =(SELECT MAX(number) FROM TABLE1)--用子查询赋值

SET @number =@number1--用其它函数赋值

SET @number =@number1 * 6 + DBO.FUN1(@number )-(SELECT MAX(number) FROM TABLE1)--用表达式赋值

注:
① SET后的变量名称必须在本批次中已定义,大小写不限。
② =号后面可以写数字、字符、标量值函数、返回一行一列的子查询、其它变量、表达式等,但不能写存储过程。
③ =号后返回的数据类型必须与变量的数据相同或能隐式转换成变量的数据类型。

2)SELECT赋值

DECLARE @str1 VARCHAR
DECLARE @str2 VARCHAR

SELECT @str1 ='XYZ'

SELECT @str1 ='XYZ',@str2 ='CC'--可多个变量同时赋值

SELECT @str1 = NAME, @str2 = NAME+'X'--可以用查询的结果集对变量赋值
FROM TABLE1
WHERE NAME LIKE '%%

3. 使用变量

变量可用的地方很多,在调试函数、存储过程、查询时都会用到,只要能用表达式的地方基本上都能用变量。

DECLARE @NUMBER INT--定义变量NUMBER 

SET @NUMBER = 1--设置变量

SELECT @NUMBER --直接输出变量

SELECT DBO.FUN2(@NUMBER )--使用变量调试函数

EXEC PROC_TEST1 @NUMBER --使用变量作为存储过程的输入参数

SELECT *
FROM table1
WHERE clm1 > @NUMBER --查询中使用变量

UPDATE table1 SET clm1 =@NUMBER --更新中使用变量
WHERE COL1<>@I

二、数据类型

1. 整数

(1)int

int 的 SQL-92 同义字为 integer。
每个int存储在4个字节中,其中一个二进制位表示符号位,其它31个二进制位表示长度和大小。
可以表示-2的31次方~2的31次方-1范围内的所有整数。

(2)bigint

存储大小为 8 个字节。
数据类型用于整数值可能超过 int 数据类型支持范围的情况 。
在数据类型优先次序表中,bigint 介于 smallmoney 和 int 之间 。

(3)smallint

存储大小为 2 个字节。

(4)tinyint

存储大小为 1 字节。

2. 浮点

(1)float[(n)]

3. 字符

英文和数字占1个字节,中文占2个字节

(1)char(n)

固定长度
① 存入数据:当定义一个字段固定长度时,如果存进去数据长度小于char的长度,那么存入数据中数据所占的长度依然为定义字段长度,存入数据格式将变为存入数据加空格;
② 取数据:取出数据需要用trim()去掉多余的空格;

(2)VARCHAR(n|max)

使用比类型(char)占用更少存储空间(除了使用ROW_FORMAT=FIXED创建的MyISAM表)。
① 存入数据:如果存进去数据长度小于varchar的长度,那么存入数据中数据所占的长度为存入数据长度。
② 取数据:取出数据需要用trim()去掉多余的空格;

DECLARE @char1 char(10)
DECLARE @char2 char(10)
DECLARE @varhcar1 VARCHAR(10)
DECLARE @varhcar2 VARCHAR(10)

set @char1='sdf'
set @char2='wef'
set @varhcar1='abc'
set @varhcar2='dew'

select @char1 + @char2,len(@char1 + @char1)
select @char1 + @varhcar1,len(@char1 + @varhcar1)
select RTRIM(@char1) + @varhcar1,len(@char1 + @varhcar1)--去除右边空格再拼接
select @varhcar1 + @varhcar2,len(@varhcar1 + @varhcar2)

(3)nchar(n)
(4)nvarchar(n|max)
(5)Text

4.日期和时间

(1)DATE

存储用字符串表示的日期数据
范围:0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日)间的任意日期值。
格式为“YYYY-MM-DD”:
YYYY:表示年份的四位数字,范围为0001~9999;
MM:表示指定年份中月份的两位数字,范围为01~12;
DD:表示指定月份中某一天的两位数字,范围为01~31(最高值取决于具体月份)
 该数据类型占用3个字节的空间。

(2)TIME

以字符串形式记录一天的某个时间
范围:00:00:00.0000000~23:59:59.9999999
格式:“hh:mm:ss[.nnnnnnn]”:

(3)DATETIME

用于存储时间和日期数据
默认值:1900-01-01 00:00:00
范围:从1753年1月1日到9999年12月31日
当插入数据或在其它地方使用时,需用单引号或双引号括起来。可以使用“/”、“-”和“.”作为分隔符。该类型数据占用8个字节的空间。

(4)DATETIME2

默认格式:YYYY-MM-DD hh:mm:ss[.fractional seconds]
范围:0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日).

5.文本和图形

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝丶曦月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值