本文將會為您介紹Hologres中的系統資料表以及每個表如何使用。
概述
Hologres系統資料表的組成如下表所示。
表名 | 使用情境 |
查看當前資料庫下Hologres所有表以及表屬性。 | |
查看錶、視圖等關係的資訊。 | |
查看錶的鎖資訊。 | |
PostgreSQL原生中繼資料表,一般是結合其他PostgreSQL系統資料表一起使用,查看錶關係等資訊。 | |
Hologres的統計資訊表,用於多節點共用統計資訊儲存。 | |
PostgreSQL原生統計資訊表,在單節點本地直接供planner使用。 | |
查看執行個體內角色及其許可權資訊。 | |
查看使用者角色被授予對象(表、視圖等)的許可權資訊。 |
使用限制
表名稱以
hg
開頭的是Hologres系統資料表,以pg
開頭的是PostgreSQL系統資料表,簡稱PG系統資料表。PG系統資料表不能與業務建立的表進行關聯查詢,也不能將PG系統資料表的資料匯入至業務建立的表中。說明Hologres 從V1.3.22版本開始,支援PG系統資料表與業務建立的表進行Join,以及將系統資料表資料匯出到Hologres表,但需注意,如果存在Hologres不支援的資料類型,則無法匯出到Hologres表,也無法與Hologres表進行Join。如果有需求請您升級執行個體。
在Hologres中,系統資料表中的OID欄位表示表、索引、視圖等關係的唯一標誌符。但Postgres是單機系統,Hologres是分布式系統,有多個FE節點,每個FE節點的OID序列通常不相同。所以當查詢結果中有OID時,可能會出現OID結果不一致的情況。
hologres.hg_table_properties
hologres.hg_table_properties用於存放當前資料庫下的所有表和表屬性,包含如下欄位。
欄位 | 說明 |
table_namespace | Schema名稱,Hologres會包含3個系統Schema:
|
table_name | 表名稱,Hologres包含多個系統資料表,如下。
|
property_key | 表屬性,包含如下屬性。
|
property_value | 表屬性的值。 |
pg_catalog.pg_tables
pg_tables儲存表的元資訊,包含如下欄位。
欄位 | 描述 |
schemaname | 表所在的Schema名稱,除了業務建立的Schema外,還包含系統Schema名稱如下。
|
tablename | 表名稱。 |
tableowner | 表的Owner。 developer使用者組:開啟了簡單許可權模型(SPM)或者基於Schema層級的簡單許可權模型(簡稱SLPM)。 |
tablespace | Hologres無此概念,無需關注 |
hasindexes | 如果表有(或最近有過)任何一個索引,此列為true。 |
hasrules | 如果表有(或曾經有過)規則,此列為true。 |
hastriggers | 如果表有(或曾經有過)觸發器,此列為true。 |
rowsecurity | 如果表上啟用了安全性規則,此列為true。在Hologres中無需關注。 |
pg_catalog.pg_locks
pg_locks記錄運行時的鎖資訊,常用於當發現DDL卡住或者Query卡住時,定位是否有鎖,其欄位如下。
欄位 | 說明 |
locktype | 鎖的類型,包含如下類型。
|
database | 目標所在的資料庫的物件識別碼(OID)。 |
relation | 表的物件識別碼(OID),如果目標不是表,也不是表的一部分,則為null。 |
page | 在Hologres內無需關注。 |
tuple | 在Hologres內無需關注。 |
virtualxid | 事務的虛擬ID,如果目標不是虛擬事務ID,就為null。 |
transactionid | 事務的ID,如果目標不是事務ID,就為null。 |
classid | 包含該目標的系統資料表的物件識別碼(OID),如果目標不是普通資料庫物件,則為null。在Hologres內無需關注。 |
objid | 在Hologres內無需關注。 |
objsubid | 在Hologres內無需關注。 |
virtualtransaction | 持有或者等待此鎖的事務ID。在Hologres內無需關注。 |
pid | 持有或者等待這個鎖的伺服器處理序的進程 ID,可以通過pg_stat_activity這個表查看進程資訊。 |
mode | 這個進程的鎖模式,分為共用鎖定和獨佔鎖定等模式。 |
granted |
|
fastpath |
在Hologres內無需關注。 |
pg_catalog.pg_class
pg_class用於儲存原生Postgres的所有系統資訊,包含如下欄位。
名字 | 說明 |
oid | 表、索引、視圖等關係的唯一標誌符。 說明 Postgres是單機系統,Hologres是分布式系統,有多個FE節點,每個FE節點的OID序列通常不相同。所以當查詢結果中有OID時,可能會出現OID結果不一致的情況。 |
relname | 表、索引、視圖等關係的名稱。 |
relnamespace | 包含這個關係的Schema的OID。 |
reltype | 在Hologres內無需關注。 |
reloftype | 在Hologres內無需關注。 |
relowner | 關係的Owner。 |
relam | 在Hologres內無需關注。 |
relfilenode | 在Hologres內無需關注。 |
reltablespace | 在Hologres內無需關注。 |
relpages | 在Hologres內無需關注。 |
reltuples | 表中行的數目。只是查詢規劃器使用的一個估計值,由VACUUM、ANALYZE和幾個DDL命令更新。在Hologres中用作統計資訊的行數。 |
relallvisible | 在表的可見映射中標記所有可見的頁的數目。只是查詢規劃器使用的一個估計值, 由VACUUM、ANALYZE 和幾個 DDL 命令更新。在Hologres中用作統計資訊的版本 |
reltoastrelid | 在Hologres內無需關注。 |
relhasindex | 如果它是一個表而且至少有(或者最近有過)一個索引,則為true。 |
relisshared | 如果該表在整個叢集中由所有資料庫共用則為true。只有某些系統資料表(比如pg_database)是共用的,在Hologres內無需關注。 |
relpersistence | 有如下值。
|
relkind | 有如下值。
|
relnatts | 表中列的數目(不包含系統欄位)。 |
relchecks | 表裡的CHECK約束的數目,詳情請參見pg_constraint,在Hologres內無需關注。 |
relhasoids | 如果為關係中每行都產生一個OID則為true。在Hologres內無需關注。 |
relhaspkey | 如果這個表有一個(或者曾經有一個)主鍵,則為true。 |
relhasrules | 如果這個表有(或曾經有)規則就為true,詳情請參見pg_rewrite。在Hologres內無需關注。 |
relhastriggers | 如果表有(或者曾經有)觸發器,則為true,詳情見pg_trigger。在Hologres內無需關注。 |
relhassubclass | 如果表有(或者曾經有)任何繼承的子表,則為true。 |
relispopulated | 在Hologres內無需關注。 |
relreplident | 在Hologres內無需關注。 |
relfrozenxid | 在Hologres內無需關注。 |
relminmxid | 在Hologres內無需關注。 |
relacl | |
reloptions | 表的屬性,例如autovacuum_enabled=false代表關閉此表的autovacuum/autoanalyze功能。 |
hologres_statistic.hg_table_statistic
Hologres的統計資訊表,其欄位如下。
欄位 | 說明 |
unique_name | 表的唯一標誌。 |
schema_version | 表的版本號碼。 |
statistic_version | 統計資訊版本。 |
statistics | 統計資訊內容,Base64編碼。 |
schema_name | 表所在Schema名稱。 |
table_name | 表名稱。 |
total_rows | 總行數。 |
sample_rows | 本統計資訊的採樣行數。 |
nattr | 表的欄位個數。 |
used_attrs | Analyze用到的欄位。 |
histogram_attrs | 具備長條圖統計資訊的欄位。 |
ndv_attrs | 具備distinct value統計資訊的欄位。 |
user_name | Analyze或者Auto Analyze的執行者。 |
analyze_timestamp | Analyze或者Auto Analyze的執行開始時間。 |
analyze_cost | Analyze或者Auto Analyze的耗時。 |
analyze_count | Analyze或者Auto Analyze的次數。 |
pg_catalog.pg_stats
pg_stats用於儲存Postgres原生的統計資訊,欄位如下。
欄位 | 說明 |
schemaname | Schema名稱。 |
tablename | 表名稱。 |
attname | 列名(欄位名)。 |
inherited | 如果為true,表示此行包括繼承子列。 |
null_frac | 記錄中欄位為空白的百分比。 |
avg_width | 列的平均位元組寬度。 |
n_distinct |
例如,-1表示一個唯一列,即其中distinct值的個數等於行數。 |
most_common_vals | 列中Most Common Values的一個列表(如果沒有任何一個值看起來比其他值更常用,此列為空白)。 |
most_common_freqs | Most Common Values值的頻率列表,即每一個常用值的出現次數除以總行數(如果most_common_vals為空白,則此列為空白)。 |
histogram_bounds | 將列值劃分成大小接近的組的值列表,即長條圖列表。如果存在most_common_vals,其中的值會被長條圖計算所忽略。 |
correlation | 在Hologres內無需關注。 |
most_common_elems | 在列值中,Most Common Values出現的非空元素列表。 |
most_common_elem_freqs | Most Common Values值的頻度列表,即含有至少一個給定值執行個體的行的分數。(如果most_common_elems為空白,則此列為空白)。 |
elem_count_histogram | 在Hologres中無需關注。 |
pg_catalog.pg_roles
pg_roles用於存放執行個體內角色及其許可權資訊,欄位如下。
欄位 | 說明 |
rolname | 角色名稱。 |
rolsuper | 角色是否具有超級使用者權限,取值如下。
|
rolinherit | 如果此角色是另一個角色的成員,角色是否能自動繼承,取值如下。
|
rolcreaterole | 能否建立更多角色,取值如下。
|
rolcreatedb | 能否建立資料庫,取值如下。
|
rolcanlogin | 角色是否能登入執行個體,取值如下。
|
rolreplication | 在Hologres內無需關注。 |
rolconnlimit | 使用者的串連數限制,-1表示無限制。 |
rolpassword | 在Hologres內無需關注。 |
rolvaliduntil | 在Hologres內無需關注。 |
rolbypassrls | 在Hologres內無需關注。 |
rolconfig | 在Hologres內無需關注。 |
oid | 角色的ID,唯一標誌符。 |
information_schema.role_table_grants
Hologres執行個體中使用者角色被授予對象(表、視圖等)的許可權資訊表,其欄位如下。
欄位 | 描述 |
grantor | 授權方角色。 |
grantee | 被授權方角色。 |
table_catalog | 資料庫名稱。 |
table_schema | Schema名稱。 |
table_name | 表名稱。 |
privilege_type | 被授予許可權的類型:
|
is_grantable | 如果許可權是可授予的,則此列值為 |
with_hierarchy | 權限類別型為SELECT時,此列值為 |
常用SQL
一些常見命令可以通過psql簡寫來實現,詳情請參見psql。同時也可以根據業務情況選擇使用如下提供的常見SQL。
查看錶對應的Hologres索引和屬性資訊
SELECT * FROM hologres.hg_table_properties where table_name = '<tablename>';
tablename為表名稱。
查看錶/視圖DDL
select hg_dump_script('<tablename>'); -- 表DDL
select hg_dump_script('<viewname>'); -- 視圖DDL
如果執行失敗,需要使用如下命令在DB中建立extension。
create extension hg_toolkit;
查看執行個體的Endpoint
除了在Hologres管理主控台查看執行個體的Endpoint外,還可以通過以下命令查看執行個體的Endpoint。
show hg_frontend_endpoints;
查看當前執行個體下的所有資料庫
SELECT
d.datname AS "Name",
pg_catalog.pg_get_userbyid(d.datdba) AS "Owner",
pg_catalog.pg_encoding_to_char(d.encoding) AS "Encoding",
d.datcollate AS "Collate",
d.datctype AS "Ctype",
pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM
pg_catalog.pg_database d
WHERE
d.datname != 'postgres'
AND d.datname != 'template0'
AND d.datname != 'template1'
ORDER BY
1;
列出當前資料庫下所有User Mapping
SELECT
um.srvname AS "Server",
um.usename AS "User name"
FROM
pg_catalog.pg_user_mappings um
WHERE
um.srvname != 'query_log_store_server'
ORDER BY
1,
2;
列出當前資料庫下所有Schema
SELECT
n.nspname AS "Name",
pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"
FROM
pg_catalog.pg_namespace n
WHERE
n.nspname !~ '^pg_'
AND n.nspname <> 'information_schema'
AND n.nspname != 'hologres'
AND n.nspname != 'hologres_sample'
AND n.nspname != 'hologres_statistic'
AND n.nspname !~ '^hg_'
AND n.nspname !~ '^holo_'
ORDER BY
1;
列出當前資料庫下所有表、外表和視圖
SELECT
n.nspname AS "Schema",
c.relname AS "Name",
CASE c.relkind
WHEN 'r' THEN
'table'
WHEN 'v' THEN
'view'
WHEN 'm' THEN
'materialized view'
WHEN 'i' THEN
'index'
WHEN 'S' THEN
'sequence'
WHEN 's' THEN
'special'
WHEN 'f' THEN
'foreign table'
WHEN 'p' THEN
'partitioned table'
WHEN 'I' THEN
'partitioned index'
END AS "Type",
pg_catalog.pg_get_userbyid(c.relowner) AS "Owner"
FROM
pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE
c.relkind IN ('r', 'p', 'v', 'm', 'S', 'f', '')
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY
1,
2;
查看當前Schema下所有表以及表Owner(不包含系統資料表)
--查看當前DB下所有表(包含系統資料表)
SELECT * FROM pg_tables
--查看當前schema下所有表以及表owner(不包含系統資料表)
SELECT n.nspname as "Schema"
,c.relname as "Name"
,CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as "Type"
,pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n
ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','p','v','m','S','f','')
and n.nspname <> 'pg_catalog'
and n.nspname <> 'information_schema'
and n.nspname !~ '^pg_toast'
and pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1, 2;
查看父表對應的所有子表
-- 含分區索引值
SELECT c.oid::pg_catalog.regclass
,c.relkind
,pg_catalog.pg_get_expr(c.relpartbound, c.oid)
FROM pg_catalog.pg_class c
,pg_catalog.pg_inherits i
WHERE c.oid = i.inhrelid
AND i.inhparent::pg_catalog.regclass = 'parent_table_name'::pg_catalog.regclass
ORDER BY pg_catalog.pg_get_expr(c.relpartbound, c.oid) = 'DEFAULT'
;
-- 不含分區索引值
SELECT
nmsp_parent.nspname AS parent_schema,
parent.relname AS parent,
nmsp_child.nspname AS child_schema,
child.relname AS child
FROM pg_inherits
JOIN pg_class parent ON pg_inherits.inhparent = parent.oid
JOIN pg_class child ON pg_inherits.inhrelid = child.oid
JOIN pg_namespace nmsp_parent ON nmsp_parent.oid = parent.relnamespace
JOIN pg_namespace nmsp_child ON nmsp_child.oid = child.relnamespace
WHERE parent.relname='parent_table_name';
查看所有子表的建立時間和所屬父表
select
cn.nspname as child_schema_name,c.relname as child_table_name,
pn.nspname as parent_schema_name,p.relname as parent_table_name,
to_timestamp(cp.property_value::bigint) as create_time
from pg_inherits i
left join pg_class p on p.oid=i.inhparent
left join pg_namespace pn on pn.oid = p.relnamespace
left join pg_class c on c.oid=i.inhrelid
left join pg_namespace cn on cn.oid = c.relnamespace
left join hologres.hg_table_properties cp on cp.property_key='create_time' and cp.table_namespace=pn.nspname and cp.table_name = c.relname;
查看所有外部表格以及外部表格對應的MaxCompute表
SELECT n.nspname
,c.relname
,s.srvname
,pg_catalog.array_to_string(
ARRAY(
SELECT pg_catalog.quote_ident(option_name) || ' ' || pg_catalog.quote_literal(option_value) FROM pg_catalog.pg_options_to_table(ftoptions)
)
,', '
)
FROM pg_catalog.pg_foreign_table f
,pg_catalog.pg_foreign_server s
,pg_catalog.pg_class c
,pg_catalog.pg_namespace n
WHERE s.oid = f.ftserver
and c.oid = f.ftrelid
and c.relnamespace = n.oid
and n.nspname not in ('hologres', 'hologres_statistic', 'pg_catalog', 'pg_toast')
;
列出當前資料庫下所有視圖
SELECT
n.nspname AS "Schema",
c.relname AS "Name",
CASE c.relkind
WHEN 'r' THEN
'table'
WHEN 'v' THEN
'view'
WHEN 'm' THEN
'materialized view'
WHEN 'i' THEN
'index'
WHEN 'S' THEN
'sequence'
WHEN 's' THEN
'special'
WHEN 'f' THEN
'foreign table'
WHEN 'p' THEN
'partitioned table'
WHEN 'I' THEN
'partitioned index'
END AS "Type",
pg_catalog.pg_get_userbyid(c.relowner) AS "Owner"
FROM
pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE
c.relkind IN ('v', '')
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY
1,
2;
查看錶被哪些view依賴
select * from information_schema.view_table_usage where table_name = '<table_name>';
查看錶或者表欄位的注釋
查看指定表中欄位的注釋:
SELECT a.attname as Column, pg_catalog.format_type(a.atttypid, a.atttypmod) as "Type", a.attnotnull as "Nullable", pg_catalog.col_description(a.attrelid, a.attnum) as "Description" FROM pg_catalog.pg_attribute a WHERE a.attnum > 0 AND NOT a.attisdropped AND a.attrelid = '<schema.tablename>'::regclass::oid ORDER BY a.attnum;
其中schema.tablename為
{Schema名稱}.{表名稱}
。查看錶的注釋並且包含表的Owner等相關資訊。
SELECT n.nspname as "Schema", c.relname as "Name", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'table' WHEN 'I' THEN 'index' END as "Type", pg_catalog.pg_get_userbyid(c.relowner) as "Owner", pg_catalog.pg_size_pretty(pg_catalog.pg_table_size(c.oid)) as "Size", pg_catalog.obj_description(c.oid, 'pg_class') as "Description" FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','p','v','m','S','f','') AND n.nspname <> 'pg_catalog' AND n.nspname <> 'information_schema' AND n.nspname !~ '^pg_toast' AND pg_catalog.pg_table_is_visible(c.oid) ORDER BY 1,2; --返回結果樣本 List of relations Schema | Name | Type | Owner | Size | Description --------+------+-------+------------------+---------+------------- public | a | table | 1365937xxxx | xxxx bytes | abcdef (1 row)
只查看指定表的注釋資訊:
select pg_catalog.obj_description('<tablename>'::regclass::oid, 'pg_class') as "Description"; --返回結果樣本 Description ------------ abcdef
其中tablename為指定表名稱。
列出當前資料庫下所有使用者和角色
SELECT
r.rolname,
r.rolsuper,
r.rolinherit,
r.rolcreaterole,
r.rolcreatedb,
r.rolcanlogin,
r.rolconnlimit,
r.rolvaliduntil,
ARRAY (
SELECT
b.rolname
FROM
pg_catalog.pg_auth_members m
JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
WHERE
m.member = r.oid) AS memberof,
r.rolreplication,
r.rolbypassrls
FROM
pg_catalog.pg_roles r
WHERE
r.rolname !~ '^pg_'
ORDER BY
1;
列出當前資料庫下所有EXTENSIONS
SELECT
e.extname AS "Name",
e.extversion AS "Version",
n.nspname AS "Schema",
c.description AS "Description"
FROM
pg_catalog.pg_extension e
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = e.extnamespace
LEFT JOIN pg_catalog.pg_description c ON c.objoid = e.oid
AND c.classoid = 'pg_catalog.pg_extension'::pg_catalog.regclass
WHERE
e.extname != 'hg_admin_cmd'
AND e.extname != 'holo_dump_stat'
AND e.extname != 'holo_funcs'
AND e.extname != 'holo_link'
AND e.extname != 'holo_system_admin'
AND e.extname != 'holo_dump_stat'
AND e.extname != 'query_log'
AND e.extname != 'plpgsql'
ORDER BY
1;
查看某個帳號的對應許可權
SELECT * FROM pg_roles where rolname='<uid>'
查看當前執行個體下所有的使用者以及許可權樣本
SELECT r.rolname
,r.rolsuper
,r.rolinherit
,r.rolcreaterole
,r.rolcreatedb
,r.rolcanlogin
,r.rolconnlimit
,r.rolvaliduntil
,ARRAY(
SELECT b.rolname FROM pg_catalog.pg_auth_members m JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid) WHERE m.member = r.oid
) as memberof
,r.rolreplication
,r.rolbypassrls
FROM pg_catalog.pg_roles r
WHERE r.rolname !~ '^pg_'
ORDER BY 1;
查看一個使用者有許可權的所有表
SELECT current_database()::information_schema.sql_identifier AS table_catalog,
nc.nspname::information_schema.sql_identifier AS table_schema,
c.relname::information_schema.sql_identifier AS table_name,
CASE
WHEN nc.oid = pg_my_temp_schema() THEN 'LOCAL TEMPORARY'::text
WHEN c.relkind = ANY (ARRAY['r'::"char", 'p'::"char"]) THEN 'BASE TABLE'::text
WHEN c.relkind = 'v'::"char" THEN 'VIEW'::text
WHEN c.relkind = 'f'::"char" THEN 'FOREIGN'::text
ELSE NULL::text
END::information_schema.character_data AS table_type,
CASE
WHEN (c.relkind = ANY (ARRAY['r'::"char", 'p'::"char"])) OR (c.relkind = ANY
(ARRAY['v'::"char", 'f'::"char"])) AND (pg_relation_is_updatable(c.oid::regclass, false)
& 8) = 8 THEN 'YES'::text
ELSE 'NO'::text
END::information_schema.yes_or_no AS is_insertable_into,
CASE
WHEN t.typname IS NOT NULL THEN 'YES'::text
ELSE 'NO'::text
END::information_schema.yes_or_no AS is_typed,
NULL::character varying::information_schema.character_data AS commit_action
FROM pg_namespace nc
JOIN pg_class c ON nc.oid = c.relnamespace
LEFT JOIN (pg_type t
JOIN pg_namespace nt ON t.typnamespace = nt.oid) ON c.reloftype = t.oid
WHERE (c.relkind = ANY (ARRAY['r'::"char", 'v'::"char", 'f'::"char", 'p'::"char"])) AND
NOT pg_is_other_temp_schema(nc.oid) AND (pg_has_role('<USERID>', c.relowner, 'USAGE'::text)
OR has_table_privilege('<USERID>', c.oid, 'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER'::text)
OR has_any_column_privilege('<USERID>', c.oid, 'SELECT, INSERT, UPDATE, REFERENCES'::text));
查看一張表有許可權的所有使用者
select rolname from pg_roles where has_table_privilege(rolname, '<schemaname>.<tablename>',
'SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER');