T_SQL 语句编程与高级查询

T-SQL为SQL 第四代编程语言它附加了第二代编程语言的特性,比如 流程控制(if-else while) 错误处理  存储过程  事物  触发器

一、T-SQL语句分类

1、数据定义语言(DDL)用来建立数据库及数据库对象 如:create打头

2、数据控制语句(DCL)用来控制数据库的一些权限

3、数据操作语句(DML) 操作数据的命令 如:select update  等

4、流程控制语句(FCL) 如:if、while 等

二、 SQL 注释和比较运算符

比较运算符:<、>、<>、>=、!>、!<、<=>、=

-- 单行注释   /* */  多行注释

三、批处理

10条插入语句   不加go批处理关键字的话   sql引擎 会一条一条处理(会影响效率)   

                  加go批处理关键字的话     sql引擎 会一次性处理(提高处理效率)

四、变量

1、全局变量

全局变量不是由用户的程序定义的,是在服务器级定义的

用户只能使用预先定义的全局变量

引用时必须以@@打头

如:

          @@ERROR         最后一个T-SQL错误的错误号
          @@IDENTITY         最后一次插入的标识值
          @@LANGUAGE         当前使用的语言的名称
          @@MAX_CONNECTIONS 可以创建的同时连接的最大数目
          @@ROWCOUNT  受上一个SQL语句影响的行数
          @@SERVERNAME         本地服务器的名称
          @@TRANSCOUNT  当前连接打开的事务数
          @@VERSION  SQL Server的版本信息

2、局部变量

声明:declare @变量名 数据类型[....n]

赋值:set @变量名 = 值 或者 select @变量名 = 值

作用域:从声明开始到遇见go或存储过程的结尾

五、输出语句

select

1、以结果集形式输出

2、可以同时输出多个

3、易被java等应用程序直接得到

print

1、  以文本形式输出
2、输出一个字符串,如果有多个变量或常量要输出,用+连接;
3、如果类型不一致,用convert函数转换;
4、输出的结果不易被java等应用程序直接得到

六、流程控制语句

1、if...else语句

语法:

if(条件表达式)

begin

  语句或语句块

end

else

begin

  语句或语句块

end

注:可以进行多重嵌套

2、case  语句
          CASE
              WHEN 条件1 THEN  结果1
              WHEN 条件2 THEN  结果2
              …… 
          ELSE 其他结果
          END

搜索case格式

case

when 布尔表达式 then 结果表达式一

[....n]

[else 结果表达式n]

end

注:有限结果集适合使用case

3、while 语句

while 布尔表达式

begin

  语句或语句块

  [break]

  语句或语句块

  [continue]

  语句或语句块

end

    注:BREAK表示退出循环,如果有多条语句,才需要BEGIN-END语句块 
  

七.子查询

1.什么是子查询
        采用子查询实现
           (1).子查询在WHERE语句中的一般用法:
           (2).SELECT … FROM 表1 WHERE 字段1 >(子查询)
           (3). 外面的查询称为父查询,括号中嵌入的查询称为子查询
           (4).UPDATE、INSERT、DELETE一起使用,语法类似于SELECT语句
           (5).将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个   

2.使用子查询替换表连接      

    采用子查询       

      (1).一般来说,表连接都可以用子查询替换,但有的子查询却不能用表连接替换         

     (2).子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据        

     (3).表连接更适合于查看多表的数据      

 3.  我们曾学习过的查询,合并多个表中的数据的方法有那些?        

       (1).联合(Union)-合并多个数据表中的行        

       (2).子查询-将一个查询包含到另一个查询中

       (3).联接-合并多个数据表中的列

4. EXISTS子句有什么作用?     

 通过在子查询中使用EXISTS子句,可以对子查询中的行是否存在进行检查。

联合(Union)-合并多个数据表中的行 子查询-将一个查询包含到另一个查询中 联接-合并多个数据表中的列 EXISTS子句:

通过在子查询中使用EXISTS子句,可以对子查询中的行是否存在进行检查。

5.IN子查询:

IN子查询后面可跟随返回多条记录的子查询,用于检测某列的值是否在某个范围。 

6.子查询划分:

使用比较运算符的子查询 IN和NOT  IN子查询 EXISTS和NOT  EXISTS子查询。 子查询若按所处位置划分,可以为子查询在WHERE关键字之后,子查询在FROM关键字之后、子查询在SELECT关键字之后。

原文地址:https://www.cnblogs.com/wdwf/p/3061862.html