首页 > 数据库 >达梦数据库7_第 3 章 数据定义语句_3.6 管理表

达梦数据库7_第 3 章 数据定义语句_3.6 管理表

时间:2024-01-15 17:13:22浏览次数:36  
标签:语句 分区 指定 3.6 分区表 KEY 指明 SUBPARTITION 达梦

3.6 管理表 


3.6 管理表

3.6.1 基表定义语句

用户数据库建立后,就可以定义基表来保存用户数据的结构。达梦数据库中基表可以分

为两类,分别为数据库表和外部表,数据库表由数据库管理系统自行组织管理,而外部表在

数据库的外部组织,是操作系统文件。手册中如无明确说明基表均指数据库表。下面分别对

这两类基表的创建与使用进行详细描述。

3.6.1.1 数据库基表

用户数据库建立后,就可以定义基表来保存用户数据的结构。需指定如下信息:

1. 表名、表所属的模式名;

2. 列定义;

3. 完整性约束。

语法格式

CREATE [[GLOBAL] TEMPORARY] TABLE <表名定义> <表结构定义>;

<表名定义> ::= [<模式名>.] <表名>

<表结构定义>::=<表结构定义 1> | <表结构定义 2>

<表结构定义 1>::= (<列定义> {,<列定义>} [,<表级约束定义>{,<表级约束定义>}]) [ON COMMIT <DELETE | PRESERVE> ROWS] [<PARTITION 子句>][<空间限制子句>] [<STORAGE 子句>][<压缩子句>] [<ROW MOVEMENT 子句>][<DISTRIBUTE 子句>]

<表结构定义 2>::= [ON COMMIT <DELETE | PRESERVE> ROWS] [<空间限制子句>][<STORAGE 子句>] [<压缩子句>]AS <不带 INTOSELECT 语句>[<DISTRIBUTE 子句>];

<列定义> ::= <不同类型列定义> [<列定义子句>] [<STORAGE 子句>][<存储加密子句>]

<不同类型列定义> ::=<普通列定义>|<虚拟列列定义>

<普通列定义>::= <列名> <数据类型>

<虚拟列列定义> ::= <列名>[<数据类型>] [GENERATED ALWAYS]AS (<虚拟列定义>) [VIRTUAL]

[VISIBLE]

<列定义子句> ::=

DEFAULT <列缺省值表达式> |

<IDENTITY 子句> |

<列级约束定义> |

DEFAULT <列缺省值表达式> <列级约束定义> |

<IDENTITY 子句> <列级约束定义> |

<列级约束定义> DEFAULT <列缺省值表达式> |

<列级约束定义> <IDENTITY 子句>

<IDENTITY 子句> ::= IDENTITY [(<种子>,<增量>)]

<列级约束定义> ::= <列级完整性约束>{,<列级完整性约束>}

<列级完整性约束> ::= [CONSTRAINT <约束名>] < column_constraint_action>[<失效生效选项>]

< column_constraint_action>::=[NOT] NULL |<唯一性约束选项> [USING INDEX TABLESPACE {<表空间名> | DEFAULT}]|<引用约束> |CHECK (<检验条件>)|NOT VISIBLE

<唯一性约束选项> ::= [PRIMARY KEY ]| [[NOT] CLUSTER PRIMARY KEY] |[CLUSTER[UNIQUE] KEY] | UNIQUE |<引用约束> ::= [FOREIGN KEY] REFERENCES [PENDANT] [<模式名>.]<表名>[(<列名>{[,<

列名>]})] [MATCH <FULL|PARTIAL|SIMPLE>][<引用触发动作>] [WITH INDEX]

<引用触发动作> ::=

<UPDATE 规则> [<DELETE 规则>] |

<DELETE 规则> [<UPDATE 规则>]

<UPDATE 规则> ::= ON UPDATE <引用动作>

<DELETE 规则> ::= ON DELETE <引用动作>

<引用动作> ::= CASCADE | SET NULL | SET DEFAULT | NO ACTION

<失效生效选项>::=ENABLE | DISABLE

<STORAGE 子句> ::= STORAGE(<STORAGE 项> {,<STORAGE 项>})

<STORAGE 项> ::=

[INITIAL <初始簇数目>] |

[NEXT <下次分配簇数目>] |

[MINEXTENTS <最小保留簇数目>] |

[ON <表空间名>] |

[FILLFACTOR <填充比例>]|

