添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
一个数据库可以包含一个或多个命名的模式(SCHEMA),一个模式内可以包含多个表。不同的模式中的表名可以相同,例如,schema1和schema2中可以分别包含名称为mytable的表,但是同一个模式中的表不能同名。模式类似于操作系统级的目录,但模式不能嵌套。其中SYS_CATALOG模式用于存放系统表和所有内置的数据类型、函数和操作符。 当用户没有自己的模式并且其创建或使用数据库对象没有指定模式时,默认使用PUBLIC模式。 模式通常在以下情况下使用: sys_stat_statement是kingbaseES系统的一个扩展组件,它提供了所有执行语句的统计信息,可以帮助找出哪种类型的查询很慢以及多久调用一次查询,帮助您分析对象的SQL语句,选择最有效的执行计划。 模式对象的管理 sys_stat_statement是kingbaseES系统的一个扩展组件,它提供了所有执行语句的统计信息,可以帮助找出哪种类型的查询很慢以及多久调用一次查询,帮助您分析对象的SQL语句,选择最有效的执行计划。 使用这个模块的执行步骤: 在使用DELETE语句时,如果表中存在许多行,在删除这些行时将消耗大量系统资源。例如,CPU时间、重做日志空间、撤销表和相关索引的段空间都需要资源。另外,当删除每一行时,也有可能触发触发器。以前分配给生成的空表空间仍然与该对象关联。 DELETE还可以通过WHERE条件子句删除满足条件的行,而TRUNCATE和DROP直接影响整个对象。 另请参阅: 数据库SQL语言获取关于DELETE语句的语法和其他信息 使用TRUNCATE语句提供快速移除表中所有行的机制。TRUNCATE语句不会生成任何撤消信息,会立即提交,并且它是DDL语句。TRUNCATE语句不会影响与被清空的表相关的任何结构(约束和触发器)或授权。您可以清空自己模式中的任何表。 当TRUNCATE语句从表中删除行时,不会触发与表关联的触发器。此外,如果启用了审计,那么TRUNCATE语句不会生成与DELETE语句对应的任何审计信息。相反,将为发出的TRUNCATE语句生成单个审计记录。 另请参阅: KingbaseES SQL语言参考手册 获取语法和其他关于 TRUNCATE TABLE 语句的信息 要使用ALTER TABLE语句启用或禁用触发器,您必须是这个表的拥有者或者对该表具有ALTER权限。如果使用ALTER TRIGGER语句启用或禁用单个触发器,您必须拥有该触发器。 另请参阅: 如果约束约束状态是ENABLE,在数据库表中输入或更新数据时要进行约束检查,并阻止输入不符合约束的数据输入数据库。如果该约束状态是DISABLE,则输入或者更新数据时不会进行约束规则检查。 另外,您可以指定表中的现有数据必须符合约束(VALIDATE)。相反,如果指定NOVALIDATE状态,则不能确保现有数据符合要求。 在表上定义的完整性约束可以处于以下状态之一: 一个VALIDATE状态的约束表示数据库内现有数据符合约束规则,设置或者修改约束为ENABLE状态时如果没指定有效性,则VALIDATE将是默认值。相反,NOVALIDATE状态表示表内现有数据未做约束规则检查,如果设置或者修改约束为DISABLE状态时如果没指定有效性,则NOVALIDATE将是默认值。 完整性约束状态 禁用约束后,违反约束的行则可以插入到表中,该行则被认为是约束异常。而且如果约束处于启用非校验状态(ENABLE,NOVALIDATE),则在禁用约束时插入的违反约束的数据将依然被保留。违反约束的行必须更新或者删除,才能将约束置于VALIDATE状态。 当表的约束处于ENABLE,NOVALIDATE状态时,意味着表中现有数据可以不符合约束规则,但后面新增的数据必须进行规则校验,这对于数据仓库来说特别有用。因为基本上数据仓库都是使用增量更新,在停用约束后如果采用启用校验约束状态,则需要对大量数据进行校验,影响性能。 另外说明:校验一个已经启用的约束,在校验期间不需要任何DML锁,因此在校验期间可以保证没有引入违反约束的数据。 完整性约束状态 stu_no number(8) PRIMARE KEY, stu_name char(8) NOT NULL, gender char(2) CHECK(gender IN ('男','女')), birthday date, class varchar(40)
CREATE TABLE student(
        stu_no number(8) CONSTRAINT con_sno PRIMARE KEY,
        stu_name char(8) CONSTRAINT con_name NOT NULL,
        gender char(2) CONSTRAINT con_gen CHECK(gender IN ('男','女')),
        birthday date,
        class varchar(40)
        class varchar(40)
        --定义约束,格式:CONSTRAINT 约束名 约束类型(列名)
        CONSTRAINT con_sno PRIMARE KEY(stu_no),
        CONSTRAINT con_gen CHECK(gender IN ('男','女'))
        可以使用ALTER TABLE语句启用、禁用、修改或删除约束。当数据库使用UNIQUE或PRIMARY KEY索引强制约束时,如果与该索引相关的约束被删除或禁用,则索引将被删除,除非您另行指定。
当启用外键引用PRIMARY或UNIQUE键时,不能禁用或删除PRIMARY或UNIQUE键约束或索引。
        在事务COMMIT之前,可以用 SET CONSTRAINTS ALL IMMEDIATE 语句来手工检查约束的违反情况。虽然在事务结束时会自动隐性执行这条语句,但是也是有一定的存在意义的,例如希望在错误时定义某些操作。
          管理完整性约束
        SET CONSTRAINTS语句只应用于当前事务。只要约束存在,在创建约束时指定的默认值就保持不变。ALTER SESSION SET CONSTRAINTS语句只适用于当前会话。
        另请参阅:
        数据库SQL语言获取有关SET CONSTRAINTS语句详细语法和描述
          延迟约束检查
        KingbaseES提供的PL/SQL包DBMS_METADATA.GET_DDL允许您获取关于模式对象的元数据(以用于创建对象的DDL的形式)。
DBMS_METADATA包是获取模式对象完整定义的强大工具。它使您能够在一次传递中获得对象的所有属性。该对象被描述为DDL,可用于(重新)创建它。
在下面的语句中,GET_DDL函数用于获取当前模式中所有表的DDL。
         
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
     FROM USER_ALL_TABLES u
     WHERE u.nested='NO'
     AND (u.iot_type is null or u.iot_type='IOT');