
sql
zb219
这个作者很懒,什么都没留下…
展开
-
利用case在select语句里写条件判断
select a,b,(case when a+b=c then 是 else 否 end) c from table原创 2006-02-17 11:52:00 · 1938 阅读 · 0 评论 -
对于要统计一个表里面出现某字符串个数,跨段统计
把表变成字符串,统计原创 2010-04-27 19:48:00 · 489 阅读 · 0 评论 -
SQL注入脚本问题
导致注入原因:通过URL id=?后面写了UPDATE语句,注入垃圾代码。 解决:判断接收来的ID是否为INT,如果不是,就返回错误提示。 如果ID可以为字符串类型时,则把一些SQL的关键字屏蔽掉如果没有源码的程序,出现SQL注入问题,还可以通过设置数据库的权限来解决。 登录名权限太大,以至于别人能访问sys.columns,sys.object这两表,获取字段名,修改字段 解决:1,新建个登录名,不要给sysadmin权限,用户映射到要原创 2010-06-29 22:51:00 · 490 阅读 · 0 评论 -
CTE 中用游标的方法
<br />DECLARE @olnID int<br />DECLARE crx CURSOR LOCAL FAST_FORWARD FOR<br />WITH oln_tree AS<br />(<br />select id from table_1<br />)<br />select id from oln_tree<br />OPEN crx<br />FETCH NEXT FROM crx INTO @olnID<br />WHILE @@FETCH_STATUS = 0<br />BEGI原创 2010-08-16 15:42:00 · 566 阅读 · 0 评论 -
Bulk批量插入时格式文件的生成方法,及execl表导入及相关
写这文章推荐给编辑是因为,网上很多资料是错误的,不全面的,光看资料是没有办法解决问题的.SELECT hotelid into #tempHotelC FROM OPENROWSET(Bulk 'd:/a/hotelidc.txt',FORMATFILE='d:/a/format.txt') AS b这个FORMATFILE是怎么出来的,怎么写的呢?可以自己写,但也不知道格式是什么,网上说有一个BCP的,BCP是什么呢,他就是个命令,没有界面的,可以在cmd里面执行,我们也可以通过exec master..原创 2010-08-25 16:46:00 · 1142 阅读 · 0 评论 -
关于大批量导入数据的一个解决方案
<br />可以建两表,一表导入数据,一表使用,刚一表导入数据成功之后,rename表名,这样可以做到导入数据时,业务可以正常运转<br />exec sp_rename HotelExpiredInfo,HotelExpiredInfo#temp<br />exec sp_rename HotelExpiredInfo_switch,HotelExpiredInfo<br />exec sp_rename HotelExpiredInfo#temp,HotelExpiredInfo_switch原创 2010-10-12 16:51:00 · 982 阅读 · 0 评论 -
output
<br />适合历史表<br />例子<br />table_1 和table_2表结构一样<br />insert into table_1(a,b)<br />output INSERTED.a,INSERTED.b into table_2<br />values ('454','767')<br />会把记录也同时插入 table_2<br />insert into table_1<br />output INSERTED.a,INSERTED.b<br />select top 2 aa,原创 2010-10-12 18:01:00 · 447 阅读 · 0 评论 -
linkserver用法
<br />为了解决跨服的问题,要用linkserver<br /> <br />新建linkserver,先在sms里新建个linkserver,然后create到文本框<br />--先建linkserver<br />EXEC master.dbo.sp_addlinkedserver @server = N'TEST1', @srvproduct=N'192.168.9.61',@provider=N'SQLNCLI',@datasrc=N'192.168.9.61', @catalog=N'bdg原创 2010-10-12 16:40:00 · 8105 阅读 · 0 评论 -
数据库的升级有可能会导致各种连接协议的故障
比如odbc的连接会突然变慢原创 2011-07-04 13:01:55 · 355 阅读 · 0 评论 -
odbc转oledb连接时,会发现某些语句报错
如 对象关闭时,不允许操作。 是因为oledb把影响行数也算进数据集里面,所以要在语句前,或存储过程前加SET NOCOUNT ON 如 SET NOCOUNT ON exec DeleteOrderItemByReserNo '100001034','sss原创 2011-07-04 13:06:25 · 328 阅读 · 0 评论 -
数据库订阅发布相关
一个多字段的表,应该把主表和附表分开,附表完全可以不用建聚焦索引,做个非聚集索引就行了 发布的原理,是发布操作日志,订阅库执行操作日志 可以发布储存过程,当大批量数据操作时,可以发布储存过程,当主库执行完存储过程时,订阅库执行储存过程原创 2011-07-18 16:05:16 · 512 阅读 · 0 评论 -
redis memcached比较
memcached 是多线程,在计算一些统计数据时会因为锁的关系有一点点效率损耗redis 是单线程的,作者认为内存的存储已经够快不需要多线程. redis新开了线程做一些管理工作,如缓存失效.memcached 采用惰性失效,就是当key被访问的时候,去判断是否失效,如果key不被访问时,可能会长驻内存,直到内存不够时,去寻找低访问key腾空间的时候,才会被替换.而memcached在判原创 2012-04-28 20:04:07 · 10767 阅读 · 2 评论 -
BULK insert 标识符问题
一开始的数据文件中 没有id,死活导不进去,后来随便加个id,就可以了,结构一定要一致,id列上,是什么无所谓原创 2013-04-18 17:22:55 · 681 阅读 · 0 评论 -
调vs报了个sql连接错误
A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 0 - The wait operation timed out.)原创 2014-04-28 16:30:55 · 4968 阅读 · 0 评论 -
sql汉字拼音首字母
用排序规则的特性得到汉字拼音首字母 用得到笔划总数相同的方法,我们也可以写出求汉字拼音首字母的函数。如下:create function fun_getPY(@str nvarchar(4000))returns nvarchar(4000)asbegindeclare @word nchar(1),@PY nvarchar(4000)set @PY=while len(@str)转载 2009-03-04 22:16:00 · 3247 阅读 · 0 评论 -
常用sql功能标准写法
函数标准写法create Function [dbo].[FunctionName](@parem1 Varchar(50),@parem2 datetime,@parem3 int) ReturnS nVarchar(4000)Begindeclare @eventstr nVarchar(4000)set @eventstr=return @eventstrEndgo存储过程标准写法CR原创 2008-12-02 15:36:00 · 596 阅读 · 0 评论 -
sqlserver事务与回滚
事务不是有错就回滚的,在不写rollback的情况下,并不是什么错误都会回滚事务,有时回滚当前语句,有时回滚整个事务如例begin tran insert into dbo.area values(1111)insert into dbo.area values(2222)select 1/0insert into dbo.area values(333)commit像这样原创 2008-11-16 23:37:00 · 2830 阅读 · 1 评论 -
sql问题集
双表合并 create table 表3(字段1 int identity(1,1),字段2 varchar(20))insert into 表3 select 字段2 from 表1 union select 字段2 from 表2类型转换select convert(varchar(500),itemDate,120) from table原创 2006-02-15 20:12:00 · 786 阅读 · 0 评论 -
获取表的记录总数
Select rows from sysindexes where id=object_id(Ntablename) and indid该方法获取表的记录总数的速度非常快,在毫秒级就可以完成,相比select count(*) 要快上数万倍,但是大家在运用该方法是一定要主要,该方法得到的表的总记录数不是一个精确值,原因是MS SQL 并不是实时更新该字段的值,而是定时更新原创 2006-02-17 11:51:00 · 1044 阅读 · 0 评论 -
SQLServer和Oracle常用函数对比
数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.001) val原创 2006-08-22 13:34:00 · 697 阅读 · 0 评论 -
Tsql与plsql语法比较,不断更新
1.查当前连接 Tsql: exec sp_who PLsql:select count(*) from v$session; --查看当前连接进程数,包含后台进程 select count(distinct username) from v$session; --查看连接的用户个数 如果把某些连接下线,即杀死其进程,要原创 2006-09-11 14:36:00 · 1498 阅读 · 0 评论 -
Sql server 2005中实现表的行列转换
http://www.cncsk.com/Document/Database/SQL_Server/200606186744.htm PIVOT和UNPIVOT关系运算符是SQL Server 2005提供的新增功能,因此,对升级到SQL Server 2005的数据库使用PIVOT和UNPIVOT时,数据库的兼容级别必须设置为9原创 2006-10-31 12:07:00 · 1005 阅读 · 0 评论 -
常用sql语句
T_SQL语句复制表的方法我在SQL SERVER 2000中有现个数据库DATAHR及DEMO,它们的结构是一样,其它有一个表名为:GBITEM.现在我想将DEMO数据库的表名:GBITEM的全部内容复制到DATAHR数据库的表名为:GBITEM中。请问此T-SQL语句应该怎么写? 谢谢高人指点! 如果目的表已经存在:insert into DATAHR.DBO.GBITEMselect原创 2006-12-22 16:40:00 · 650 阅读 · 0 评论 -
显示数据时的联合查询
在显示数据的时候如果用联合查询会引发数据丢失所以不能用联合查询,建议用函数查询下面是三种情况的查询函数1对1关系,如路线表的类型,一条路线只有一种类型1对多的关系,如路线的特性可以有多种多对多关系,如路线的导游的关系表现出来的形式应该是这样id 名称 类型 特性 导游1 北京一日游 本地游 diy游,组团游 张原创 2007-01-05 17:30:00 · 893 阅读 · 0 评论 -
多字段排序分页存储过程
create PROCEDURE ProcCustomPageForTaxisField ( @Table_Name varchar(1000), /**//* 查询的表名 */ @Sign_Record varchar(50), /**//* 标志字段原创 2007-07-03 16:28:00 · 2331 阅读 · 0 评论 -
sql语句 求每学科前两名
select * from class a where id in (select top 2 id from class where subject= a.subject order by point desc) order by subject,point desc这句显示了一个sql语句的精典写法,一般的select 语句都是逐行判断每条是否符合条件,所以我们的条件语句是可以写成动态的.原创 2007-07-05 10:16:00 · 2211 阅读 · 0 评论 -
sql语句长度问题
sql语句没有长度限制,主要是nvarchar有,因为只能放4000个字,在sql语句中参数往往大于这个值.原创 2007-05-17 11:59:00 · 1164 阅读 · 0 评论 -
重建 SQLServer 索引的重要性!
大多数SQL Server表需要索引来提高数据的访问速度,如果没有索引,SQL Server要进行表格扫描读取表中的每一个记录才能找到索要的数据。索引可以分为簇索引和非簇索引,簇索引通过重排表中的数据来提高数据的访问速度,而非簇索引则通过维护表中的数据指针来提高数据的索引。 索引的体系结构: 为什么要不断的维护表的索引?首先,简单介绍一下索引的体系结构。SQL S转载 2007-09-17 11:19:00 · 1708 阅读 · 0 评论 -
数据库动态模型
数据库动态模型我们在做项目的时候往往碰到逻辑没变,模型字段改了,比如,做了个电影网站,一个电影有导演,演员等字段,要把这个项目改成教育视频网站,那一个教育视频的字段就改成了,老师,课目等,使数据库字段更改了,那我们所有的增删改查都要改,比较痛苦.正因为如些我们需要数据库动态模型,我们的字段是动态的,不是写死的.无限制自定义字段解决方案 比如,你要新建一个数据模型,名称,老师原创 2007-10-23 23:42:00 · 2126 阅读 · 0 评论 -
sqlserver数据库索引深解
数据库数据基本单位是页插入数据,是看当前页有没有空间,如果有的话,就在当前页插入数据,没有空间了,就新建页(比较耗时)对于有聚集索引的表,存在从中间插入数据,比如id列为1,5,7,8,我要插个6进去,就可能要重新排列页里面的数据,这个问题可以用填充因子来解决,填充因子就是每个页每行数据空出点空间,用来插入新数据,当然有填充因子的话,要多耗一些磁盘空间.8个连续页为一个区http://msdn.m原创 2008-10-24 17:11:00 · 535 阅读 · 0 评论 -
数据库的一些知识
sqlserver 临时表和表变量,也是存在物理文件上的,会产生I/O,如果条件不够,建议把 temdb放到高速I/O的硬盘上长sql,select * 肯定会影响速度也会占带宽数据的最小单位是页,sqlserver页的容量是8k,小表一页可以放更多的行,大表一页只能放较少的行,跨页查询会影响性能,所以列数效多的表,查询速度肯定不如列数效少的表。索引是的原理相当于分叉树,如果完全不重复原创 2015-01-05 18:57:31 · 463 阅读 · 0 评论