[BRANCH <BRANCH 数>]|

[BRANCH (<BRANCH 数>, <NOBRANCH 数>)]|

[NOBRANCH]|

[CLUSTERBTR]|

[WITH COUNTER]|

[WITHOUT COUNTER] |

[USING LONG ROW]

<存储加密子句> ::= <存储加密子句 1>|<存储加密子句 2>

<存储加密子句 1> ::= ENCRYPT [<加密用法>|<加密用法><加密模式>|<加密模式>]

<存储加密子句 2> ::= ENCRYPT { <加密用法>|<加密用法><加密模式>|<加密模式>}<散列选项>

<加密用法> ::= WITH <加密算法>

<加密模式> ::= <透明加密模式> | <半透明加密模式>

<透明加密模式> ::= AUTO

<半透明加密模式> ::= MANUAL</DI< div>

<散列选项> ::= HASH WITH [<密码引擎名>].<散列算法> [<加盐选项>]

<加盐选项> ::= [NO] SALT

<加密算法> ::= DES_ECB | DES_CBC | DES_CFB|DES_OFB|DESEDE_ECB|

DESEDE_CBC | DESEDE_CFB|DESEDE_OFB | AES128_ECB |

AES128_CBC | AES128_CFB | AES128_OFB | AES192_ECB |

AES192_CBC | AES192_CFB | AES192_OFB | AES256_ECB |

AES256_CBC | AES256_CFB | AES256_OFB | RC4

<散列算法> ::= MD5 | SHA1

<表级约束定义>::=[CONSTRAINT <约束名>] <表级约束子句>[<失效生效选项>]

<表级约束子句>::=<表级完整性约束>

<表级完整性约束> ::=

<唯一性约束选项> (<列名> {,<列名>}) [USING INDEX TABLESPACE{ <表空间名> |

DEFAULT}]|

FOREIGN KEY (<列名>{,<列名>}) <引用约束> |

CHECK (<检验条件>)

<PARTITION 子句> ::= PARTITION BY <PARTITION 项>

<PARTITION 项> ::=

RANGE (<列名>{,<列名>}) [INTERVAL <间隔表达式>] [<子分区模板>{,<子分区模

板>}](<RANGE 分区项> {,<RANGE 分区项>}) |

HASH (<列名>{,<列名>}) [<子分区模板>{,<子分区模板>}]PARTITIONS <分区数>

[<STORAGE HASH 子句>]|

HASH(<列名>{,<列名>})[<子分区模板>{,<子分区模板>}] (<HASH 分区项> {,<HASH 分

区项>})|

LIST(<列名>)[<子分区模板>{,<子分区模板>}](<LIST 分区项> {,<LIST 分区项>})|

COLUMN (<列名> {,<列名>}) [AS <别名>]|

COLUMN (<列分区项> {,<列分区项>})

<RANGE 分区项>::= PARTITION <分区名> VALUES [EQU OR] LESS THAN (<常量表达式|<

日期函数表达式>|MAXVALUE>{,<常量表达式|<日期函数表达式>|MAXVALUE>}) [<STORAGE 子

句>][<子分区描述项>]

< 日 期 函 数 表 达 式 > ::= <to_date 函数表达式 > | <to_datetime 函 数 表 达 式 > |

<to_timestamp 函数表达式>

<列分区项>::= (<列名>{,<列名>}) [AS <别名>] [<STORAGE 子句>]

<HASH 分区项>::= PARTITION <分区名> [<STORAGE 子句>][<子分区描述项>]

<LIST 分区项>::= PARTITION <分区名> VALUES (DEFAULT|<<表达式>,{<表达式>}>)

[<STORAGE 子句>][<子分区描述项>]

<子分区描述项> ::=

(<RANGE 子分区描述项>{,<RANGE 子分区描述项>})|

(<HASH 子分区描述项>{,<HASH 子分区描述项>})|

SUBPARTITIONS <分区数> [<STORAGE HASH 子句>]|

(<LIST 子分区描述项>{,<LIST 子分区描述项>})

<RANGE 子分区描述项> ::= <RANGE 子分区项>[<子分区描述项>]

<HASH 子分区描述项> ::= <HASH 子分区项>[<子分区描述项>]

<LIST 子分区描述项> ::= <LIST 子分区项>[<子分区描述项>]</DI< div>

<RANGE 子分区项> ::=

