DB2常用SQL技巧及函数

1、组合语句执行

BEGIN ATOMIC

表达式1 分号 空格/回车

表达式2 分号 空格/回车

END

2、应该限制访问权限的表(应该撤销这些表PUBLIC SELECT访问权)
     保护数据库系统表不被破坏
SYSCAT.DBAUTH

SYSCAT.TABAUTH

SYSCAT.PACKAGEAUTH

SYSCAT.INDEXAUTH

SYSCAT.COLAUTH

SYSCAT.PASSTHRUAUTH

SYSCAT.SCHEMAAUTH


比较有用的目录表

SYSCAT.COLUMNS:包含每一行对应于表或视图中定义的列

SYSCAT.INDEXCOLUSE:包含每一行包含的所有列

SYSCAT.INDEXES:包含每一行对应于表或视图中定义的每个索引

SYSCAT.TABLES:所创建每个表,视图,别名对应其中一行

SYSCAT.VIEWS:所创建每个视图对应其中一行或几行


通过索引保持数据唯一性:CREATE UNIQUE INDEX INDEXNAME ON TABLE (COLUMN)

消除重复行:SELECT DISTINCT COLUMN FROM TABLE



3、DB2关于时间的一些函数

得到当前时间的年份、月份、天、小时等等:

YEAR (current timestamp)
MONTH (current timestamp)
DAY (current timestamp)
HOUR (current timestamp)
MINUTE (current timestamp)
SECOND (current timestamp)
MICROSECOND (current timestamp)


分别得到当时的日期和时间

DATE (current timestamp)
TIME (current timestamp)


关于时间的一些计算:

current date + 1 YEAR
current date + 3 YEARS + 2 MONTHS + 15 DAYS
current time + 5 HOURS - 3 MINUTES + 10 SECONDS


计算两个日期之间有多少天:

days (current date) - days (date(’1999-10-22′))

得到去除毫秒的当前时间:

CURRENT TIMESTAMP - MICROSECOND (current timestamp) MICROSECONDS

将时间转换成字符串:

char(current date)
char(current time)
char(current date + 12 hours)


将字符串转换成时间:


TIMESTAMP (’2002-10-20-12.00.00.000000′)
TIMESTAMP (’2002-10-20 12:00:00′)
DATE (’2002-10-20′)
DATE (’10/20/2002′)
TIME (’12:00:00′)
TIME (’12.00.00′)


注意:在DB2的命令编辑器中可以输入SQL语句和DB2中的内部命令。要想显示当前时间的话,不能直接输入current time,这个只能在SQL语言中引用,要想显示有下面方式:

1) VALUES (current time)

2) SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1

这个与SQL SERVER2000中不一样,在SQL SERVER2000中可以输入Getdate()得到时间,既可以显示,也可以在语句SQL中用。


4、所有返回前N条数据的表达式

在SQL SERVER2000中使用TOP N 格式

比如: SELECT TOP 10 CARDNO FROM CARD

在DB2中使用fetch first N rows only 格式

比如:SELECT CARDNO FROM SEALCARD fetch first 10 rows only


5、函数使用

查看系统函数: SELECT * FROM SYSibm.sysfunctions;

比如:ABS(-89)可以作为值输入到SQL中,但是要想在命令编辑器中显示函数的结果的话可以用下列方式:

1)SELECT ABS(-89) FROM SYSIBM.SYSDUMMY1;

2)VALUES ABS(-89); 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值