T-SQL编程与高级查询

3.1   T-SQL  简介

  T-SQL(Transact-SQL)是Microsoft公司在关系型数据库管理系统 SQL Server中的SQL--3标准的实行,是微软对SQL的扩展,具有SQL的主要特点,同时增加了变量,运算符、函数、流程控制和释放等语言元素,使用其功能更加强大。

  T-SQL对SQL Server 十分重要,SQL Server 中使用图形界面能够完成的所有功能,都可以利用T-SQL 来实现。使用T-SQL操作时,与SQL server通用的所以应用程序都通过向服务器发送T-SQL语句来进行,而与应用程序的界面无关。

  在第一章中,我们学习了使用SQL语句实现数据库,其中包括了建库、建表建约束和SQL server安全管理中创建登陆账号、数据库用户、授权等,其实这些语句都属于T-SQL语句。在使用T-SQL语句删除数据库、删除表时,我们还可以使用了IF语句先判断数据库、表是否存在。这里的IF语句也将是本章要介绍的一个知识点。

  T-SQL语句的分类如下所示。

  1.变量声明。T-SQL语句中可以使用两种类型的变量,局部变量和全局变量。

  2.数据定义语言(Date Definition Language,DDL),用来建立数据库及数据库对象,绝大部分以CREATE开头,如CREATE TABLE等。

  3.数据控制语言 (Data Control Languaage,DCL),用来控制数据库组件的存取许可、权限等命令。

  4.数据库操作语言 (Data Control Languaage,DML),用来操作数据库中数据的命令,如SELECT、UPDATE等。

  5.流程控制语言 (Flow Control Language,FCL),用于控制应用程序流程语句,如IF、CASE等。

3-2 T-SQL中的注释

  注释时程序代码中不执行的文本字符串。在程序中加入注释说明,使程序容易维护。注释中的所有内容不会被执行,因此可以在注释中编写有关程序内容的说明,使程序变得易读。

  在SQL SERVER中有两种编写注释的方式。

  1.嵌行类的注释语句

  a.可以用两个连字符(--)b./*..........*/

3-3  T-SQL中的批处理

  批处理是指包含一条或多条T-SQL语句的语句组,这组语句从应用程序一次性地发送到 SQL Server服务器执行。SQL Server服务器批处理语句编译成一个科执行单元,这种单元称为执行单元。

批处理实例:

INSERT INTO CcardInfo values('023-001','123456',50,2013-05-10,10:00:00)
select * from cardInfo
go

3.4 局部变量

  1.声明 T-SQL局部变量

语法:

DECLARE{@变量名 数据类型 [,...n]}

 

实例:

DECLARE @mycounter int

2. 为T-SQL局部变量赋值
  第一次声明变量时,其值设置为NULL。若要为局部变量赋值,有两种方法:使用set语句和使用select语句。

语法:

set @变量名 =--实例

 /*声明三个局部变量:@name、@row_count、@year*/
declare @name ncarchar(20),@row_count int,@year int

/*使用set语句为局部变量赋值*/ set @name="张三" --将查询语句返回的值赋值给row_count
set @row_count=(select count(*) from cardInfo) --调用系统函数,将YEAR()函数返回的值赋值给@year
set @year=year(GETDATE()) -- @row_count 变量自增 SET @row_count=row_count +1

3.6 T-SQL的流程控制:
  T-SQL 提供称为控制流的特殊关键字,用于控制T-SQL语句、语句块和存储过程的执行流。

  1.if......else语句的语句法形式为:

if(条件语句)
    语句或语句块
else
    语句或语句块


--实例

if(条件语句)
    begin
        ....语句
      end
else
    begin
        ...语句
    end


2. WHILE语句:

  while 语句通过布尔表达式来设置一个条件,当这个条件成立时,重复执行一个语句或语句块,重复执行部分为循环体。

  while语句的语法:

while 布尔表达式
    {语句或语句块 }
        [break]
    {语句或语句块 }
        [continue]
    {语句或语句块 }

  3.使用子查询

  子查询是嵌套在select、insert、update、和delect语句或其他子查询中的查询,例如包含在select语句的where 子句和having子句中的select语句。子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择。

  子查询可以把一个复杂的查询分解成一些系列的逻辑步骤。当一个查询依赖于另一个查询时,子查询会很有用。常用的子查询有:

  a.使用比较运算符(=、<>、>、>=、<、!>、!<或<=)的子查询

  b,in和not in 子查询

  c.exists和not exists 子查询

3.7.1 使用比较运算符的子查询

  由一个比较运算符(=、<>、>、>=、<、!>、!<或<=)引用的子查询就称为使用比较运算符的子查询。

  使用运算符的实例:

declare @cardid int
select @cardid=cardid from cardinfo where cardnumber='023-002'
select * from recordinfo
        where datediff(month,endtime,GETDATE())=0 ANO cardid=@cardid
go

3.7.2 EXISTS和NOT EXISTS子查询
  使用 EXISTS 关键字引入一个子查询时,就相当于进行一次存在测试。外部查询的where子句测试子查询返回的行是否存在。

  使用EXISTS 引入的子查询的语句:

WHERE[NOT] EXISTS(子查询)

 

 

 

 

  

posted @ 2013-05-11 21:41  IT之行 始于足下  阅读(211)  评论(0编辑  收藏  举报