SUBPARTITION <分区名> VALUES [EQU OR] LESS THAN (<常量表达式|<日期函数表达

式>|MAXVALUE>){,<常量表达式|<日期函数表达式>|MAXVALUE>}) [<STORAGE 子句>]

<HASH 子分区项> ::= SUBPARTITION <分区名> [<STORAGE 子句>]

<LIST 子分区项> ::= SUBPARTITION <分区名> VALUES (DEFAULT|<<表达式>,{<表达式>}>)

[<STORAGE 子句>]

<间隔表达式> ::= <日期间隔函数> | <数值常量>

<子分区模板> ::= <RANGE 子分区模板>|<HASH 子分区模板>|<LIST 子分区模板>

<RANGE 子分区模板> ::= SUBPARTITION BY RANGE (<列名>{,<列名>})[SUBPARTITION

TEMPLATE (<RANGE 分区项> {,<RANGE 分区项>})]

<HASH 子分区模板> ::=

SUBPARTITION BY HASH (<列名>{,<列名>})SUBPARTITION TEMPLATE SUBPARTIONS

<分区数> [<STORAGE HASH 子句>]|

SUBPARTITION BY HASH (<列名>{,<列名>})SUBPARTITION TEMPLATE (<HASH 分区

项> {,<HASH 分区项>})

<LIST 子分区模板> ::= SUBPARTITION BY LIST (<列名>{,<列名>})[SUBPARTITION

TEMPLATE (<LIST 分区项> {,<LIST 分区项>})]

<STORAGE HASH 子句> ::= STORE IN (<表空间名列表>)

<空间限制子句> ::=

DISKSPACE LIMIT <空间大小>|

DISKSPACE UNLIMITED

<压缩子句> ::=

COMPRESS |

COMPRESS (<列名> {,<列名>}) |

COMPRESS EXCEPT (<列名> {,<列名>})

<ROW MOVEMENT 子句> ::=

ENABLE ROW MOVEMENT |

DISABLE ROW MOVEMENT

<DISTRIBUTE 子句> ::=

DISTRIBUTED [RANDOMLY | FULLY]|

DISTRIBUTED BY [<HASH>](<列名> {,<列名>})|

DISTRIBUTED BY RANGE (<列名> {,<列名>})(<范围分布项> {,<范围分布项>})|

DISTRIBUTED BY LIST (<<列名> {,<列名>}>)(<列表分布项> {,<列表分布项>})

<范围分布项> ::=

VALUES LESS THAN (<表达式>{,<表达式>}) ON <实例名>|

VALUES EQU OR LESS THAN (<表达式>{,<表达式>}) ON <实例名>

<列表分布项> ::= VALUES (<表达式>{,<表达式>}) ON <实例名>

<不带 INTOSELECT 语句> ::= <查询表达式>|<带参数查询语句>

<带参数查询语句>::=<子查询>|(<带参数查询语句>)

参数

1. <模式名> 指明该表属于哪个模式,缺省为当前模式;

2. <表名> 指明被创建的基表名,基表名最大长度 128 字节;如果是分区表,主表 名和分区名遵循“主表名+分区名”总长度不大于 128 字节。分区子表系统会默认 命名,命名规则为:主表名_分区名,其中 hash 分区的分区子表命名规则是:基表名_DMHASHPART+分区序号;

3. <列名> 指明基表中的列名,列名最大长度 128 字节;

4. <数据类型> 指明列的数据类型;

5. <列缺省值表达式> 如果随后的 INSERT 语句省略了插入的列值,那么此项为列 值指定一个缺省值,可以通过 DEFAULT 指定一个值。DEFAULT 表达式串的长度 不能超过 2048 字节;

