优化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语句的编写) 索引:提高“数据 ...
随机推荐
- lucene 的评分机制
lucene 的评分机制 elasticsearch是基于lucene的,所以他的评分机制也是基于lucene的.评分就是我们搜索的短语和索引中每篇文档的相关度打分. 如果没有干预评分算法的时候,每次 ...
- 基于HT for Web 3D呈现Box2DJS物理引擎
上篇我们基于HT for Web呈现了A* Search Algorithm的3D寻路效果,这篇我们将采用HT for Web 3D来呈现Box2DJS物理引擎的碰撞效果,同上篇其实Box2DJS只是 ...
- 五、BLE(下)
1.1 GATT server Service 通过走读代码, GATT Server作为一个GATT service,我是没有发现其发挥了多大功能,其负责处理的消息GATT_SERVER ...
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析
[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 场景模拟 假设由于漏存JD SKU对应的店铺信息.这时我们需要重新完全采集所有 ...
- QTableWidget控件总结<二>
QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...
- js 比较好的博客
1.0 作者:cloudgamer http://www.cnblogs.com/cloudgamer/archive/2010/04/01/ImageZoom.html
- Winform防止程序重复运行
需求:1.点击“关闭”按钮时,程序最小化到托盘,并没有退出,这时再次运行程序,不会重复运行,而是显示已运行的程序:2.支持不同目录:3.支持修改名称. 代码(不支持修改名称,不支持不同目录): usi ...
- 存储过程返回布尔值以及C#相关处理
前段时间有在数据库以及程序之间使用到布尔(bool,Boolean)值的问题. 比如在SQL中,你想判断记录是否存? 通常你会这样写: FROM [dbo].[SixSResponsiblePerso ...
- MVC _ aspx视图引擎登录及状态保持
MVC - M(Model模型层) V(View视图层) C(Control控制层) 数据访问层 界面层 业务逻辑层 WebForm 是请求访问哪一个页面,返回的是一 ...
- sqlserver中的循环遍历(普通循环和游标循环)
sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student