DB2常用SQL技巧及函数

    技术2022-05-11  84

    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)