T-SQL基本语法(一)编程基础

T-SQL基本编程基础

目录

T-SQL基本编程基础

一、T-SQL概述

二、T-SQL编程基础

1.常见数据类型

2、表达式

1.常量

2.变量

3.运算符


一、T-SQL概述

SQL Server用于操作数据库的编程语言为Transaction-SQL,简称T-SQL。

SQL与T-SQL的区别:

SQL作为结构化查询语言,是标准的关系型数据库通用的标准语言;T-SQL是在SQL基础上扩展的SQL Server中使用的语言

二、T-SQL编程基础

每个SQL语句均由一个谓词开始,后跟一个或多个子句,每个子句都由一个关键字开始。

1.常见数据类型

(1)精确数字数据类型

  • int  存储整型数值,存储数值范围为-231 ~231-1
  • bigint  bigint比int能存储更大的数值,存储数值范围为-263 ~263-1。
  • smallint  数据类型的范围数值比int更小,在-215 ~215-1之间。
  • tinyint  数据类型的范围数值比smallint更小,存储从 0 到 255 的整型数据。
  • decimal/numeric  decimal[(p,s)]和numeric[(p,s)]这两种数据类型用于存储相同精度和范围的数据(小数点的左、右两边存储的数值位数相同),所能存储的数值范围为-1038 +1~1038-1.
      p表示指定小数点左边和右边可以存储的十进制数字的最大个数,s指定小数位数。[(p,s)]的范围为1≤p≤38,0≤s≤p。若省略s,则默认为0;若未附带p及s,则numeric表示numeric(18),只能表示整数

(2)近似数字数据类型

  • float
      存储小数点不固定的数值,存储的数值范围-922337203685477.5808 到 922337203685477.5808
  • real
      与float非常相似,存储数值范围为-214748.3647 到 214748.3647

(3)货币数据类型

  • money
  • smallmoney

(4)字符数据类型

  • char
      长度固定,最多可以定义8000个字符。如果定义一个列为char(n),则将存储n个字符。当输入少于定义的字符数时,剩余的长度将被在右边的空格填满。
  • nchar
      但最多可以定义4000个字符
  • varchar
      用于存储字母数字数据,最多可定义8000个字符。二者不同之处在于varchar的每一行可以有不同的字符数,最大字符数未定义的最大长度。例如列定义为varchar(50),则该列数据最多可以有50个字符长。然而,如果列中只存储了3个字符长的字符串,则只会使用3个字符的存储空间。如果定义列时没有指定大小,即varchar(),则其长度默认为1。
      特别,varchar(max)可以定义超过8000个字符的字符串数据类型,最多1073741824个字符。【注意不是varchar(n)】
  • nvarchar
      定义方式与varchar相似

(5)日期和时间数据类型

  • date
      仅用来存储日期,其范围从0001年1月1日到9999年12月31日。数据类型格式是YYYY-MM-DD。
  • time
      只存储基于24小时制的时间,其格式为hh:mm:ss[.nnnnnnn]。
  • datetime
      用于存储从1753年1月1日到9999年12月31日之间的任何日期和时间。datetime不仅存储日期,而且会在日期的旁边存储时间。如果只像定义为datetime的列存入日期,则会在存储的日期中加入默认的时间12:00:00。
  • datetime2
      与datetime类似,datetime2用于存储日期和时间。不同之处是,datatime2的数据类型秒的小数部分的精度更高。此外,该数据类型能存储从0001年1月1日到9999年12月31日的日期。其格式为YYYY-MM-DD hh:mm:ss[.nnnnnnn]。
  • smalldatetime
      与datetime十分相似,除了smalldatetime可存储的数值范围是从1900年1月1日到2079年6月6日。该数值范围的结束日期不是月末。

(6)二进制数据类型

  • binary
      存储固定大小的二进制个十数据,最多可存储8000字节。
      这种数据类型主要用于存储作为标记或标记组合的数据。例如存储关于客户的标记。需要了解客户是否处于活动状态(值为1)、最近一个月有无消费记录(值为2)、最后一个月的消费额是否超过1000元(值为4)或者是否按时销账(值为8)。这将向数据库中加入4个数据列。然而,若使用binary值,如果客户有一个值为1101的二进制值,那么该客户拥有的值为1+4+8,这表明客户是活动的。最后一个月的消费额超过1000元并按时销账。
  • varbinary
      与binary十分相似,但是varbinary每一行的物理列大小随存储的值而不同。varbinary(max)能存储长度超过8000个字符的数据,最多可存储2GB,可用于存储类似图像这样的数据。

