T-SQL 语法
思韵闪耀
2010-10-01
0
?
一,SQL变量
?局部变量必须以“@”开头,而且必须先用DECLARE命令说明后才可使用,在Transact-SQL中不能像在一般的程序语言中一样使用“变量=变量值”来给变量赋值。必须使用SELECT或SET命令来设定变量的值,其语法如下:
?? ?SELECT@局部变量=变量值?SET @局部变量=变量值
 declare@id char(10)  select@id=‘10010001’
在Select命令查询数据时,在Select命令中直接将列值赋给变量

?? ?declare@name char(30)@wage money
?? ??? ?select@name=e_name,@wage=e_wage
?? ??? ?from employee
?? ??? ?where emp_id=’10010001′
?? ??? ?select@name as e_name,@wage as e_wage

?? ?
?? ?全局变量:全局变量不是由用户的程序定义的,它们是在服务器级定应义的。只能使用预先说明及定义的变局变量。引用全局变量时,必须以“@@”开头。局部变量的名称不能与全局变量的名称相同、否则会在应用中出错。

二、SQL流程控制命令

?? 1,if

?? ?select @x=1,@y=2, @z=3

  if@x>@y

  print‘x>y’ –打印字符串’x>y’ ? /print 代表输出到控制台

  else if@y>@z

  print’y>z’

  else print’z>y’?

?? ?2,?BEGIN…END

?? ??? ?其语法如下:

  BEGIN

  <命令行或程序块>

  END

  BEGIN…END用来设定一个程序块,将在BEGIN…END内的所有程序视为一个单元执行BEGIN…END经常在条件语句,如IF…ELSE中使用。在BEGIN…END中可嵌套另外的BEGIN…END来定义另一程序块。

3 CASE

  CASE 命令有两种语句格式:

  CASE <运算式>

  WHEN <运算式>THEN<运算式>

  …

  WHEN<运算式>THEN<运算式>

  [ELSE<运算式>]

?se pangu

  update employee

  set e_wage =

  case

  when job_level = ’1’ then e_wage*1.08

  when job_level = ’2’ then e_wage*1.07

  when job_level = ’3’ then e_wage*1.06

  else e_wage*1.05

  end

4 WHILE…CONTINUE…BREAK

  其语法如下:

  WHILE <条件表达式>

  BEGIN

  <命令行或程序块>

  [BREAK]

  [CONTINUE]

  [命令行或程序块]

  END

  WHILE 命令在设定的条件成立时会重复执行命令行或程序块。CONTINUE命令可以让程序跳过CONTINUE 命令之后的语句,回到WHILE 循环的第一行命令。BREAK 命令则让程序完全跳出循环,结束WHILE 命令的执行。WHILE 语句也可以嵌套。

5,其它命令。

?(1)PRINT

  语法如下:

  PRINT ‘any ASCII text’ | @local_variable | @@FUNCTION | string_expression

  PRINT 命令向客户端返回一个用户自定义的信息,即显示一个字符串(最长为255个字符)、局部变量或全局变量。如果变量值不是字符串的话,必须先用数据类型转换函数CONVERT(),将其转换为字符串。其中,string_expression 是可返回一个字符串的表达式。表达式的长度可以超过8000 个字符,但超过8000 的字符将不会显示。

?(2)得到日期? SELECT GETDATE()??? SELECT CONVERT(varchar(100), GETDATE(), 20) : 2009-06-27 09:24:51

6,例子.

?遍历元素

DECLARE @vcum1 char(255)
DECLARE @vcum2 char(255)
DECLARE @vcum3 char(255)

DECLARE? cs1 CURSOR FOR SELECT * FROM city
OPEN cs1
FETCH cs1 INTO @vcum1, @vcum2,@vcum3
WHILE @@FETCH_STATUS = 0
BEGIN
?PRINT @vcum1
?FETCH NEXT FROM cs1 INTO @vcum1, @vcum2,@vcum3
?
END
CLOSE cs1
DEALLOCATE cs1注意:null是个非常特殊的值,什么值与null的运算结果都是null,常常导致语句错误。所以在设计库表结构时,常常设置default值,避免null的出现。但这样会增大数据文件的体积,浪费资源。当表中数值很稀疏时,这种浪费是非常惊人的。

判断是否等于null,不能用=null和<>null,要用 is null 和 is not null 。

设置字段值为null,可以用 update XX set YY=null。null外面不要加引号。

插入新记录用 insert XXX (YYY) values(null)。null外面不要加引号。

特别要注意null与”NULL”、”null”的区别。在SQL Server查询分析器中,null与”NULL”的显示完全相同,非常容易混淆!

【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

相关内容

将IIS设置克隆到新服务器...
将IIS设置克隆到新服务器的最佳方法是使用IIS配置文件。以下是详...
2025-06-06
SQLSERVER】批量导...
1.在Microsoft SQL Server Managemen...
2025-05-15
搭建Git服务器及本机克隆...
Git是什么?Git是目前世界上最先进的分布式版本控制系统。SVN...
2025-03-17
ubuntu环境下搭建gi...
操作环境:服务器:Ubuntu 24.04.2 LTS+git 2...
2025-03-17
SqlServer 数据库...
--查看数据库大小SELECT DB_NAME(database_...
2024-09-03
docker-compos...
1.Compose介绍 DockerCompose是一个用来定义和...
2024-04-26

热门资讯

sql中int型与varcha... sql中int转varchar或nvarchar,varchar或nvarchar转int的方法: ...
SQLSERVERAGENT ... 上的 SQLSERVERAGENT 服务启动过,然后又停止了。 (ObjectExplorer) 可...
SQL Server 中4个系... SQL Server 中4个系统数据库,Master、Model、Msdb、Tempdb 系统数据库...
SQL Server中如何设置... 对于已经建好的数据库表,是不能在SQL Server Management中可视化地修改ID为自增长...
该表已为了复制而被发布,所以... 场景:从发布库上将一数据库移到另一服务器,在对表改名时提示该表已为了复制而被发布,所以无法重命名。 ...
SQL Server 2008... SQL Server 2008 R2运行越久,占用内存会越来越大。 第一种: 有了上边的分析结果,解...
SQL Server (MSS... SQL Server (MSSQLSERVER) 启动后 自动生成文件 audittrace2022...
如果使用没有提供选项值的 Sq... 如果使用没有提供选项值的 SqlDependency,必须先调用 SqlDependency.Sta...
传递给数据库 'master'... 传递给数据库 master 中的日志扫描操作的日志扫描号无效 错误:连接数据库的时候提示:SQL S...
数据仓库SSAS+SSIS+... 数据仓库SSAS+SSIS+SSRS SSAS- 1,用ssas生成多维度,然后利用excel的da...