为了查询数据库中的表、列、索引及约束,Ksql提供了系统表,运行期会翻译成相应的数据库的系统表查询sql,具体说明如下:
系统表 | 含义 | 字段 | 含义 | 说明 |
KSQL_USERTABLES | 表格查询表 | KSQL_TABNAME | 表名 | |
KSQL_USERCOLUMNS | 列查询表 | KSQL_COL_NAME | 列名称 | |
KSQL_COL_TABNAME | 表名称 | |||
KSQL_COL_NULLABLE | 是否可以为空 | Y|N (DB2, ORACLE) 1|0 (SQL SERVER) | ||
KSQL_COL_DEFAULT | 列的默认值字段 | |||
KSQL_INDEXES | 索引查询表 | KSQL_INDNAME | 索引名称 | |
KSQL_CONSTRAINTS | 约束查询表 | KSQL_CONS_NAME | 约束名称 | |
KSQL_CONS_TABNAME | 约束所在的表名称 | |||
KSQL_CONS_TYPE | 约束类型 | KSQL_CT_F: FOREIGN KEY KSQL_CT_U: UNIQUE KEY KSQL_CT_C: CHECK KSQL_CT_P: PRIMARY KEY |
例子:
表信息:
SELECT KSQL_TABNAME FROM KSQL_USERTABLES
列信息:
SELECT KSQL_COL_NAME, KSQL_COL_TABNAME, KSQL_COL_NULLABLE, KSQL_COL_DEFAULT FROM KSQL_USERCOLUMNS
索引:
SELECT KSQL_INDNAME FROM KSQL_INDEXES
约束:
SELECT KSQL_CONS_NAME, KSQL_CONS_TABNAME FROM KSQL_CONSTRAINTS WHERE KSQL_CONS_TYPE='KSQL_CT_F' OR KSQL_CONS_TYPE='KSQL_CT_U' OR KSQL_CONS_TYPE='KSQL_CT_C' OR KSQL_CONS_TYPE='KSQL_CT_P'