-- 在向指定日期加上一段时间的基础上,返回新的 datetime 值
加年份——print dateadd(year, 5, getdate()) 加月份——print dateadd(month, 5, getdate())
加天数——print dateadd(day, 5, getdate()) 加小时——print dateadd(hour, 5, getdate())
加分钟——print dateadd(mi, 5, getdate()) 加秒数——print dateadd(ss, 5, getdate()) ......
公司组织SQL水平考试,看了写教材,写了点总结发上来跟大家分享。
我公司使用的是Sybase ASE12.5,所以下面的一些特性是针对Sybase ASE的。
一:SQL Bisic
1:SQL(Structured Quary Language)特性:
a:标准化
b:非过程化的
c:可优化的
d:面向集合操作的
2:ASE中的数据类型
a:Numberic
b:Character
c:Date/Time
d:Lobs
3: convert(varchar, textColumn),如果不指定varchar(n)n那么默认是30
4:where 在sql中的作用
a:过滤数据
b:做表连接(sql92以前)
c:选择索引
5:whare 和 having的区别
where语句把过滤好的数据插入到work table中
having语句从work table中对数据进行在过滤以得到最后的结果。
6:一个select语句的执行顺序
a:from clause
b:where clause
c:group by clause
d:select clause
e:having clause
f:order by clause
7:Union VS Union All
a:Union 会把两个结果集排序,并且除去重复的元素(效率差,轻易不要用)
b:Union All仅仅是把两个结果集合并,没有排序,也不去除重复元素(效率好)
二:索引和查询参数
1:ASE中有三种access数据方式
a:clustered Index
b:nonclustered Index
c:table sca ......
/*
--创建视图
create view RandomView as select re=rand()
--自定义函数:取得指定范围的随机数
create function RandData(
@a int,
@b int)
returns decimal(38,0)
as
begin
declare @r decimal(38,0)
select @r=cast(re*(@b-@a)+@a as decimal(38,0)) from RandomView
return(@r)
end
go
select * from myview
select dbo.RandData(0,9)
*/ ......
现象:
在装SqlServer 2000时,老是弹出“另一个实例正在运行”的错误信息,结束了进程里sql的相关文件和删除以前安装过的安装目录下的sql文件后,重启电脑后安装还是出现这种情况。
处理办法:
这种情况一般是SqlServer 2000卸载不完全造成的。
在“开始-运行”中输入regedit调出注册表,找到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager,删除PendingFileRenameOperations,然后重新安装试试。
如果还是不行,按以下步骤操作:
如果SqlServer服务在运行,先停止服务,然后再到控制面板下卸载
删除安装路径下的所有目录文件夹,包括注册表,如果担心删除不到位,可以用查找命令,将所有*SQL*的逐一查出,然后再一一确认删除。(如果安装SQL时,不是按默认路径安装,除了删除安装路径下的所有目录文件夹外,主系统盘里的程序组里的相应文件夹也要删除)
删除的时候还应考虑到C:\Program Files\Common Files\Microsoft Shared\web server extensions\40\bin\FPMMC.MSC。
管理工具中,将SQLSERVERAGENT服务停止服务;
此服务程序存放在D:\Program Files\Microsoft SQL Server\MSSQL\Binn\sqlagent.exe -i MSS ......
use tempdb
go
if (object_id ('t1' ) is not null ) drop table t1
if (object_id ('t2' ) is not null ) drop table t2
go
create table t1 (a int )
insert into t1 select 1 union select 2 union select 3
create table t2 (a int )
insert into t2 select 3 union select 4 union select 5
go
select * from t1 union select * from t2
go
/* 求表合集
1
2
3
4
5*/
select * from t1 union all select * from t2
go
/*求表合集不过滤重复
1
2
3
3
4
5*/
select * from t1 except select * from t2
go
/*求t1对t2的差集
1
2*/
select * from t1 intersect select * from t2
go
/*求t1对t2的交集
3*/
本文来自CSDN博客:http://blog.csdn.net/jinjazz/archive/2009/09/07/4527863.aspx ......
以前经常遇到数据库日志文件损坏,或者丢失的情况,今天将解决方案写下来,以后别人再问起就给他个链接,多方便啊.
呵呵:
1.新建一个同名的数据库
2.再停掉sql server(注意不要分离数据库)
3.用要附加的数据文件覆盖掉这个新建的数据库
4.再重启sql server
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
Go
sp_dboption '置疑的数据库名', 'single user', 'true'
Go
DBCC CHECKDB('置疑的数据库名')
Go
update sysdatabases set status =28 where name='置疑的数据库名'
Go
sp_configure 'allow updates', 0 reconfigure with override
Go
sp_dboption '置疑的数据库名', 'single user', 'false'
Go ......