• 达梦(DM)数据库管理表


    表是数据库中数据存储的基本单元,是对用户数据进行读和操纵的逻辑实体,表由列和行组成,每一行代表一个单独的记录。

    管理表

    管理表的准则

    表的存储空间上限

    DM数据库支持 在创建表时指定 SPACE LIMIT 子句,可以对表的存储空间指定上限。DM 支持对表的存储空间指定大小,单位是 MB,即表的大小可由管理员指定,便于表的规模管理。

    表的存储位置

    创建表时,在 STORAGE 子句中,可对表指定存储的表空间。如果没有指定,则该表将创建在用户的默认表空间中。

    创建表

    创建普通表

    在所属模式中创建新表,需要有 CREATE TABLE 数据库权限;而要在其他用户的模式中创建新表,则需要有 CREATE ANY TABLE 数据库权限。创建表时,应当为表指定一个表空间,否则,表将在 MAIN 创建。

    指定表的聚集索引

    DM 提供三种方式供用户指定聚集索引键:

    1. CLUSTER PRIMARY KEY:指定列为聚集索引键,并同时指定为主键,称为聚集主键;
    2. CLUSTER KEY:指定列为聚集索引键,但是是非唯一的;
    3. CLUSTER UNIQUE KEY:指定列为聚集索引键,并且是唯一的。
    CREATE  TABLE  STUDENT( 
        STUNO     INT         CLUSTER PRIMARY KEY, 
        STUNAME   VARCHAR(15)   NOT NULL, 
        TEANO     INT, 
        CLASSID   INT
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    查询建表

    创建一个与已有表相同的新表,可以使用 CREATE TABLE AS SELECT(CTAS)命令

    CREATE TABLE NEW_EMP
    AS
    SELECT * FROM EMPLOYEE;
    
    • 1
    • 2
    • 3

    更改表

    想更改的表如果在所属的模式中,用户必须具有 ALTER TABLE 数据库权限;若在其他模式中,用户必须有 ALTER ANY TABLE 的数据库权限。
    用户可以对数据库中的表作如下修改:

    1. 添加或删除列,或修改现有的列的定义(列名、数据类型、长度、默认值)。
    2. 添加、修改或删除与表相关的完整性约束;
    3. 重命名一个表;
    4. 启动或停用与表相关的完整性约束;
    5. 启动或停用与表相关的触发器;
    6. 修改表的 SPACE LIMIT;
    7. 增删自增列。

    删除表

    当一个表不再使用时,可以将其删除.一般情况下,普通用户只能删除自己模式下的表。若要删除其他模式下的表,则必须具有 DROP ANY TABLE 数据库权限。
    删除表

    DROP TABLE employee;
    
    • 1

    删除不存在的表会报错,若指定 IF EXISTS 关键字,删除不存在的表,不会报错

    DROP TABLE IF EXISTS employee;
    
    • 1

    如果要删除的表被其他表引用,即其他表的外键引用了表的任何主键或唯一键,则需要在 DROP TABLE 语句中包含 CASCADE 选项

    DROP TABLE employee CASCADE;
    
    • 1

    清空表

    当表的数据不再使用时,需要删除表的所有行,即清空该表
    使用 DELETE 语句能删除表中的行

    DELETE FROM employee;
    
    • 1

    使用 DELETE 清空表,当表有很多行时,会消耗很多系统资源。因为,DELETE 操作需要 CPU 时间,并且会产生大量的 REDO 日志和 UNDO 记录。另外,如果表上关联了元组级触发器,每删除一行,就会启动一次触发器。这都需要大量的系统资源。
    使用 DROP 和 CREATE
    使用 DROP 删除一个表,然后创建一个同名的表,也可以达到清空表的效果

    DROP TABLE employee;
    CREATE TABLE employee();
    
    • 1
    • 2

    使用 TRUNCATE 语句能删除表中的所有行

    TRUNCATE TABLE employee;
    
    • 1

    TRUNCATE 是一个 DDL 语句,不会产生任何回滚信息。执行 TRUNCATE 会立即提交,而且不能回滚。

    查看表定义

    创建表后,可以通过 SP_TABLEDEF 系统过程查看表的定义

    CALL SP_TABLEDEF('SYSDBA', 'employee');
    
    • 1

    查看表空间使用

    DM 支持查看表的空间使用情况

    1. TABLE_USED_SPACE:已分配给表的页面数;
    2. TABLE_USED_PAGES:表已使用的页面数。
    SELECT TABLE_USED_SPACE('SYSDBA','EMPLOYEE');
    SELECT TABLE_USED_PAGES('SYSDBA','EMPLOYEE');
    
    • 1
    • 2
  • 相关阅读:
    Elasticsearch配置文件
    Spring Boot中缓存注解@Cacheable、@CachePut、@CacheEvict
    坚鹏:中国邮储银行金融科技前沿技术发展与应用场景第3期培训
    Linux时间指令
    如何切换npm源 - nrm
    Vue前端页面打印
    从 Elasticsearch 到 SelectDB,观测云实现日志存储与分析的 10 倍性价比提升
    信号面试题
    前端体验优化(2)——基建
    OPPO手机如何添加日程桌面插件?
  • 原文地址:https://blog.csdn.net/csdn565973850/article/details/138125753