• T-SQL


    变量分为:

    局部变量:
    局部变量必须以标记@作为前缀 ,如@age
    局部变量的使用也是先声明,再赋值
    全局变量:
    全局变量必须以标记@ @作为前缀,如@@version
    全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值

    声明局部变量

         DECLARE   @变量名  数据类型

    例如:

    DECLARE @name varchar(8)

    DECLARE @seat int


    赋值

       SET @变量名 =值

       SELECT  @变量名 = 值

    例如:

    SET @name=‘张三’

    SELECT @name=stuName FROM stuInfo

            WHERE stuNo=‘s25302’ (必须确保筛选出的记录只有1条 )


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

    变量

    含义

    @@ERROR

    最后一个T-SQL错误的错误号

    @@IDENTITY

    最后一次插入的标识值

    @@LANGUAGE

    当前使用的语言的名称

    @@MAX_CONNECTIONS

    可以创建的同时连接的最大数目

    @@ROWCOUNT 

    受上一个SQL语句影响的行数

    @@SERVERNAME

    本地服务器的名称

    @@TRANSCOUNT 

    当前连接打开的事务数

    @@VERSION 

    SQL Server的版本信息

     

    BEGIN…END语句相当于其他语言中的复合语句,如JAVA语言中的{ }。它用于将多条T-SQL语句封装为一个整体的语句块,即将BEGIN…END内的所有T-SQL语句视为一个单元执行。
    IF-ELSE语句
    WHILE循环语句,BREAK表示退出循环

    CASE

      WHEN 条件1 THEN  结果1

      WHEN 条件2 THEN  结果2

      ……

      ELSE 其他结果

    END


    参考语句:

    print  'ABCDE五级显示成绩如下:'

    SELECT Student_id,

       成绩= CASE 

                      WHEN Student_grade<60 THEN 'E'

                      WHEN Student_grade BETWEEN 60 AND 69 THEN 'D'

                      WHEN Student_grade BETWEEN 70 AND 79 THEN 'C'

                      WHEN Student_grade BETWEEN 80 AND 89 THEN 'B'

                      ElSE    'A'

                  END

          FROM Student_course


    总结:

    • 变量的赋值有两种方式:使用SET语句或SELECT语句。
    • 输出结果也有两种方式:print语句和SELECT语句。
    • 控制流语句提供了条件操作所需的顺序和逻辑。
    • 语句块使用BEGIN…END。
    • 批处理可以提高语句执行的效率,批处理结束的标志是“GO”。


    存储过程:

    create proc(edure) procName

      参数列表 --输入参数 按值传递

           --输出参数 按引用传递

      @参数名 数据类型 [output]

    as  

    --T-SQL编程,定义变量,流程控制

    go


    数据库事务:

    begin transaction

    rollback transaction

    commit transaction


    create[unique] [ clustered//nonclustered] index index_name
    on table_name(column_name [ASC//DESC])
    [with
    [pad_index]
    [[,] fillfactor = fillfactor]
    [[,] drop_existing]
    ]
      
    注:unique指定创建的索引是惟一索引
        clustered//nonclustered指定被创建的索引类型,聚簇还是非聚簇,二选一
        index_name指定新建索引的名字
        table_name创建索引的基表的名字
        column_name索引中包含的列的名字
        [ASC//DESC]指定某个具体的索引列是升序还是降序排序,默认为ASC升序
        pad_index、fillfactor填充因子,指定创建索引过程中个索引页的填满程度
        drop_existing 删除先前存在的与创建索引同名的聚簇或非聚簇索引


    触发器是一种特殊的存储过程:

    • 触发器定义在特定的表上,与表相关
    • 自动触发执行
    • 不能直接调用
    • 是一个事务(可回滚)

    触发器触发时:

    • 系统自动在内存中创建deleted表或inserted表
    • 只读,不允许修改,触发器执行完成后,自动删除

    inserted表:

    • 临时保存了插入或更新后的记录行
    • 可以从inserted表中检查插入的数据是否满足业务需求
    • 如果不满足,则向用户报告错误消息,并回滚插入操作

    deleted表:

    • 临时保存了删除或更新前的记录行
    • 可以从deleted表中检查被删除的数据是否满足业务需求
    • 如果不满足,则向用户报告错误消息,并回滚插入操作

    语法

    create trigger tgr_name
    on table_name
    with encrypion –加密触发器
    for update...
    as
    Transact-SQL
  • 相关阅读:
    docker
    iOS开发之抓取花瓣网json数据
    iOS与Android工程项目的简单对比
    Android与iOS的比较
    Jenkins时间和centos时间相差八小时解决方法
    MYSQL中索引里面的基数是什么意思
    使用Java写一个minio的客户端上传下载文件
    Java 使用AOP实现打印日志
    macOS使用brew安装mysql8.x
    MacOS安装homebrew报错:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
  • 原文地址:https://www.cnblogs.com/pengcc/p/4097520.html
Copyright © 2020-2023  润新知