• 优化MySchool数据库(三)


    使用T_SQL 编写业务逻辑:

    如何定义及使用“变量”:

     ---- 让电脑帮我记住一个名字(王二)

     C#:

    string   name ;    【定义一个变量】

    name = "王二" ;  【变量赋值】

    MessageBox.Show(name);  【输出】

     

    T_SQL:(完全颠覆原有语法)

    declare  @name varchar(20)  【定义一个变量】

    set @name  = '王二'                  【变量赋值】

    print  @name                              【输出】

    注意:

           1、当定义多个变量时,可以使用一个declare ,多个变量之间使用 “,”分割;

           2、当需要给多个变量同时赋值时,可以使用“Select” 替换“set”;

           3、以@开头是“自定义变量” ,以@@ 开头是“全局变量”(系统变量),全局变量用于公示系统内部运行过程中各种运行信息;

                  ---- 用户不能定义及修改“全局变量”,是能读取!  

     

    常用全局变量:

          @@ERROR------记录每次执行SQL语句后的结果,如果正常执行,结果为“0”,否则返回各种“错误号”

          @@IDENTITY ----记录最后一次在“带有标示列”的表单插入数据后,所获得“自增长数据”

     

    Select 字句的用法:

    --1、用于进行数据表单【查询】

    select loginPwd from [Admin]

    --2、变量赋值【赋值】

    declare @password varchar(50)

    select @password = '99999'

    --3、查询并赋值(确保只查询到一个值)【查询赋值】

    declare @pwd varchar(50)

    select @pwd = loginPwd from [Admin] where LoginId = '王二'

    --4、输出结果集【拼接结果集】

    select '王二' as StuName ,23 as StuAge,'男' as StuSex  union

    select '李丽',20,'女'  union

    select '赵军',23,'男'

     

    注意:

             1、结果集,可以不来自表单,而是通过Select直接拼接

             2、select * from ,from后面可以不仅仅表名,也可以是一个“结果集”

     

    使用set 与  Select 都可以进行变量赋值,但是有区别:

     set

    select

    set一次只能给一个变量赋值

    Select一次可以给多个变量赋值

    set赋值时,得到超过一个结果时,

    报错

    select 赋值时,得到超过一个结果时,

    自动保留最后一个值

    set赋值出错时,原有数据丢失!

    select 赋值失败时,保留原有数据!

     

    如何将一个“结果集”保存下来?

          ------ 表变量、临时表

     1、表变量

    定义

    declare @temptable Table(name varchar(20) ,age int ,sex nchar(1)) 

    赋值

        A:insert into @temptable  values('王军',20,'男')   ---- 单个赋值

        B:insert into @temptable  select查询语句          ---- 多个赋值

        B_例子:

     insert into @temptable  select '王军',20,'男' union

    insert into @temptable  select '李军',20,'男'

    取值

        与普通表单的访问方式一致.

     

    2、临时表

    定义

         create  table  #表名(......)

    赋值

         与普通表单操作一致

    取值

         与普通表单操作一致

     表变量

    临时表

    语法:

    declare @变量名    Table(列定义)

     

    create  Table  #表名(列定义)

    工作原理:

    数据存放在“内存中”;

    只能定义后立刻使用(在一个Go之中),使用自动释放

     

    数据保存在系统数据库tempdb中(磁盘上);

    在用户的数据连接“断开前”,临时表将一直可以使用

    使用场景:

    少量结果集需要保存,且后续立刻使用

     

    较大量的临时数据,需要保存时

     

     

    使用“变量”,对数据使用,有什么影响?

            --- 减低了编写SQL业务语句的难度!可以将原来一个SQL语句做的步骤,拆分成多个SQL语句去执行,而将它们之间的数据联系,使用“变量”来保存! 

     

     

    T_SQL语句也可以使用IF 、While进行逻辑分支、循环!

              1、将原来的 “{” -----> begin

              2、将原来的“}”  ----->  end

     

     

    Case....End字句:

          1、两对半;

                      Case    <> End

                      When  <> then

                      else(落单)

          2、Case...end不能单独出现,必须“嵌入”查询或者赋值语句

          3、When 后面,只能是为true或false的表达式

          4、then 后面,数据类型统一

     

     

     

     

     

     

     

     

     

    小贴士:

            在T_SQL中的“+”,有两重含义:

                    1、当 “+”两边都是数字时,进行的“加运算”

                    2、当“+”两边都是字符时,进行的“字符连接”

                    3、当两边数据类型不一致时,需要进行类型转换

                               cast ( 变量  as   类型)

                               convert (类型 , 变量)

                               ----- 区别:convert能够进行“输出格式”的设定,往往用于“时间类型”和“带小数的类型”

  • 相关阅读:
    去掉myeclipse的预览窗口
    tomcat访问
    传值:web.xml传递参数 即在Servlet中获取web.xml里的值
    URI、URL、请求、响应、常见状态代码
    为什么使用HttpServlet?http协议特点、servlet
    HackerRank Ice Cream Parlor
    HackerRank and MiniMax
    HackerRank Extra long factorials
    Longest Increasing Common Subsequence (LICS)
    UVa 12505 Searching in sqrt(n)
  • 原文地址:https://www.cnblogs.com/why168888/p/4278770.html
Copyright © 2020-2023  润新知