T-SQL编程与高级查询

一、相关回顾

  (1)建库的语法:

        CREATE  DATABASE  <数据库名>

  (2)建表的语法:

        CREATE  TABLE  <表名> 字段名   字段数据类型  ……)

  (3)T-SQL中是怎样添加注释的:

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

  (4)T-SQL中定义变量用哪个关键字:

            declare

  (5)T-SQL中的全局变量和和局部变量的标识分别是:

            全局变量@@,局部变量@

  (6)T-SQL中用什么表示一个代码块:

            begin开始,end结束

二、T-SQL编程与高级查询

  (1)SQL批处理是一个或多个 Transact-SQL 语句的集合,由客户端一次性发送到SQL Server实例以完成执行。它表示用户提交给数据库引擎的工作单元。
        同时,服务器将批处理语句编译成一个可执行单元,此单元称为执行计划。

  (2)GO是SQL Server中批处理的分隔符

  (3)在SQL里面我们用什么输出呢?

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

      2、select:

            1、以结果集形式输出;
            2、可同时输出多个;
            3、输出的结果可以被java等应用程序直接得到;

  (4)变量的分类:

          1、局部变量:

                <1>局部变量必须以标记@作为前缀 ,如@age
                <2>局部变量的使用也是先声明,再赋值
                <3>局部变量赋值用set或select

                DECLARE   @变量名  数据类型

                例如:DECLARE @name varchar(8)
                   DECLARE @seat int

          2、全局变量:

                 <1>局部变量必须以标记@作为前缀 ,如@age
                 <2>全局变量必须以标记@ @作为前缀,如@@version
                 <3>全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值

                  赋值 SET @ 变量名 =值 或SELECT  @变量名 = 值

                  SET @name=‘张三’SELECT @name=UserName  FROM UserInfo WHERE UserId=1      

  (5)全局变量都使用两个@标志作为前缀

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

  (6)IF-ELSE语句:

    SQL中的IF-ELSE语句
    IF (条件)
        BEGIN
        语句1
        语句2
        ……
     END
    ELSE
      BEGIN
          语句1;
          语句2;
          ……
       END

  (7)WHILE循环语句:

    SQL中的WHILE语句
    WHILE (条件)
        BEGIN
            语句1
            语句2
            ……
          REAK
      END

  (8)CASE-END多分支语句:

    CASE 
       WHEN 条件1 THEN  结果1
       WHEN 条件2 THEN  结果2
        ……
       ELSE 其他结果
    END

三、小结:

  (1)GO 的作用是什么?

      整体提交

  (2)流程控制语句有哪些?

      IF   WHILE

  (3)子查询:

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

         例如:SELECT * FROM stuInfo
              WHERE stuAge>( SELECT stuAge FROM  
                             stuInfo where stuName='李斯文')
            GO

    子查询的优点:一般来说,表连接都可以用子查询替换,但有的子查询却不能用表连接替换
           子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据
           表连接更适合于查看多表的数据

  (4)数据库的存在检测:

          IF EXISTS(SELECT * FROM  
               sysDatabases WHERE name=’stuDB’)
             DROP DATABASE stuDB
          CREATE DATABASE stuDB
          …….—建库代码略

  (5)EXISTS子查询的语法:IF EXISTS (子查询)语句

      备注:1、如果子查询的结果非空,即记录条数1条以上,则EXISTS (子查询)将返回真(true),否则返回假(false)
         2、EXISTS也可以作为WHERE 语句的子查询,但一般都能用IN子查询替换

  (6)合并多个表中的数据的方法有那些?

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

  (7)EXISTS子句有什么作用?

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

  (8)IN子查询有什么作用?

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

  (9)变量赋值使用SET语句或SELECT语句;输出结果print语句和SELECT语句,print语句输出方式是文本形式,select是网格形式

  (40)简单描述一下子查询可以如何划分?

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

 

 

posted on 2013-05-06 18:54  指尖生执念  阅读(585)  评论(0编辑  收藏  举报