Sqlserver 中临时表和全局临时表
SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。
临时表有两种类型:
本地临时表
以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表。
全局临时表
以两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。
==========================================================================
SQL code
--应用本地临时表
declare @sql varchar(100)
set @sql='select ''123'' as a,''abasdf'' as b into #t'
exec(@sql)
select * from #t
go
/*发现不能正确显示临时表的数据
提示:
服务器: 消息 208,级别 16,状态 1,行 5
对象名 '#t' 无效。
*/
--修改为全局临时表
declare @sql varchar(100)
set @sql='select ''123'' as a,''abasdf'' as b into ##t'
exec(@sql)
select * from ##t
drop table ##t
go
/*可以正确显示临时表的数据
分析原因:exec(@sql) 相当于重新建立一个数据库对话,所以对于本地临时表,使用exec(@sql)创建临时表,
在exec外部不能正确访问;而使用全局临时表就ok了
*/
SQL code
exec ('select top 10 * into ##temp from syhouse');
exec ('select * from ##temp');
相关文档:
//创建DBhelper数据库链接文件
private static string sqlcon = "server=.;database=myschool;uid=sa;pwd=sa";
public static SqlConnection connection = new SqlConnection(sqlcon ......
SQL注入是什么?
许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码(一般是在浏览器地址栏进行,通过正常的www端口访问),根据程序返回的结果,获得某些想得知的数据,这就是所谓的SQL Injection,即SQL注入。
网站的恶梦——SQL注入
......
/***
游标的使用
讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱。
使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。
1.3.1声明游标
最简单游标声明:DECLARE <游标名>CURSOR FOR<SELECT语句>;
其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查询
......
通配符 说明
_ 与任意单字符匹配
% 与包含一个或多个字符的字符串匹配
[ ] 与特定范围(例如,[a-f])或特定集(例如,[abcdef])中的任意单字符匹配。
[^] 与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。
......