Transact SQL
    
    
      语句功能
      
    
    
      ========================================================================
      
      
    
    
      
      
    
    
      --
    
    
      数据操作
    
    
      
      
    
    
      
      
    
    
      SELECT
    
    
    
    
      --
    
    
      从数据库表中检索数据行和列
    
    
      
      
    
    
    
    
      INSERT
    
    
    
    
      --
    
    
      向数据库表添加新数据行
    
    
      
      
    
    
    
    
      DELETE
    
    
    
    
      --
    
    
      从数据库表中删除数据行
    
    
      
      
    
    
    
    
      UPDATE
    
    
    
    
      --
    
    
      更新数据库表中的数据
    
    
      
      
    
    
      
      
    
    
      --
    
    
      数据定义
    
    
      
      
    
    
      
      
    
    
      CREATE
    
    
    
    
      TABLE
    
    
    
    
      --
    
    
      创建一个数据库表
    
    
      
      
    
    
    
    
      DROP
    
    
    
    
      TABLE
    
    
    
    
      --
    
    
      从数据库中删除表
    
    
      
      
    
    
    
    
      ALTER
    
    
    
    
      TABLE
    
    
    
    
      --
    
    
      修改数据库表结构
    
    
      
      
    
    
    
    
      CREATE
    
    
    
    
      VIEW
    
    
    
    
      --
    
    
      创建一个视图
    
    
      
      
    
    
    
    
      DROP
    
    
    
    
      VIEW
    
    
    
    
      --
    
    
      从数据库中删除视图
    
    
      
      
    
    
    
    
      CREATE
    
    
    
    
      INDEX
    
    
    
    
      --
    
    
      为数据库表创建一个索引
    
    
      
      
    
    
    
    
      DROP
    
    
    
    
      INDEX
    
    
    
    
      --
    
    
      从数据库中删除索引
    
    
      
      
    
    
    
    
      CREATE
    
    
    
    
      PROCEDURE
    
    
    
    
      --
    
    
      创建一个存储过程
    
    
      
      
    
    
    
    
      DROP
    
    
    
    
      PROCEDURE
    
    
    
    
      --
    
    
      从数据库中删除存储过程
    
    
      
      
    
    
    
    
      CREATE
    
    
    
    
      TRIGGER
    
    
    
    
      --
    
    
      创建一个触发器
    
    
      
      
    
    
    
    
      DROP
    
    
    
    
      TRIGGER
    
    
    
    
      --
    
    
      从数据库中删除触发器
    
    
      
      
    
    
    
    
      CREATE
    
    
    
    
      SCHEMA
    
    
    
    
      --
    
    
      向数据库添加一个新模式
    
    
      
      
    
    
    
    
      DROP
    
    
    
    
      SCHEMA
    
    
    
    
      --
    
    
      从数据库中删除一个模式
    
    
      
      
    
    
    
    
      CREATE
    
    
      DOMAIN
    
    
      --
    
    
      创建一个数据值域
    
    
      
      
    
    
    
    
      ALTER
    
    
      DOMAIN
    
    
      --
    
    
      改变域定义
    
    
      
      
    
    
    
    
      DROP
    
    
      DOMAIN
    
    
      --
    
    
      从数据库中删除一个域
    
    
      
      
    
    
      
      
    
    
      --
    
    
      数据控制
    
    
      
      
    
    
      
      
    
    
      GRANT
    
    
    
    
      --
    
    
      授予用户访问权限
    
    
      
      
    
    
    
    
      DENY
    
    
    
    
      --
    
    
      拒绝用户访问
    
    
      
      
    
    
    
    
      REVOKE
    
    
    
    
      --
    
    
      解除用户访问权限
    
    
      
      
    
    
      
      
    
    
      --
    
    
      事务控制
    
    
      
      
    
    
      
      
    
    
      COMMIT
    
    
    
    
      --
    
    
      结束当前事务
    
    
      
      
    
    
    
    
      ROLLBACK
    
    
    
    
      --
    
    
      中止当前事务
    
    
      
      
    
    
    
    
      SET
    
    
    
    
      TRANSACTION
    
    
    
    
      --
    
    
      定义当前事务数据访问特征
    
    
      
      
    
    
      
      
    
    
      --
    
    
      程序化SQL
    
    
      
      
    
    
      
      
    
    
      DECLARE
    
    
    
    
      --
    
    
      为查询设定游标
    
    
      
      
    
    
            EXPLAN
    
    
      --
    
    
      为查询描述数据访问计划
    
    
      
      
    
    
    
    
      OPEN
    
    
    
    
      --
    
    
      检索查询结果打开一个游标
    
    
      
      
    
    
    
    
      FETCH
    
    
    
    
      --
    
    
      检索一行查询结果
    
    
      
      
    
    
    
    
      CLOSE
    
    
    
    
      --
    
    
      关闭游标
    
    
      
      
    
    
    
    
      PREPARE
    
    
    
    
      --
    
    
      为动态执行准备SQL语句
    
    
      
      
    
    
    
    
      EXECUTE
    
    
    
    
      --
    
    
      动态地执行SQL语句
    
    
      
      
    
    
            DESCRIBE
    
    
      --
    
    
      描述准备好的查询  
    
    
      
      
    
    
      
      
    
    
      --
    
    
      -局部变量
    
    
      
      
    
    
      
      
    
    
      declare
    
    
    
    
      @id
    
    
    
    
      char
    
    
      (
    
    
      10
    
    
      )
      
      
    
    
      --
    
    
      set@id='10010001'
    
    
      
      
    
    
    
    
      select
    
    
    
    
      @id
    
    
    
    
      =
    
    
    
    
      '
    
    
      10010001
    
    
      '
    
    
      
      
      
      
    
    
      --
    
    
      -全局变量
    
    
      
      
    
    
      
      
    
    
      --
    
    
      -必须以@@开头  
    
    
      
      
    
    
      
      
    
    
      --
    
    
      IFELSE
    
    
      
      
    
    
      
      
    
    
      declare
    
    
    
    
      @x
    
    
    
    
      int
    
    
    
    
      @y
    
    
    
    
      int
    
    
    
    
      @z
    
    
    
    
      int
    
    
      
      
    
    
      select
    
    
    
    
      @x
    
    
    
    
      =
    
    
    
    
      1
    
    
    
    
      @y
    
    
    
    
      =
    
    
    
    
      2
    
    
    
    
      @z
    
    
      =
    
    
      3
    
    
      
      
    
    
      if
    
    
    
    
      @x
    
    
    
    
      >
    
    
    
    
      @y
    
    
      
      
    
    
      print
    
    
    
    
      '
    
    
      x>y
    
    
      '
    
    
    
    
      --
    
    
      打印字符串'x>y'
    
    
      
      
    
    
    
    
      else
    
    
    
    
      if
    
    
    
    
      @y
    
    
    
    
      >
    
    
    
    
      @z
    
    
      
      
    
    
      print
    
    
    
    
      '
    
    
      y>z
    
    
      '
    
    
      
      
    
    
      else
    
    
    
    
      print
    
    
    
    
      '
    
    
      z>y
    
    
      '
    
    
      
      
    
    
      --
    
    
      CASE
    
    
      
      
    
    
    
    
      use
    
    
      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
    
    
      
      
    
    
      --
    
    
      WHILECONTINUEBREAK
    
    
      
      
    
    
    
    
      declare
    
    
    
    
      @x
    
    
    
    
      int
    
    
    
    
      @y
    
    
    
    
      int
    
    
    
    
      @c
    
    
    
    
      int
    
    
      
      
    
    
      select
    
    
    
    
      @x
    
    
    
    
      =
    
    
    
    
      1
    
    
    
    
      @y
    
    
      =
    
    
      1
    
    
      
      
    
    
      while
    
    
    
    
      @x
    
    
    
    
      <
    
    
    
    
      3
    
    
      
      
    
    
      begin
    
    
      
      
    
    
      print
    
    
    
    
      @x
    
    
    
    
      --
    
    
      打印变量x的值
    
    
      
      
    
    
    
    
      while
    
    
    
    
      @y
    
    
    
    
      <
    
    
    
    
      3
    
    
      
      
    
    
      begin
    
    
      
      
    
    
      select
    
    
    
    
      @c
    
    
    
    
      =
    
    
    
    
      100
    
    
      *
    
    
      @x
    
    
    
    
      +
    
    
    
    
      @y
    
    
      
      
    
    
      print
    
    
    
    
      @c
    
    
    
    
      --
    
    
      打印变量c的值
    
    
      
      
    
    
    
    
      select
    
    
    
    
      @y
    
    
    
    
      =
    
    
    
    
      @y
    
    
    
    
      +
    
    
    
    
      1
    
    
      
      
    
    
      end
    
    
      
      
    
    
      select
    
    
    
    
      @x
    
    
    
    
      =
    
    
    
    
      @x
    
    
    
    
      +
    
    
    
    
      1
    
    
      
      
    
    
      select
    
    
    
    
      @y
    
    
    
    
      =
    
    
    
    
      1
    
    
      
      
    
    
      end
    
    
      
      
    
    
      --
    
    
      WAITFOR
    
    
      
      
    
    
      
      
    
    
      --
    
    
      例等待1小时2分零3秒后才执行SELECT语句
    
    
      
      
    
    
      
      
    
    
      waitfor
    
    
      delay’
    
    
      01
    
    
      :
    
    
      02
    
    
      :
    
    
      03
    
    
      ’
      
      
    
    
      select
    
    
    
    
      *
    
    
    
    
      from
    
    
      employee
      
      
      
      
    
    
      --
    
    
      例等到晚上11点零8分后才执行SELECT语句
    
    
      
      
    
    
      
      
    
    
      waitfor
    
    
      time’
    
    
      23
    
    
      :
    
    
      08
    
    
      :
    
    
      00
    
    
      ’
      
      
      
      
      
      
    
    
      SELECT
    
    
      
      
      
      
    
    
      select
    
    
    
    
      *
    
    
      (列名)
    
    
      from
    
    
      table_name(表名)
    
    
      where
    
    
      column_nameoperatorvalueex宿主)
      
      
    
    
      select
    
    
    
    
      *
    
    
    
    
      from
    
    
      stock_information
    
    
      where
    
    
      stockid
    
    
      =
    
    
    
    
      str
    
    
      (nid)
      
      
          stockname
    
    
      =
    
    
    
    
      '
    
    
      str_name
    
    
      '
    
    
      
      
          stockname
    
    
      like
    
    
    
    
      '
    
    
      %findthis%
    
    
      '
    
    
      
      
          stockname
    
    
      like
    
    
    
    
      '
    
    
      [a-zA-Z]%
    
    
      '
    
    
    
    
      --
    
    
      -------([]指定值的范围)
    
    
      
      
    
    
          stockname
    
    
      like
    
    
    
    
      '
    
    
      [^F-M]%
    
    
      '
    
    
    
    
      --
    
    
      -------(^排除指定范围)
    
    
      
      
    
    
    
    
      --
    
    
      -------只能在使用like关键字的where子句中使用通配符)
    
    
      
      
    
    
    
    
      or
    
    
      stockpath
    
    
      =
    
    
    
    
      '
    
    
      stock_path
    
    
      '
    
    
      
      
    
    
      or
    
    
      stocknumber
    
    
      <
    
    
    
    
      1000
    
    
      
      
    
    
      and
    
    
      stockindex
    
    
      =
    
    
    
    
      24
    
    
      
      
    
    
      not
    
    
      stocksex
    
    
      =
    
    
    
    
      '
    
    
      man
    
    
      '
    
    
      
      
          stocknumber
    
    
      between
    
    
    
    
      20
    
    
    
    
      and
    
    
    
    
      100
    
    
      
      
          stocknumber
    
    
      in
    
    
      (
    
    
      10
    
    
      ,
    
    
      20
    
    
      ,
    
    
      30
    
    
      )
      
      
    
    
      order
    
    
    
    
      by
    
    
      stockid
    
    
      desc
    
    
      (
    
    
      asc
    
    
      )
    
    
      --
    
    
      -------排序,desc-降序,asc-升序
    
    
      
      
    
    
    
    
      order
    
    
    
    
      by
    
    
    
    
      1
    
    
      ,
    
    
      2
    
    
    
    
      --
    
    
      -------by列号
    
    
      
      
    
    
          stockname
    
    
      =
    
    
      (
    
    
      select
    
    
      stockname
    
    
      from
    
    
      stock_information
    
    
      where
    
    
      stockid
    
    
      =
    
    
    
    
      4
    
    
      )
      
      
    
    
      --
    
    
      -------子查询
    
    
      
      
    
    
    
    
      --
    
    
      -------除非能确保内层select只返回一个行的值
    
    
      
      
    
    
    
    
      --
    
    
      -------否则应在外层where子句中用一个in限定符
    
    
      
      
    
    
    
    
      select
    
    
    
    
      distinct
    
    
      column_nameformtable_name
      
      
    
    
      --
    
    
      -------distinct指定检索独有的列值,不重复
    
    
      
      
    
    
    
    
      select
    
    
      stocknumber,"stocknumber
    
    
      +
    
    
    
    
      10
    
    
      "
    
    
      =
    
    
      stocknumber
    
    
      +
    
    
    
    
      10
    
    
    
    
      from
    
    
      table_name
      
      
    
    
      select
    
    
      stockname,"stocknumber"
    
    
      =
    
    
    
    
      count
    
    
      (
    
    
      *
    
    
      )
    
    
      from
    
    
      table_name
    
    
      group
    
    
    
    
      by
    
    
      stockname
      
      
    
    
      --
    
    
      -------groupby将表按行分组,指定列中有相同的值
    
    
      
      
    
    
    
    
      having
    
    
    
    
      count
    
    
      (
    
    
      *
    
    
      )
    
    
      =
    
    
    
    
      2
    
    
    
    
      --
    
    
      -------having选定指定的组
    
    
      
      
    
    
      
      
    
    
      select
    
    
    
    
      *
    
    
      
      
    
    
      from
    
    
      table1,table2
      
      
    
    
      where
    
    
      table1.id
    
    
      *=
    
    
      table2.id
    
    
      --
    
    
      ------左外部连接,table1中有的而table2中没有得以null表示
    
    
      
      
    
    
          table1.id
    
    
      =*
    
    
      table2.id
    
    
      --
    
    
      ------右外部连接
    
    
      
      
    
    
    
    
      select
    
    
      stockname
    
    
      from
    
    
      table1
      
      
    
    
      union
    
    
    
    
      [
    
    
      all
    
    
      ]
    
    
    
    
      --
    
    
      ------union合并查询结果集,all-保留重复行
    
    
      
      
    
    
    
    
      select
    
    
      stockname
    
    
      from
    
    
      table2 
      
      
      
      
    
    
      insert
    
    
      
      
      
      
    
    
      insert
    
    
    
    
      into
    
    
      table_name(Stock_name,Stock_number)value("xxx","xxxx"
      
      
        value(
    
    
      select
    
    
      Stockname,Stocknumber
    
    
      from
    
    
      Stock_table2)
      
      
    
    
      --
    
    
      -----value为select语句  
    
    
      
      
    
    
      
      
    
    
      update
    
    
      
      
      
      
    
    
      update
    
    
      table_name
    
    
      set
    
    
      Stockname
    
    
      =
    
    
      "xxx"
    
    
      [
    
    
      whereStockid=3
    
    
      ]
    
    
      
      
        Stockname
    
    
      =
    
    
    
    
      default
    
    
      
      
        Stockname
    
    
      =
    
    
    
    
      null
    
    
      
      
        Stocknumber
    
    
      =
    
    
      Stockname
    
    
      +
    
    
    
    
      4
    
    
      
      
      
      
    
    
      delete
    
    
      
      
      
      
    
    
      delete
    
    
    
    
      from
    
    
      table_name
    
    
      where
    
    
      Stockid
    
    
      =
    
    
    
    
      3
    
    
      
      
    
    
      truncate
    
    
      table_name
    
    
      --
    
    
      -------删除表中所有行,仍保持表的完整性
    
    
      
      
    
    
    
    
      drop
    
    
    
    
      table
    
    
      table_name
    
    
      --
    
    
      -------完全删除表 
    
    
      
      
    
    
      
      
    
    
      alter
    
    
    
    
      table
    
    
    
    
      --
    
    
      ------修改数据库表结构  
    
    
      
      
    
    
      
      
    
    
      alter
    
    
    
    
      table
    
    
    
    
      database
    
    
      .owner.table_name
    
    
      add
    
    
      column_name
    
    
      char
    
    
      (
    
    
      2
    
    
      )
    
    
      null
    
    
      
      ..
      
      
        sp_helptable_name
    
    
      --
    
    
      ------显示表已有特征
    
    
      
      
    
    
    
    
      create
    
    
    
    
      table
    
    
      table_name(name
    
    
      char
    
    
      (
    
    
      20
    
    
      ),age
    
    
      smallint
    
    
      ,lname
    
    
      varchar
    
    
      (
    
    
      30
    
    
      ))
      
      
    
    
      insert
    
    
    
    
      into
    
    
      table_name
    
    
      select
    
    
      
      
      
    
    
      --
    
    
      ------实现删除列的方法(创建新表)
    
    
      
      
    
    
    
    
      alter
    
    
    
    
      table
    
    
      table_name
    
    
      drop
    
    
    
    
      constraint
    
    
      Stockname_default
      
      
    
    
      --
    
    
      -------删除Stockname的default约束
    
    
      
      
    
    
      
      
      
      
      
      
      
      
      常用函数(
    
    
      function
    
    
      )  
      
      
      
      
      转换函数
      
      
      
      
    
    
      convert
    
    
      (数据类型,值,格式)
      
      
      
      
        统计函数
      
      
      
      
    
    
      AVG
    
    
    
    
      --
    
    
      求平均值
    
    
      
      
    
    
    
    
      COUNT
    
    
    
    
      --
    
    
      统计数目
    
    
      
      
    
    
    
    
      MAX
    
    
    
    
      --
    
    
      求最大值
    
    
      
      
    
    
    
    
      MIN
    
    
    
    
      --
    
    
      求最小值
    
    
      
      
    
    
    
    
      SUM
    
    
    
    
      --
    
    
      求和 
    
    
      
      
    
    
      
      
    
    
      AVG
    
    
      
      
      
      
    
    
      use
    
    
      pangu
      
      
    
    
      select
    
    
    
    
      avg
    
    
      (e_wage)
    
    
      as
    
    
      dept_avgWage
      
      
    
    
      from
    
    
      employee
      
      
    
    
      group
    
    
    
    
      by
    
    
      dept_id  
      
      
      
      
    
    
      MAX
    
    
      
      
      
      
    
    
      --
    
    
      求工资最高的员工姓名
    
    
      
      
    
    
    
    
      use
    
    
      pangu
      
      
    
    
      select
    
    
      e_name
      
      
    
    
      from
    
    
      employee
      
      
    
    
      where
    
    
      e_wage
    
    
      =
    
    
      
      
        (
    
    
      select
    
    
    
    
      max
    
    
      (e_wage)
      
      
    
    
      from
    
    
      employee)  
      
      
      
      
    
    
      STDEV
    
    
      ()
      
      
      
      
    
    
      --
    
    
      STDEV()函数返回表达式中所有数据的标准差
    
    
      
      
    
    
    
    
      --
    
    
      STDEVP()
    
    
      
      
    
    
    
    
      --
    
    
      STDEVP()函数返回总体标准差  
    
    
      
      
    
    
      
      
       sr 
    
  

