Loading

优化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能够进行“输出格式”的设定,往往用于“时间类型”和“带小数的类型”

posted @ 2015-02-07 14:20  浩友  阅读(141)  评论(0编辑  收藏  举报