6. <列级完整性约束定义>中的参数:

     1) NULL 指明指定列可以包含空值,为缺省选项。

     2) NOT NULL 非空约束,指明指定列不可以包含空值;

     3) UNIQUE 唯一性约束,指明指定列作为唯一关键字;

     4) PRIMARY KEY 主键约束,指明指定列作为基表的主关键字;

     5) CLUSTER PRIMARY KEY 主键约束,指明指定列作为基表的聚集索引(也 叫聚簇索引)主关键字;

     6) NOT CLUSTER PRIMARY KEY 主键约束,指明指定列作为基表的非聚集索 引主关键字;

     7) CLUSTER KEY 指定列为聚集索引键,但是是非唯一的;

     8) CLUSTER UNIQUE KEY 指定列为聚集索引键,并且是唯一的;

     9) USING INDEX TABLESPACE <表空间名> 指定索引存储的表空间;

     10) REFERENCES 指明指定列的引用约束。引用约束要求引用对应列类型必须基 本一致。所谓基本,是因为 CHAR 与 VARCHAR,BINARY 与 VARBINARY, TINYINT、SMALLINT 与 INT 在此被认为是一致的。如果有 WITH INDEX  选项,则为引用约束建立索引,否则不建立索引,通过其他内部机制保证约束 正确性;

     11) CHECK 检查约束,指明指定列必须满足的条件;

     12) NOT VISIBLE 列不可见,当指定某列不可见时,使用 SELECT *进行查询 时将不添加该列作为选择列。不可见列不能创建索引;使用 INSERT 无显式 指定列列表进行插入时,值列表不能包含隐藏列的值。

7. <表级完整性约束>中的参数:

     1) UNIQUE 唯一性约束,指明指定列或列的组合作为唯一关键字;

     2) PRIMARY KEY 主键约束,指明指定列或列的组合作为基表的主关键字。指 明 CLUSTER,表明是主关键字上聚集索引;指明 NOT CLUSTER,表明是主 关键字上非聚集索引;

     3) USING INDEX TABLESPACE <表空间名> 指定索引存储的表空间;

     4) FOREIGN KEY 指明表级的引用约束,如果使用 WITH INDEX 选项,则为 引用约束建立索引,否则不建立索引,通过其他内部机制保证约束正确性;

     5) CHECK 检查约束,指明基表中的每一行必须满足的条件;

     6) 与列级约束之间不应该存在冲突。

8. ON COMMIT<DELETE | PRESERVE>ROWS 用来指定临时表(TEMPORARY)中 的数据是事务级或会话级的,缺省情况下是事务级。ON COMMIT DELETE ROWS: 指定临时表是事务级的,每次事务提交或回滚之后,表中所有数据都被删除;ON COMMIT PRESERVE ROWS:指定临时表是会话级的,会话结束时才清空表;

9. <检验条件> 指明表中一列或多列能否接受的数据值或格式;

10. <查询表达式>和<子查询> 定义请查看数据查询章节;

11. <间隔表达式>中日期间隔函数为:NUMTOYMINTERVAL、NUMTODSINTERVAL; 数值常量为:整型、DEC 类型。使用了<间隔表达式>的分区表称为间隔分区表。 间隔分区表只能包含一个分区列,且该分区列类型为日期或数值。当对间隔分区表中的数据进行插入或更新操作时,若新的数据无法匹配现有的分区子表,则系统将 自动以用户指定的现有分区的末尾临界值为起始值,以<间隔表达式>指定的值为 间 隔 值 创 建 一 个 可 以 匹 配 新 数 据 的 间 隔 分 区 。 用 户 可 通 过 查 看 系 统 表 SYSHPARTTABLEINFO 来获取新建分区的分区表 ID 以及分区名等信息。该功能 可方便数据库管理员对分区表的管理。

12. STORAGE 项中: BRANCH、NOBRANCH 是堆表创建关键字,堆表为―扁平 B 树表‖。这两个参数用来 指定堆表并发分支 BRANCH 和非并发分支 NOBRANCH 的数目。<BRANCH 数>取值 范围为 1~64,<NOBRANCH 数>取值范围为 1~64。

     1)NOBRANCH:指定创建的表为堆表,并发分支个数为 0,非并发分支个数 为 1;

     2)BRANCH(<BRANCH 数>, <NOBRANCH 数>):指定创建的表为堆表,并 发分支个数为<BRANCH 数>,非并发个数为<NOBRANCH 数>;

     3)BRANCH <BRANCH 数>:指定创建的表为堆表,并发分支个数为<BRANCH 数>,非并发分支个数为 0。 CLUSTERBTR:指定创建的表为非堆表,即普通 B 树表;

13. 组合水平分区表层次最多支持八层;

14. 多级分区表支持自定义子分区描述项,自定义的子分区描述项分区类型与分区列必 须与子分区模板一致。如果子分区模板和自定义子分区描述项均指定了分区信息则 按自定义分区描述项处理;

15. 垂直分区表不支持多级分区。普通表、堆表、列存储表均支持多级分区;

16. <ROW MOVEMENT 子句>仅对行存储的水平分区表有效,其它表类型自动忽略;

