优化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能够进行“输出格式”的设定,往往用于“时间类型”和“带小数的类型”
优化MySchool数据库(三)的更多相关文章
- 优化MySchool数据库设计之【巅峰对决】
优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...
- 优化MySchool数据库(二)
优化School数据库(TSQL建库建表建约束) 使用T_sql代码建库.建表.建约束: 建库: Create database HotelManagerSystem on ( ---- 数据文件-- ...
- 优化MySchool数据库(一)
<优化MyShcool数据库>:能够的独立的分析|设计|创建|运营|你的独立的数据库系统 设计--->实现--->TSQL--->查询优化---->性能优化技术-- ...
- 优化MySchool数据库设计总结
数据库的设计 一:什么是数据库设计? 数据库设计就是将数据库中的数据实体以及这些数据实体之间的关系,进行规范和结构化的过程. 二:为什么要实施数据库设计? 1:良好的数据库设计可以有效的解决数据冗 ...
- 优化MySchool数据库设计
第一章 数据库的设计 1.E-R图中: 矩形:实体 椭圆:属性 菱形:关系 直线:连接实体,属性和关系 2.映射基数 一对多 多对一 多对多 3.范式: 第一范式:确保每列的原子性 第二范式:确保表中 ...
- accp7.0优化MySchool数据库设计内测笔试题总结
1) 在SQL Server 中,为数据库表建立索引能够(C ). 索引:是SQL SERVER编排数据的内部方法,是检索表中数据的直接通道 建立索引的作用:大大提高了数据库的检索速度,改善数据库性能 ...
- S2--《优化MySchool数据库设计》总结
第一章 数据库的设计 1.1 数据库设计 数据库中创建的数据库结构的种类,以及在数据实体之间建立的复杂关系是决定数据库系统效率的重要因素. 糟糕的数据库设计表现在以下两个方面: *效率低下 * ...
- 优化MySchool数据库(存储过程)
什么是“存储过程”: ---- 数据库中,用于存储“业务逻辑”的技术!(T-SQL代码当做数据一样保存到数据可) 语法 : [if exists(select * from sysobjects wh ...
- 优化MySchool数据库(事务、视图、索引)
事务.视图.索引: 事务:当生活逻辑中的“一个步骤”,需要使用多条SQL去完成时,必须使用事务来确保其“完整性“. 视图:简化数据库结构,方便你编写SQL语句(简化SQL语句的编写) 索引:提高“数据 ...
随机推荐
- ansible入门
前言 最近看了一下ansible,挺火的一个配置管理工具,对比老大哥puppet,使用起来要简单一些,并且可以批量执行命令,对比同是python语言编写的saltstack,不需要安装客户端(基于pa ...
- 语义化HTML:p、h1-6、q、blockquote、hr、address、code、pre、var、cite、dfn和samp
一.元素语义 p标签 W3C草案: The p element represents a paragraph.W3C specification 语义化的 <p>元素 表示:文章中的段落. ...
- MVC中的默认Model绑定者DefaultModelBinder
一.题外话 接续上一篇: MVC中Action参数绑定的过程 public IModelBinder DefaultBinder { get { if (this._defaultBinder == ...
- Android SDK Manager国内更新代理
在Android SDK Manager Setting 窗口设置HTTP Proxy server和HTTP Proxy Port这个2个参数,分别设置为: HTTP Proxy server:mi ...
- C语言学习004:数组与指针
在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的
- 【Win10】在应用中使用 SQLite 数据库
在绝大多数应用中,免不了要做的一项就是设置这样的本地数据存储.简单的数据存储我们可以使用 LocalSettings 或者 IsolatedStorageFile(独立存储)等等的方式来进行本地数据存 ...
- Quartz.net使用总结
进来项目中用到了 任务调度 来实现短信发送网关,所以这里分享下 Quartz.net 的使用经验. 任务调度选用了 Quartz.net 来实现,之前用的是C#中自带的window服务安装,这次 ...
- Android存储空间不足的解决办法
安装应用时,有时会出现错误Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE,这是存储空间不足的错误,这时就只能将应用安装到SD卡,在And ...
- iOS取得AddressBook联系人信息
新建一个CContact类用于存放联系人信息,下面是该类的代码: CContact.h代码: 01 #import <Foundation/Foundation.h> 02 03 ...
- 设置Xshell中支持中文
执行echo $LANG命令输出的是当前的编码方式,执行locale命令得到系统中所有可用的编码方式.要让Xshell不显示乱码,则要将编码方式改为UTF-8. 在Xshell中[file]-> ...