优化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语句的编写) 索引:提高“数据 ...
随机推荐
- JS魔法堂:再识Bitwise Operation & Bitwise Shift
Brief linkFly的<JavaScript-如果...没有方法>中提及如何手写Math.round方法,各种奇技淫招看着十分过瘾,最让我惊叹的是 ~~(x + )) ,完全通过加法 ...
- Java中多态的一些简单理解
什么是多态 .面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. .多态的定义:指允许不同类的对象对同一消息做出响应.即 ...
- ASP.NET Core开发-读取配置文件Configuration
ASP.NET Core 是如何读取配置文件,今天我们来学习. ASP.NET Core的配置系统已经和之前版本的ASP.NET有所不同了,之前是依赖于System.Configuration和XML ...
- How do you install mysql-connector-python (development version) through pip?
12down votefavorite 8 http://stackoverflow.com/questions/31748278/how-do-you-install-mysql-connector ...
- expect笔记
#!/usr/bin/expect -f set ip [lindex $argv 0]; set password [lindex $argv 1]; set timeout 1 spawn ss ...
- spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)转
关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) 应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用 ...
- PDF.NET框架学习篇之SQL-MAP使用存储过程
最近一直在学习“深蓝医生”的PDF.NET框架,对Sql-Map使用存储过程有了点小小的体会.基础知识请到http://www.cnblogs.com/bluedoctor/archive/2010/ ...
- 如何在BPM中使用REST服务(1):通过程序访问网页内容
这篇文章主要描述如何通过程序来访问网页内容,这是访问REST服务的基础. 在Java中,我们可以使用HttpUrlConnection类来实现,代码如下. package http.base; imp ...
- 一款经典的jQuery kxbdMarquee 无缝滚动插件
<marquee> 曾是 IE 下独有的一个走马灯效果的标签,其他浏览器并不兼容,于是出现了使用 JavaScript 来模拟该效果的插件. 版本: jQuery v1.3.2+ 在线实例 ...
- 未来的 Web:九个不可思议的 WebGL 应用试验
WebGL 技术允许把 JavaScript 和 OpenGL ES 2.0 结合在一起,通过增加 OpenGL ES 2.0 的一个 JavaScript 绑定,WebGL 可以为 HTML5 Ca ...