随笔分类 -  sql数据库

sql server中将自增长列归零
摘要:一个项目完成后数据库中会有很多无用的测试数据,可以使用delete * 将数据全部删除,但自增长列(一般是主键)基数不会归零,使用TRUNCATE函数可以将表中数据全部删除,并且将自增长列基数归零。一定要注意,表中的数据全部删除了。它的语法如下:TRUNCATE TABLE tableName –-其中tableName中所要操作的数据 阅读全文
posted @ 2013-07-02 10:53 Eleanore Lee 阅读(312) 评论(0) 推荐(0)
sql产生流水号
摘要:一个产生流水号(年月日+5位流水号)的存储过程现在客户有一个需求,要产生一个流水号,如090611+000001(年月日+五位流水号),此流水号在数据库表中是主键,且为varchar类 型。如果在当天之内插入此流水号,则此流水号递增,即:090611000001,090611000002,090611000003,如果不是在当天 时间,必须从090612000001开始递增。我写了个存储过程实现它。create procedure test_proc @id nvarchar(13) outputas begin set nocount on declare @date nvarchar(8. 阅读全文
posted @ 2013-07-02 10:50 Eleanore Lee 阅读(1000) 评论(0) 推荐(0)
master.dbo.spt_values
摘要:--统计某月份周情况没有的补0ifobject_id('temp_tb')isnotnulldroptabletemp_tbcreatetabletemp_tb([ID][numeric](18,0)IDENTITY(1,1)NOTNULL,[test_values]intNULL,[time]datetimenull,);goinsertintotemp_tb([test_values],[time])select3,'2009-2-110:12:30'unionallselect5,'2009-2-509:20:23'unionallsele 阅读全文
posted @ 2013-07-02 10:16 Eleanore Lee 阅读(393) 评论(0) 推荐(0)
Log Explorer使用说明
摘要:操作步骤下载完在数据库服务器中安装客户端和服务端,然后打开Log Explorer,4.2的界面以蓝色为主调,运行软件可见:(1).点击<Attach Log File>开始进行数据恢复。(2).确定要恢复数据的服务器,并输入登陆的用户名和密码,如果是本机可使用”windows身份验证”,点击<Connent>测试连接。 (3).选择要恢复数据所在有数据库,点击<Attach>进入数据操作界面。(4).进入数据操作界面后,在左边的菜单选择<View Log>,可显示操作的日志,例如是对哪一个表进行过新增、删除、修改等操作,操作的记录是什么内容都能 阅读全文
posted @ 2012-09-27 13:45 Eleanore Lee 阅读(1317) 评论(0) 推荐(0)
索引
摘要:1.复合索引有什么作用?1。你的索引这样创建create index yourindex on yourtable(id,name,city)2.当你在查询的时候select id,name,cityfrom yourtable这时候查询优化器,不在扫描表了,而是直接的从索引中拿数据,因为索引中有这些数据,这叫覆盖式查询,这样的查询速度非常快。2. 用聚集索引、唯一值索引、不重新计算索引、文件组索引。到底哪个好些?在创建聚集索引之前,应先了解您的数据是如何被访问的。可考虑将聚集索引用于:包含大量非重复值的列。使用下列运算符返回一个范围值的查询:BETWEEN、>、>=... 阅读全文
posted @ 2012-09-18 11:36 Eleanore Lee 阅读(194) 评论(0) 推荐(0)
存储过程和视图的区别
摘要:SQL里面不带参数的存储过程与视图的区别1、存储过程是程序化的sql可以实现一般sql不能实现的功能。如:先检索一个表得到一些数据,经过一定的编辑后更新到另外一个表中、这就可以用不带参数的存储过程实现。2、视图是虚拟表,不存储数据,存储的是sql,检索他的时候实际上是执行定义它的sql语句。说明:从你的问题上可以看出,你使用存储过程仅仅是用它检索数据,所以你会产生这样的疑问,一定要记住,存储过程理解的简单一点就是“数据库中的程序”,可以在不需要外部程序(如C,java,vb等)的情况下,让数据库自己解决复杂的、用一般sql不能实现的功能,而视图则不然。视图和存储过程比是没什么意义的 视图就是虚 阅读全文
posted @ 2012-06-11 17:46 Eleanore Lee 阅读(36931) 评论(0) 推荐(7)
char、varchar、nvarchar的区别
摘要:一般如果用到中文或者其它特殊字符,我就会使用n开头的类型,否则的话直接使用var开头的。sql server中的varchar和Nvarchar有什么区别?varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。char 100 8个字节,92个空格varchar 100 8个字节,无空格,最长为1-800 阅读全文
posted @ 2012-05-25 15:54 Eleanore Lee 阅读(419) 评论(0) 推荐(0)
SQL Server临时表
摘要:创建临时表方法一: create table #临时表名(字段1 约束条件, 字段2 约束条件, .....)create table ##临时表名(字段1 约束条件, 字段2 约束条件,.....)方法二: select * into #临时表名 from 你的表;select * into ##临时表名 from 你的表;注:以上的#代表局部临时表,##代表全局临时表查询临时表 select * from #临时表名;select * from ##临时表名;删除临时表 drop table #临时表名;drop table ##临时表名;drop table #Tmp --删除临时表#T 阅读全文
posted @ 2012-05-25 15:52 Eleanore Lee 阅读(593) 评论(0) 推荐(0)
SQL 查询当天,本月,本周的记录
摘要:SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111) ORDER BY dateandtime DESC本月记录SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0本周记录SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0当天记录SELECT * FROM 表 WHERE datediff(day,[dateadd],getdate 阅读全文
posted @ 2012-05-21 15:32 Eleanore Lee 阅读(307) 评论(0) 推荐(0)
Sql时间函数
摘要:一、sqlserver日期时间函数SqlServer中的日期与时间函数1.当前系统日期、时间selectgetdate()2.dateadd在向指定日期加上一段时间的基础上,返回新的datetime值例如:向日期加上2天selectdateadd(day,2,'2004-10-15')--返回:2004-10-1700:00:00.0003.datediff返回跨两个指定日期的日期和时间边界数。selectdatediff(day,'2004-09-01','2004-09-18')--返回:174.datepart返回代表指定日期的指定日期部分 阅读全文
posted @ 2012-05-17 18:21 Eleanore Lee 阅读(270) 评论(0) 推荐(0)
sql 表值函数
摘要:如何使用 SQL Server 中的表值函数来扩展 SQL Server Reporting Services 的数据访问功能。表值函数让编程人员和报表设计员有一定的灵活性,使他们能够实现数据不直接存储在数据库表中的报表制作场景。Sql server表值函数是返回一个Table类型,table类型相当与一张存储在内存中的一张虚拟表。实现表值函数很简单:下面是一个不带输入参数的表值函数create function tvpoints() returns table as return ( select * from tb_users ); 这个表值函数数查询所有用户表的数据对于多语句表值函数.. 阅读全文
posted @ 2012-02-08 15:51 Eleanore Lee 阅读(1198) 评论(0) 推荐(0)
SQL Server多表查询优化方案总结
摘要:SQL Server多表查询的优化方案是本文我们主要要介绍的内容,本文我们给出了优化方案和具体的优化实例,接下来就让我们一起来了解一下这部分内容。1.执行路径ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用:我们发现,单表数据的统计比多表统计的速度完全是两个概念.单表统计可能只要0.02秒,但是2张表联合统计就可能要几十秒了.这是因为ORACLE只对简单的表提供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询..数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然 被共享的可能性也就越大了. 阅读全文
posted @ 2011-12-29 10:22 Eleanore Lee 阅读(1677) 评论(1) 推荐(0)
sql 单表distinct/多表group by查询去除重复记录
摘要:单表distinct多表group bygroup by 必须放在 order by 和 limit之前,不然会报错(下转)在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案,期 阅读全文
posted @ 2011-12-28 16:22 Eleanore Lee 阅读(17604) 评论(2) 推荐(0)
sql 表
摘要:1、复制表:select * into [新表名] from [旧表名] where1=2; ---- 只复制表结构,不复制表内容select * into [新表名] from [旧表名]; ---- 既复制表结构,也复制表内容insert into [已创建好结构相似的新表名] select * from [旧表名]; 或者 select value1,value2…… into table2 from table1;2、SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL。但多数情况下,我们希望如果没有符合条件记录的情况下,我们希望它返回0,而不.. 阅读全文
posted @ 2011-12-22 20:22 Eleanore Lee 阅读(211) 评论(0) 推荐(0)