日志文章

2007年07月08日 19:04:34

sql记事本

1、CAST(chushengriqi as datetime)   强制数据类型转换
3、(DATEDIFF(day,CAST(indatetime as datetime),getdate())/365) 计算年(满一年为1)
4、得到当前年year(getdate())
8、触发器
INSTEAD OF
执行触发器语句,但不执行触发触发器的 SQL 语句,比如试图删除一条记录时,将执行触发器指定的语句,此时不再执行 delete 语句。例:
create trigger f
on tbl
instead of delete
as
insert into Logs...
IF UPDATE(列名)
检查是否更新了某一列,用于 insert 或 update,不能用于 delete。例:
create trigger f
on tbl
for update
as
if update(status) or update(title)
  sql_statement --更新了 status 或 title 列
inserted、deleted
这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表。例:
create trigger tbl_delete
on tbl
for delete
as
declare @title varchar(200)
select @title=title from deleted
insert into Logs(logContent) values('删除了 title 为:' + title + '的记录')
说明:如果向 inserted 或 deleted 虚拟表中取字段类型为 text、image 的字段值时,所取得的值将会是 null。
9、触发器会滚事件
use 数据库名
go
create trigger tr
on 表名
for update
as
if update(userName)
  rollback tran
10、在触发器中,需要用到 SQL Server 的 inserted 和 deleted 两个虚拟表,在执行 sql

命令时,这两个虚拟表分别记录的内容如下:

sql命令   deleted       inserted
---------------------------------------------------
insert   [不可用]       新插入的记录
update   被更新前的记录     被更新后的记录
delete   被删除的记录       [不可用]
---------------------------------------------------
11、触发器中判断结果集为空
if exists(select 1 from 表)
print '不为空'
else
print '为空'
12、Sql随机取数据
MsSql随机取数据 select top 10 * from c_cy_admin order by newid()
Access 随机取数据 select SELECT top 10 id FROM 表1 order by rnd(id)
mySql 随机取数据 SELECT id FROM gueze order by rand() limit 10
13、触发器中条件判断
if (@lend = '借' or @lend<>null)
begin  
@money = @lend_for
end
else  
begin
@money = @lend_in
end
13、触发器中给变量赋值: set @money = @lend_in
14、设置默认值:ISNULL(zhidaun,默认值)
15、跟在FOR EACH ROW后面的语句定义了每次激活触发程序时将执行的程序,对于受触发语句影响的每一行执行一次
16、
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
17、递归触发器
--要设置允许递归触发才行:  
alter   database   你的库名   set   RECURSIVE_TRIGGERS   ON  
RECURSIVE_TRIGGERS   ON   |   OFF  
如果指定为   ON,将允许递归激发触发器。RECURSIVE_TRIGGERS   OFF(默认值)只禁止直接递归。若要也禁用间接递归,请使用   sp_configure   将   nested   triggers   服务器选项设置为   0。
18、触发器的高级应用   http://xinjn.net/html/database/Sybase/38661/
19、去掉左右空格rtrim(ltrim(name))
20、反转字符串REVERSE('dsads')---String
21、得到第一个字符的位置charindex('s','dsadad')---int
22、用sql实现分页select top 10 * from tabAccount where id not in(select top 20 id from tabAccount order by id) order by id
估计效率不高
23、判断字段是否是数字ISNUMERIC(xingming) 如果是数字返回1,不是数字返回0

Tags: sql语法  

类别: jsp技术 |  评论(0) |  浏览(8565) |  收藏
发表评论
看不清楚,换一张