17. <虚拟列定义>指明定义虚拟列的表达式。

图例


image

image

image

             col_define_low

image

image

image

image

image


      image

image

image

          image


      image


       image

        image         

       image

           image

         image







标签:语句,分区,指定,3.6,分区表,KEY,指明,SUBPARTITION,达梦
From: https://www.cnblogs.com/ios9/p/17965817

相关文章

  • 达梦数据库7_第 3 章 数据定义语句_3.5 管理 HTS 表空间
    3.5管理HTS表空间 创建HUGE表之前,必须要先创建一个HUGE表空间(HTS)。如果不创建,只能使用系统HUGE表空间HMAIN。3.5.1创建HTS表空间语法格式CREATEHUGETABLESPACE<表空间名>PATH<表空间路径>;参数1.<表空间名>表空间的名称,表空间名称最大长度128字节;2......
  • 达梦数据库7_第 3 章 数据定义语句_3.4 管理表空间
    3.4管理表空间3.4.1表空间定义语句创建表空间。语法格式CREATETABLESPACE<表空间名><数据文件子句>[<数据页缓冲池子句>][<存储加密子句>]<数据文件子句>::=DATAFILE<文件说明项>{,<文件说明项>}<文件说明项>::=<文件路径>[MIRROR<文件路径>]SIZE<文件大小>......
  • MySQL中SQL语句的执行流程
    比如有一条SQL语句select*fromtableswherename='zhangsan';那么这条语句通过MySQL查询,执行流程是怎么样的?直接看图:1.客户端跟服务端建立连接,权限校验2.检查是否开启缓存QueryCache,并且是否命中缓存,如果命中,直接将数据返回给客户端;没有命中则向后继续执行3.检查SQ......
  • 无涯教程-SQL - Where语句
    SQLWHERE子句用于在从单个表或通过与多个表联接中获取数据时指定条件,您应该使用WHERE子句来过滤记录并仅提取必要的记录。WHERE子句不仅在SELECT语句中使用,而且在UPDATE,DELETE语句等中使用,无涯教程将在后续章节中进行研究。Where-语法带有WHERE子句的SELECT语句的基本语......
  • 为什么C#要采用顶级语句?
    前言有群友问:为什么C#要采用顶级语句?.NET6发布后,C#10莫名引入了顶级语句,这是一种简化代码结构的语言特性。在此之前,C#程序必须包含一个入口点,通常是Main方法,然后在该方法中编写主要的程序逻辑。而使用顶级语句后,可以直接在文件的顶部编写执行代码,而无需显式地定义一个Main方法。......
  • 达梦数据库:DM变量的定义与赋值、字符串拼接
    1、变量的定义与赋值SqlServer格式declare@pintset@p=1;达梦数据库格式declarepint;p:=12、字符串拼接的符号连接操作符对两个运算数进行运算,其中每一个都是对属于同一字符集的字符串的求值。它以给定的顺序将字符串连接在一起,并返回一个字符......
  • Python的控制语句和循环语句
    当我们使用Python语言编写程序时,根据一些实际业务需求,就需要改变语句流的执行顺序,这时候就离不开Python的控制流语句,来控制代码执行的逻辑,这就是我们下面要讲的控制流语句。1、条件控制if假设有a,b两个数字,用Python打印出他们的大小关系。a=3b=5ifa<b:print("a<b"......
  • 【笔记-MySql】表处理语句
    【笔记-MySql】表处理语句查看表SHOWTABLES;查看列SHOWCOLUMNSFROM<tableName>;查看约束SHOWINDEXESFROM<tableName>;创建表CREATE[TEMPORARY]TABLE<tableName>(字段描述语句[,...][表级约束]);修改表名RENAMETABLE<oldtableName>TO<tabl......
  • 【笔记-MySql】库处理语句
    【笔记-MySql】库处理语句连接数据库mysql-u<user>-p<password>查看SHOWDATABASES;创建CREATEDATABASE[IFNOTEXISTS]<name>;删除DROPDATABASE<name>;选择USE<name>;......
  • 【笔记-MySql】数据处理语句
    【笔记-MySql】数据处理语句语句参数聚合函数{count|max|min|sum|avg|...}比较运算符{=|<>|!=|<|<=|>|>=}--<>:早期符号,等同于!=,据说移植和性能略优。条件描述{--将当前值作为条件<columnName>{比较运算符<value>|--......