Transact-SQL1

开始学习SQL Server2005数据库,从T-SQL语言入手,这几天一直在看《Microsoft SQL Server 2005 T-SQL & .NET 高级编程》。以下是笔记。

字符串类型:
 char
 varchar
 varchar(max)
 text
Unicode字符串型(容纳Unicode字符,每个字符占两个字节)
 nchar
 nvarchar
 nvarchar(max)
 ntext

日期和时间型
 datetime:占8个字节,精度为3.33毫秒,覆盖日期:1753.1.1-9999.12.31
 smalldatetime:占4字节,精度为1分钟,覆盖日期:1900.1.1-2079.6.6

整形
 int:4字节(-2G~2G-1)
 smallint:2字节(-32k~32k-1)
 tinyint:1字节(0~255)
 bigint:8字节
 bit:1位(0或1)
近似数值型(精度表示有效数字位数,标度表示小数点右边的数字位数)
 real:精度最大为7
 float:精度最大为15
精确数值型
 decimal:精度最大为38
 numeric
货币型(是decimal数和小规模的real数的精度之间的折衷)
 money:8字节,存储结构和bigint相同
 smallmoney:4字节,标度最大为4,存储结构和int相同
可以再货币常量前面加上$或其他18种货币符号之一。

二进制型(用来存储比特位的字符串)
 binary
 varbinary
 varbinary(max)
 image
OPENROWSET()函数,它的BULKOLEDB提供者可以读取文件,并将文件作为一个行集加载到varbinary(max)列中。

特殊类型
 timestamp:用来表示记录版本号的二进制值。
 uniqueidentifier:16个字节的二进制值,这个值称为全局唯一标识符(globally unique identifier, GUID),GUID用NEWID函数生成。
 xml:
 sql_variant:允许单个变量、列和参数以不同的数据类型存储值。
   在内部,变量实体对象会记录两个值:1、实际值;2、描述变体的元数据:基本数据类型、最大长度、标度、精度和调整
   可以存储以下类型以外的任何数据类型:text、ntext、image、varchar(max)、nvarchar(max)、varbinary(max)、timestamp、sql_variant、任何用户自定义数据类型。
   用法上有较多的限制。
 table:存储记录集
 游标数据类型:
 用户自定义类型:(用户自定义数据类型吸引人的一个方面是:在数据库中通过一个步骤就可以修改它们)
  exec sp_addtype Phone,varchar(20),'not null'
  新数据类型可以基于除了timestamp之外的任何系统定义类型。

3.4 变量
 3.4.1 局部变量
 局部变量的作用域是一个批处理
 1、变量声明
  declare @LastName varchar(50),
       @FirstName varchar(30);
  基于用户自定义的数据类型定义变量:
   exec sp_addtype phone,int,‘not null’;
   declare @OfficePhone phone;
 2、用Select语句赋值
  Select @LastName = 'Smith';
 3、用Set语句赋值
  Set @LastName = 'Johnson';
  用Set语句更可取,因为它使代码更可读,而且减少了出错的机率(同时给一个变量赋值并返回结果集)。
  用Set语句只有一个问题,不能用一个语句赋多个值。
 4、在Update语句中赋值(这个语句用来解决需要同时读取和更新一列时的并发问题)
  Update Inventory
  Set @mnsCost = Cost = Cost *fltTaxRate
  where Inventory = @intInventoryId;
 5、显示变量的值
  可以通过Select语句或Print语句显示给用户
   Select @LastName;
   Print @FirstName;
  在返回给用户的结果集中可以包括一个局部变量:
   Select  make “Selected make”
       Model  “Selected Model”
       @Model  “Original model”
   from Equipment
   where EqId = 2;
 3.4.2 全局变量
 全局变量构成一种特殊的变量类型,它们中的值由服务器负责维护。全局变量名称面前要加前缀@@。
 1、@@identity
  每个表有一列可以定义为Identity列,服务器会自动在这一列中产生一个唯一值。
  只插入一个记录,并向调用者返回这个记录的新键。
 2、@@error
  在每个T-SQL语句后面,服务器会将该变量的值设置为一个整数值:
   0:如果语句失败。
   错误号:如果语句失败。
 3、@@rowcount
  在每个T-SQL语句后面,服务器将这个变量的值设置为受它影响的记录的总数。它用于验证选中的操作是否成功
  有些语句(像if语句)会将@@rowcount设置为0,而有些语句(像declare语句)不会影响它。
  更新单个记录时,如果where子句指定了一个没有限定任何记录的条件,则SQL Server不会报错,若SQL Server不会更新任何内容,你可能认为操作已经成功,可以用@@rowcount来识别这种情况。

 

 

笔记对应的代码:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值