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);