(7)专用数据类型

  • bit
      该数据类型存储的值为0或1.通常用于判定真假值。
  • uniqueidentifier
      用于存储16位全局唯一标识符(UUID)。
  • XML

2、表达式

1.常量

常量的格式取决于它所表示的值的数据类型,按照值的不同数据类型,常量分为:字符串型常量、数值型常量、日期时间型常量、货币型常量。

  • 字符串型常量

字符串型常量由单引号括起来的ASCII字符组成,如:’sql server’,’数据库’

  • 数值型常量

数值型常量包括整型常量和实数型常量,如:123,1.45,0.3e-5

  • 日期时间型常量

日期时间型常量使用特定格式的字符日期值表示,如:’20090401’

  • 货币型常量

货币型常量在数值前加前缀“$”,如:$123.45

 

2.变量

变量是在程序运行期间其值可变的量,在SQL Server中,变量分为局部变量和全局变量。

  • 全局变量名称前面有两个@字符,由系统定义和维护。
  • 局部变量前面有一个@字符,由用户定义和使用。

局部变量

1.声明局部变量

使用Declare 语句来声明局部变量。语法如下:

DECALRE   @local_var1  data_type, @local_var2  data_type,……

例如:

DECLARE  @maxprice float,@pub char(12)

说明:

  • 局部变量名称的第一个字符必须是@;
  • 变量不能是text、ntext或image数据类型;
  • 所有变量在声明后均设置初值为NULL;
  • 局部变量由用户定义,仅在声明它的批处理、存储过程或者触发器中有效,因此变量的赋值语句应与变量的定义语句一起执行。

2. 给局部变量赋值

使用Set语句为变量赋值,语法格式:

   

  Set @局部变量名=表达式

使用Select语句为变量赋值,语法格式:

   

  Select @局部变量名=表达式 [,…n]

例如:

DECLARE @X INT,@Y INT

SET @X=20

SET @Y=5

SELECT @X=30,@Y=7

3.局部变量的输出

使用SELECT 语句输出变量值

    例如:

DECLARE @X INT,@Y INT

SET @X=20

SET @Y=5

SELECT @X=30,@Y=7

SELECT @x,@y,3*@x+4*@y,@x*@y,@x/@y

使用PRINT 语句输出一个字符串、局部变量或全局变量的值。

    例如:          

    PRINT @x+@y

全局变量

全局变量是SQL Server系统内部使用的变量,其作用范围是在所有程序中有效。全局变量名称前面有两个@字符,由系统定义和维护。

常见的全局变量:

@@version                 SQL Server版本信息

@@error                   上一条SQL语句报告的错误号

@@nestlevel             当前存储过程或触发器的嵌套级别

@@rowcount            上一条SQL语句处理的行数

@@servername        本地服务器名称

@@identity                最后插入的标识值

@@spid                     当前用户进程的会话id

@@fetch_status        上一条游标fetch语句的状态

@@cpu_busy            SQL Server自上次启动后的时间状态

3.运算符

赋值运算符:= 
算术运算符:+    -     *    /     %求余
比较运算符:=、>、>=、<、<=、<>不等于、!>不大于、!<不小于
逻辑运算符:NOT、AND、OR、ALL(所有)、ANY(或SOME,任意一个)、BETWEEN...AND、EXISTS(存在)、IN(在范围内)、LIKE(匹配)
字符运算符: +  实现字符串的连接
按位运算符:&(位与)、|(位或)、^(按位异或)
一元运算符:+(正)、-(负)、~(按位取反)

运算符的优先:
当一个复杂的表达式有多个运算符时,运算符优先级决定了运算的先后次序。
运算符的优先级别如下:


本篇文章部分转载自作者:水桶的魔法链接:https://www.jianshu.com/p/a7bb06705916
 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值