SQL的文摘
jimlong
健康
展开
-
sql随机抽取记录
http://blog.163.com/magnetic_zhx@126/blog/static/391257782010378124468/我们经常想在一个数据表中随机地选取出数据来,比如随机生成考试试卷等。利用 SQL Server 的 NewID() 方法就可以很轻松地达到这个目的。NewID() 方法返回一个 GUID,如:EE95A489-B721-4E8A-81转载 2012-08-23 09:36:40 · 1115 阅读 · 0 评论 -
sql 时间转换格式 convert(varchar(10),字段名,转换格式)
convert(varchar(10),字段名,转换格式)CONVERT(nvarchar(10),count_time,121)CONVERT为日期转换函数,一般就是在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到的函数的3个参数,第1个参数为,转换后的大小,第2个为转换日期的字段或函转载 2012-03-12 23:34:42 · 86794 阅读 · 3 评论 -
深入了解SQLServer数据库的线程与纤程
Microsoft® SQL Server™ 的错误日志可能会显示如下消息:工作线程限制 255 已经达到。这条消息是信息消息,并不表明系统有任何问题。SQL Server 维护一个操作系统线程池,以便执行从客户端送达的成批 SQL 语句。在 Microsoft Windows NT® 上,如果服务器的 lightweight转载 2012-03-26 11:55:04 · 2509 阅读 · 0 评论 -
ID为自动增长标识改为0
TRUNCATE 表名 记录全没 id 从0开始转载 2012-03-26 10:50:52 · 768 阅读 · 0 评论 -
对一大表(百万级以上)建立索引时应当注意的事项及提高性能的手段-数据库专栏,SQL Server
对一大表(百万级以上)建立索引时应当注意的事项及提高性能的手段-数据库专栏,SQL Server发布时间:2007-12-25 21:46:46 来源: 作者: 点击:356一、注意事项:首先,应当考虑表空间和磁盘空间是否足够。我们知道索引也是一种数据,在建立索引的时候势必也会占用大量表空间。因此在对一大表建立索引的时候首先应当考虑的是空间容量问题。其次,在对建立转载 2012-03-23 16:30:17 · 1190 阅读 · 0 评论 -
sql 百万级数据库优化方案
sql 百万级数据库优化方案1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中nu转载 2012-03-23 15:43:50 · 506 阅读 · 0 评论 -
SQLServer : EXEC和sp_executesql的区别
摘要1,EXEC的使用2,sp_executesql的使用 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有。还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能(对于这个我在后面的例原创 2012-03-23 18:13:33 · 15654 阅读 · 0 评论 -
建立自增加临时表
create table #temp( id int identity(1,1), customer nvarchar(50))selectidentity(int ,1,1) as id,*into #temp1 fromtachecontractid --#temp1没有提前声明 所以比较可靠的做法,还是先判断临时表是否存在,然后再drop转载 2012-01-04 12:20:29 · 614 阅读 · 0 评论 -
UPDATE
UPDATE titles SET ytd_sales = t.ytd_sales + s.qty FROM titles t, sales s WHERE t.title_id = s.title_id AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)原创 2012-01-05 00:06:35 · 560 阅读 · 0 评论 -
使用group by 统计的排行榜时,加上一个序号
select top 10 ROW_NUMBER() OVER (ORDER BY sum(ProductNum*Integral) desc) as id, RegisterMember, sum(ProductNum*Integral) as yeji from dbo.v_OrderDetail where " + Filter + " group by RegisterMember or转载 2011-10-26 00:04:28 · 3583 阅读 · 0 评论 -
sql2005全库查找关键字
有个客户的自助建站的数据库很多表加入了木马的脚本,在网上找到了这个好用的东东,可以在整个数据库的所有表,所有字段中查找关键字,终于把挂马的脚本给删除了 --全数据库查找适合SQL2005--运行存储过程exec [sp_Search_All_DataBase] @转载 2011-10-15 09:26:43 · 3490 阅读 · 0 评论 -
SQL2005减小日志文件
-- 第一步:清空日志 DUMP TRANSACTION [YZGA] WITH NO_LOG -- 第二步:截断事务日志 BACKUP LOG [YZGA] WITH NO_LOG -- 第三步:收缩数据库 DBCC SHRINKDATABASE([YZGA转载 2011-09-29 11:01:37 · 443 阅读 · 0 评论 -
根据输入的日期取本周周一,和周日
@p22为输入的日期 DECLARE @Start_Date NVARCHAR(1000) DECLARE @End_Date NVARCHAR(1000) SET @Start_Date=Dateadd(wk,datediff(wk,0,@p22),0) SET @End_Date=Dateadd(wk,datediff(wk,0,@p22),7)原创 2008-05-07 17:02:00 · 593 阅读 · 0 评论 -
同类别的产品销售记录各要一条最新时间的
szxt_Buy_Nums 是销售表,每个会员有多条销售记录要求:每个会员只选取一条记录select a.MemberID,a.ActiveTime from szxt_Buy_Nums a where a.autoid in (select top 1 autoid from szxt_Buy_Nums where MemberID = a.MemberID order原创 2012-03-19 08:07:00 · 740 阅读 · 0 评论 -
Sql server2005 优化查询速度50个方法小结
Sql server2005 优化查询速度50个方法小结Sql server2005优化查询速度51法查询速度慢的原因很多,常见如下几种,大家可以参考下。I/O吞吐量小,形成了瓶颈效应。 没有创建计算列导致查询不优化。 内存不足。 网络速度慢。 查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)。 锁或者死锁(这也是查询慢最常见转载 2012-03-21 23:00:29 · 849 阅读 · 0 评论 -
exec与sp_executesql语法的区别详解(转)
动态语句语法:--方法1查询表改为动态 select * from sysobjects exec("select ID,Name from sysobjects") exec sp_executesql N"select ID,Name from sysobjects"--多了一个N为unicode--方法2:字段名,表名,数据库名之类作为变量时,用动态SQL d转载 2012-07-02 23:24:50 · 2814 阅读 · 0 评论 -
sql Server 2000 分区视图的运用(分布式数据库)
sql Server 2000 分区视图的运用 分区视图的联系机从书,介绍:分区视图在一个或多个服务器间水平连接一组成员表中的分区数据,使数据看起来就象来自一个表。Microsoft® SQL Server™ 2000 区分本地分区视图和分布式分区视图。在本地分区视图中,所有的参与表和视图驻留在同一个 SQL Server 实例上。在分布式分区视图中,至少有一个参与表驻留在不同的(转载 2012-07-03 00:26:25 · 1071 阅读 · 0 评论 -
最近开发一个SQL server大数据量统计系统的经验总结(转)
最近开发一个SQL server大数据量统计系统的经验总结项目介绍 政府一个业务系统, 使用范围全国 数据是区域还存储,最大地方,主业务表,一年有600万,工作流表,1年有几千万,迄今为至系统已经运行三年。 其它全国还有46个地点,数据也比较多 新开发系统主要功能,对业务系统的数据进行分析统计. 所以对性能要求比较高。 我们的简要方案。 建立中间表,转载 2012-07-02 23:56:23 · 3647 阅读 · 1 评论 -
[SQL]提升查询效率与避免LOCK发生
[SQL]提升查询效率与避免LOCK发生13小时前 要提升SQL的查詢效能,一般來說大家會以建立索引(index)為第一考量。其實除了index的建立之外,當我們在下SQL Command時,在語法中加一段WITH (NOLOCK)可以改善線上大量查詢的環境中資料集被LOCK的現象藉此改善查詢的效能。 不過有一點千萬要注意的就是,WITH (NOLOCK)的SQL S转载 2012-06-20 17:04:24 · 777 阅读 · 0 评论 -
sql查处某字段不重复的全部记录
呵呵,以前就遇到过这个问题的。但有于时间问题,当时也没有仔细考虑取出了该字段不重复的字段值。今天正好群里的哥们在讨论,就记录下结果来,为防以后忘了,哈哈...下面举例说明下,有表tb,字段id,pdt_id,caption,url。取出pdt_id不重复的pdt_id字段的值很easy,distinct就可以解决问题。如:select distinct(pdt_id) fr转载 2012-06-14 13:50:08 · 1643 阅读 · 0 评论 -
SQL语句distinct的多列问题
distinct 多列问题结合group by的解决方法表 table1 id RegName PostionSN PersonSN 1 山东齐鲁制药 223 2 2 山东齐鲁制药 224 2 3 北京城建公司 225 2 4 科技公司 225 2 我想获得结果是 id RegName PostionSN PersonSN 1 山东齐转载 2012-05-15 23:51:43 · 15261 阅读 · 0 评论 -
让存储过程延时随机毫秒数,以防止同时接收到在线支付的反馈
declare @ff int ,@delayTime datetimeset @ff =round(rand()*990+1,0) --随机1-991的整数set @delayTime='00:00:00:'+cast(@ff as varchar)--延时的时间waitfor delay @delayTimeexec sp_PayOnlineResult @Orderid=..原创 2012-05-15 17:30:50 · 1082 阅读 · 0 评论 -
让SQL语句延时执行
WAITFOR TIME '10:20';--10:20分开始执行后面的代码另一种写法:WAITFOR DELAY '00:00:31';--31秒钟后执行后面的代码转载 2012-05-15 11:42:54 · 6615 阅读 · 1 评论 -
SQL语句更新时间字段的年份、月份、天数、时、分、秒
SQL语句更新时间字段的年份、月份、天数、时、分、秒2012年02月02日 星期四 19:57--修改d表日期字段的年份update dset birth=STUFF(convert(nvarchar(23),birth,120),1,4,'2012') --修改d表日期字段的月份update dset birth=STUFF(convert转载 2012-04-25 10:08:46 · 5406 阅读 · 0 评论 -
浅淡sql如何随机取指定范围的数值--【叶子】
1、如果在数据库中我们想要随机取到两个数值之间的整数,我们可以这样处理 随机取1到3之间的整数:select round(rand()*2+1.0,0)go 10 随机取6到9之间的整数:select round(rand()*3+6.0,0)go 10 2、我们可以进行精度上的控制 --随机取n到m之间的数值create table tab转载 2012-04-24 22:33:56 · 1447 阅读 · 0 评论 -
SQL 优化经验总结34条
SQL 优化经验总结34条我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享!(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须转载 2012-03-21 23:02:16 · 426 阅读 · 0 评论 -
使用SQL Server视图的优缺点
SQL Server视图我们经常会用的到,下面就为您介绍使用SQL Server视图的优缺点,希望可以对您SQL Server视图有更多的了解。在程序设计的时候必须先了解视图的优缺点,这样可以扬长避短,SQL Server视图具有如下的一些优点:● 简单性。视图不仅可以简化用户对转载 2011-07-15 11:31:35 · 9889 阅读 · 0 评论 -
查看SQL2005的解密存储过程
建立以下的存储过程,然后以DAC模式打开查询分析器使用 DAC 与服务器连接在 SQL Server Management Studio 中,不打开其他 DAC,单击工具栏上的“数据库引擎查询”。 在“连接到数据库引擎”对话框的“服务器名称”框中,键入 ADMIN:,并在其后继续键入服务器实例的名称。例如,若要连接到名为 ACCT/PAYABLE 的服务器实例,请键入 ADMIN:原创 2011-06-15 00:15:00 · 751 阅读 · 0 评论 -
修改ID为自动增长标识
alter table dbo.Tb_Customer_Assess drop column id alter table dbo.Tb_Customer_Assess add id int primary key identity(1,1)原创 2011-06-13 00:38:00 · 1901 阅读 · 0 评论 -
建立临时表
create table #table_name1(id int IDENTITY (1, 1),Member_RegTime smalldatetime)drop table #table_name1--最后把临时表删除原创 2008-05-07 16:49:00 · 556 阅读 · 0 评论 -
时间格式的转为2006-02-06
时间格式的转为2006-02-06结果为VARHCARselect convert(varchar(10), getdate(), 121)--结果:2006-02-06select convert(varchar(7), getdate(), 121) --结果:2006-02结果为DATATIMEselect cast(convert(varchar(10), getdate(), 1原创 2008-05-07 16:35:00 · 639 阅读 · 0 评论 -
破解加密的存储过程
加密只要在存储过程的AS上面加这一句WITH ENCRYPTION如:create PROCEDURE SP_XXX( @objectname varchar(50)) WITH ENCRYPTION AS......解密用法:把下面代码粘贴成新的存储过程,运行他的时候参数填要破解的存储过程,显示的结果就是要破解的存储过程的全部代码create PROCED原创 2008-05-07 16:33:00 · 726 阅读 · 0 评论 -
存储过程的指针
类似于循环记取的功能DECLARE CursorJ CURSOR FOR --读取要填充指针的数据SELECT Member_Code FROM tb_Day_Bonus WHERE StartDate=@p0DECLARE @Member_Code nvarchar(1000)OPEN CursorJFETCH NEXT FROM CursorJ INTO @Member_Code /*原创 2008-05-07 16:24:00 · 1293 阅读 · 0 评论 -
选取排名第3的数据(不是最大,是第3大)
建立一个临时表ID标识列自动增加 select id=identity(int,1,1),* into 临时表名 from 表 ORDER BY 排序列 DESCSELECT * FROM 临时表名 WHERE id=3 //第三大原创 2008-05-07 16:59:00 · 627 阅读 · 0 评论 -
求@a,@b,@c,@e的最小值
declare @a intdeclare @b intdeclare @c intdeclare @d intset @a=1set @b=2set @c=3set @d=4select max(t.A) from ( select @a as A union all select @b as A union all select @c as A union all select @d )原创 2008-05-07 16:57:00 · 601 阅读 · 0 评论 -
删除--存储过程中的注释
用VS2005打开SQL查询脚本文件 删除--注释在查找内容里面--* 删除/* */里的东西这个通配符写 //**/*/ 操作步骤1.--* 替换成--2.dbo.替换成空3。[dbo].替换成空格3.检查出现没有"*/"就把相应的“/*删除“*/(因为有些是/*----这样的情况的---*/)原创 2008-05-07 16:56:00 · 1093 阅读 · 0 评论 -
清空数据库里所有的表的数据
use 你要清空的库godeclare @tbname varchar(250)declare #tb cursor for select name from sysobjects where objectproperty(id,IsUserTable)=1open #tbfetch next from #tb into @tbnamewhile @@fetch_status=0begin原创 2008-05-07 16:53:00 · 1106 阅读 · 0 评论 -
求两个float变量的商
declare @a as floatdeclare @b as intset @a = 12345.54321set @b = 1100select floor(@a / @b)--floor是取整数select @a-@b*floor(@a / @b)原创 2008-05-07 16:51:00 · 725 阅读 · 0 评论 -
把列排成行
//drop table #table_name1--建立一个临时表,把一个表的数据的所有列,一个一个地排成行//create table #table_name1//(//id int ,//Member_Name nvarchar(2000),//pname nvarchar(2000),//p1 int//)//declare @sql varchar(8000)//set @sql=原创 2008-05-07 16:50:00 · 762 阅读 · 0 评论 -
修改数据库中表和存储过程的所有者
修改数据库中表和存储过程的所有者建立下面两个存储过程在VS2003里运行第一个changename,输入的参数‘原来的用户名’,‘dbo’再运行第二个存储过程ChangeObjectOwner,输入的参数‘原来的用户名’,‘dbo’方法二(没试验过)建立以下两个存储过程以SA登陆查询分析器 ,选中你要的数据库 执行存储过程 执行exec Changename 原所有者,dbo 执行原创 2008-05-07 16:47:00 · 671 阅读 · 0 评论