T-SQL 基础学习 03
局部变量 在T-SQL中,局部变量的名称必须以标记@作为前缀 语法 DECLARE @变量名数据类型 局部变量的赋值 方法一 SET @变量名 = 值 方法二 SELECT @变量名 = 值 SET和SELECT的区别 SET: 一般用于给变量指定的数据常量 SELECT: 一般用于从表中查询数据,然后再赋给变量 (筛选值记录不多于一条,多于一条,将把最后一条记录赋值给变量) SET SELECT 同时对多个变量赋值 不支持 支持 表达式返回多个值时 出错 将返回的最后一个值赋给变量 表达式未返回值时 变量被赋NULL值 变量保持原值 提示: 推荐使用SET,原因是因为SET语句没有结果集,占用资源少. 全局变量 注意 SQL Server中所有的全局变量都使用两个@标志作为前缀 全局变量 变量 含义 @@ERROR 最后一个T-SQL错误的错误号 @@IDENTITY 最后一次插入的标识值 @@LANGUAGE 当前使用的语言的名称 @@MAX_CONNECTIONS 可以创建的同时连接的最大数目 @@ROWCOUNT 受上一个SQL语句影响的行数 @@SERVERNAME 本地服务器的名称 @@SERVICENAME 该计算机上的SQL服务的名称 @@TIMETICKS 当前计算机上每刻度的微秒数 @@TRANSCOUNT 当前连接打开的事务数 @@VERSION SQL Sserver的版本信息 PRINT语句和SELECT语句 解释 用于输出显示处理的数据结果 语法 PRINT 局部变量或字符串 --输出的结果在消息窗口中以文本方式显示 SELECT局部变量 AS 自定义列名 --输出的结果将在结果窗口中以表格方式显示 注释 SELECT语句输出数据是查询语句的特殊应用 注意 使用PRINT语句要求以单个变量或字符串表达式作为参数,而”+”运算符作为连接两个字符串的连接符,要求”+”运算符两侧的操作数的数据类型必须一致 CAST()和CONVERT()函数 语法 CAST(表达式 AS 数据类型) CONVERT(数据类型[(长度)],长度[,样式]) 两种语法的区别 CAST()函数用于将某种数据类型的表达式显示转换为另一种数据类型 CONVERT()函数用于将某种数据类型的表达式显示转换为另一种数据类型 BEGIN-END逻辑控制语句 解释 BEGIN-END语句将多个T-SQL语句定义成一个语句快,把每个语句块视为一个单元处理 语法 BEGIN 语句或语句块 END 规范 BEGIN和END语句应该放置在新的一行 IF-ELSE条件语句 解释 IF-ELSE条件语句属于分支结构 语法 IF(条件) BEGIN 语句或语句块1 语句或语句块2 END ELSE BEGIN 语句或语句块3 语句或语句块4 END WHILE循环语句 解释 WHILE循环语句可以根据某些条件重复执行一条SQL语句或一个语句块 语法 WHILE(条件) BEGIN 语句或语句块 [BREAK|CONTINUE] END BREAK 将跳出当前循环,结束WHILE循环 CONTINUE 跳过CONTINUE语句后面的语句,回到WHILE循环的第一条语句 CASE多分支语句 解释 CASE-END语句计算一组条件表达式,并返回其中一个符合条件的结果 语法 CASE WHEN条件1 THEN 结果1 WHEN条件2 THEN 结果2 [ELSE其他结果] END 批处理结束语句GO 解释 批处理可以提高语句执行的效率,批处理结束的标志是”GO” 语法 ***** GO 子查询 定义 子查询就是在一条查询语句中包含另外一个查询语句 语法 SELECT……FROM 表 1WHERE 列1>(子查询) --子查询只能返回单个值 子查询的运用环境 UPDATE,INSERT,DELETE,SELECT SELECT语句使用注意 SELECT* FROM 表名 这种方式效率比较低不推荐使用 SELECT列表 FROM 表名 WHERE条件表达式 这种方式效率比上一种效率更高 表命名别名比较 使用AS关键字,符合ANSI国际标准 SELECT列表 FROM 表名 AS 表的别名 使用空格,简便的方法 SELECT列表 FROM 表名表的别名 IN和NOT IN子查询 IN关键字可以使主查询匹配子查询返回的多个单列值 NOTIN与之相反 EXISTS子查询 定义 检测数据是否存在 语法 IF EXISTS(子查询) 语句 比较IF IF(bool类型数据) IFEXISTS(子查询) NOTEXISTS 与EXISTS相反 子查询的注意事项 1. 子查询语句可以嵌套在SQL语句中任何表达式出现的位置 2. 嵌套在SELECT语句的SELECT子句中 a) SELECT (子查询) FROM 表名 3. 嵌套在SELECT语句的FROM子句中 a) SELECT * FROM(子查询) AS 表的别名 4. 嵌套在父查询SELECT语句的子查询可包括 a) SELECT子句 b) FROM子句 c) WHERE子句 d) GROUP BY子句 e) HAVING子句 5. 在子查询的SELECT子句中不能出现TEXT,NTEXT或IMAGE数据类型 6. 只出现在子查询中而没有出现在父查询中的表不能包含在输出列中 查询,合并多个表中的数据的三种方法 第一种 联合(Union) 合并多个数据集中的行 第二种 子查询 将一个查询嵌套在另一个查询中 第三种 连接 合并多个数据表中的列 数据库分页技术 DECLARE @pageSizeint -- 每页记录条数 DECLARE @totalPages int -- 总页数 定义变量 DECLARE @counts int -- 总记录条数 DECLARE @currentPage int -- 当前所在页 SET @pageSize = 5 --每页记录 SET @currentPage = 2 --当前所在页数 SELECT @counts = COUNT(*) FROM dbo.hos_house --给总记录条数赋值 IF(@counts % @pageSize = 0) -- 计算总页数 SET @totalPages = @counts / @pageSize ELSE SET @totalPages = @counts / @pageSize + 1 --不满足条记录的把最后一页算上 -- 分页显示:子查询 SELECT TOP (@pageSize) * FROM hos_house WHERE HMID NOT IN( --每页显示记录条数*(当前所在页-1) SELECT TOP (@pageSize *(@currentPage - 1)) HMID FROM hos_house ) 事务 定义 事务是一种机制,是一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行 使用 事务是作为最小的控制单元来使用的. ACID 1. 原子性(Atomicity) 2. 一致性(Consistency) 3. 隔离性(lsolation) 4. 持久性(Durability) 语法 1. 开始事务 a) BEGINTRANSACTION 2. 提交事务 a) COMMITTRANSACTION 3. 回滚(撤销)事务 a) ROLLBACKTRANSACTION 事务的分类 显示事务 用BEGIN TRANSACTION 明确指定事务的开始 隐式事务 通过设置SET IMPLICIT_TRANSACTIONS ON语句,将隐式事务模式设置为打开 自动提交事务 SQLServer的默认模式,它将每条单独的T-SQL语句视为一个事务 事务使用原则 1.事务尽可能简短 2.事务中访问的数据量尽量最少 3.查询数据时尽量不要使用事务 4.在事务处理过程中尽量不要出现等待用户输入的操作 事务中的并发控制>锁 锁的类型 A. 共享锁 a) 不对数据进行修改的时候使用,比如读操作 B. 排它锁 a) 对数据进行修改的时候,如:UPDATE,DELETE等操作 C. 更新锁 a) 在准备修改将被修改的数据上,更新锁比排它锁的并发性强在同一个资源上允许同时实施更新锁和共享锁 D. 意向锁 a) 可以在表中的页上或行上实施锁,提高并发性 注意 如果对一个数据实施了排它锁,就不能再在上面实施共享锁,也不能再实施其他事务的排它锁.不在事务里的单条语句当语句执行完毕时,锁自动解除.但是在实施了共享锁的资源上可以再实施共享锁,即两个事务可以同时读取相同的资源而不用等待 事务的隔离级别 A. 读未提交(READ UNCOMMITTED):产生脏读,不可重复读,幻像读. B. 提交读(READ COMMITTED):系统默认隔离级别.执行完自动释放资源会产生不可重复读 C. 可以重复读(REPEATABLE READ):在读数据的时候,实施在读操作中使用的数据上的共享锁一直存在.直到事务提交,但是不能避免幻像读 D. 序列化(SERIALIZABLE):解决了幻像读的问题.但是并发性很低.隔离级别设置越高,并发性就会越低 设置事务隔离级别 语法 SETTRANSACTION ISOLATION LEVEL {隔离级别名} 死锁优先级的设置 语法 SETDEADLOCK_PRIORITY {级别|@deadlock_var} 死锁超时时间设置 语法 SETLOCK_TIMEOUT 时间 注: @@LOCK_TIMEOUT返回当前的锁设置的时间.默认为-1 视图 定义 视图是另一种查看数据库中一个或多个表中的数据的方法 视图的三种操作 1. 筛选表中的行 2. 防止未经许可的用户访问敏感数据 3. 将多个物理数据表抽象为一个逻辑数据表 视图的好处 1. 用户的好处 a) 结果更容易理解 b) 获得数据更容易 2. 开发人员的好处 a) 限制数据检索更容易 b) 维护应用程序更方便 创建视图语法 CREATE VIEW view_name AS <select 语句> 删除视图 DROP VIEW view_name 查看视图 SELECT col_name1,col_name2…..FROM 视图名 转载出至:http://blog.csdn.net/heqingsong1/article/details/7495496
T-SQL 基础学习 03的更多相关文章
- Oracle SQL 基础学习
oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...
- SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念
SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...
- SQL 基础学习(1):下载DB Browser for SQLite. 下载graphviz(为了使用Rails ERD的前提)出现❌,已debug.
SQL is a standard language for storing, manipulating and retrieving data in databases. 关系型数据库:RDBMS( ...
- SQL基础学习_04_视图
视图 1. 视图的创建 视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作: 由于 ...
- sql基础学习
学习参考网站:http://www.runoob.com/sql/sql-tutorial.html 一.SQL命令 1.SELECT 语句 用于从数据库中选取数据. select column_na ...
- java基础学习03(java基础程序设计)
java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...
- SQL基础学习_05_函数、谓词、CASE表达式
函数 算术函数 1. 四则运算: +.-.*./ 2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的 ...
- SQL基础学习_03_数据更新
数据的插入 1. 基本INSERT语句 INSERT的基本语法为: INSERT INTO <表名> (列1, 列2, 列3, -) VALUES (值1, 值2, 值 ...
- SQL基础学习_02_查询
SELECT语句 1. SELECT语句查询列(字段): SELECT <列名> FROM <表名>; 该语句使用了两个SQL子句,SELECT子句列举了 ...
随机推荐
- 使用Shell创建GitHub仓库
Github的代码仓库分为2种类型: 用户自己的代码仓库 组织的代码仓库 下面就使用Shell脚本创建这2种类型的代码仓库,脚本如下 创建用户自己的代码仓库 #!/bin/bash USER_NAME ...
- 单元测试与Moq
这个篇幅里面,记录单元测试与Moq模拟包的知识点. 单元测试 每一个模块,都应该有对应的单元测试.单元测试可以保证你的代码准确性,大大减少出现BUG的几率.一个好的单元测试,也是重构代码必不可少的部分 ...
- Iptables防火墙NAT地址转换与端口转发
开启系统转发功能: [root@localhost /]# vim /etc/sysctl.conf # Generated by iptables-save v1.4.7 on Thu May 12 ...
- php多文件压缩下载
/*php多文件压缩并且下载*/ function addFileToZip($path,$zip){ $handler=opendir($path); //打开当前文件夹由$path指定. whil ...
- ionic 界面数据缓存问题
在ionic开发过程中列表到详情,在返回是可能存在,列表重新加载问题,不能回到用户上次点击的地方 在处理前期各种坑,把详情设置为弹出层,缓存数据等等,然而会出现各种问题,无意间发现一篇文章,一个属性解 ...
- git push如何至两个git仓库
分别有仓库 A(github),B(JAE 的 git),本机为C. 假设以 a 仓库作为最终的使用仓库, b为发布仓库.分支都为 dev 第一步,增加远程仓库 git remote add orig ...
- 使用spring注解@Controller @Service @Repository简化配置
前言:在web项目中引入spring框架中的配置文件,我们给每一个java bean进行相关配置可以非常安全,便捷的管理我们的bean.那么,问题来了,如果一个项目中所涉及到的java bean十分庞 ...
- [Unity3D]添加音效说明
添加音效组件并添加音乐资源 其中Pitch用来提高和降低音调的,比如可以和赛车游戏的轮胎绑定,当轮胎越快,则音调越高 2D/3D音效:2D音效和摄影家的距离无关,可以看做是一个背景音乐:而3D音效则是 ...
- thinkphp 导出exl功能
/** * 导出数据为excel表格 *@param $data 一个二维数组,结构如同从数据库查出来的数组 *@param $title excel的第一行标题,一个数组,如果为空则没有标题 *@p ...
- js 无线弹窗
无限弹窗 function fad(action){ alert('); ht = setTimeout() } fad(); fad()能放在 $().ready() 里面,效果也一样