H2 Database 简明教程

H2 Database - Create

CREATE 是用于在 H2 数据库服务器中创建表、模式、序列、视图和用户的通用 SQL 命令。

Create Table

创建表是用于在当前数据库中创建用户自定义表的命令。

Syntax

以下是创建表命令的通用语法。

CREATE [ CACHED | MEMORY ] [ TEMP | [ GLOBAL | LOCAL ] TEMPORARY ]
TABLE [ IF NOT EXISTS ] name
[ ( { columnDefinition | constraint } [,...] ) ]
[ ENGINE tableEngineName [ WITH tableEngineParamName [,...] ] ]
[ NOT PERSISTENT ] [ TRANSACTIONAL ]
[ AS select ]

通过使用创建表命令的通用语法,我们可以创建不同类型的表,如缓存表、内存表和临时表。以下是描述给定语法中不同子句的列表。

  1. CACHED − 缓存表是常规表的默认类型。这意味着行数不受主内存的限制。

  2. MEMORY − 内存表是临时表的默认类型。这意味着内存表不应过大并且索引数据存储在主内存中。

  3. TEMPORARY − 关闭或打开数据库时会删除临时表。基本上,临时表有两种类型 −GLOBAL 类型 − 所有连接都可以访问。LOCAL 类型 − 当前连接可以访问。临时表的默认类型是全局类型。临时表的索引保留在主内存中,除非使用 CREATE CACHED TABLE 创建临时表。

  4. ENGINE − 仅当使用自定义表实现时才需要 ENGINE 选项。

  5. NOT PERSISTENT − 它是一个修饰词,用于将完整表数据保留在内存中,并且在关闭数据库时所有行都将丢失。

  6. TRANSACTIONAL − 它是一个提交打开的事务的关键字,此命令仅支持临时表。

Example

在这个示例中,让我们使用以下给定数据创建一个名为 tutorials_tbl 的表。

Sr.No

Column Name

Data Type

1

ID

Int

2

Title

Varchar(50)

3

Author

Varchar(20)

4

Submission_date

Date

以下查询用于创建表 tutorials_tbl 以及给定的列数据。

CREATE TABLE tutorials_tbl (
   id INT NOT NULL,
   title VARCHAR(50) NOT NULL,
   author VARCHAR(20) NOT NULL,
   submission_date DATE
);

以上查询将产生以下输出。

(0) rows effected

Create Schema

创建模式是一个命令,用于在特定授权下(在当前注册的用户下)创建用户相关的模式。

Syntax

以下是创建模式命令的通用语法。

CREATE SCHEMA [ IF NOT EXISTS ] name [ AUTHORIZATION ownerUserName ]

在上述通用语法中,AUTHORIZATION 是用于提供各自用户名的一个关键字。此命令是可选的,这意味着如果我们没有提供用户名,则它将考虑当前用户。执行此命令的用户必须拥有管理员权限以及所有者权限。

此命令会提交此连接中的未决事务。

Example

在此示例中,让我们使用以下命令在 SA 用户下创建一个名为 test_schema 的模式。

CREATE SCHEMA test_schema AUTHORIZATION sa;

以上命令会产生以下输出。

(0) rows effected

Create Sequence

序列是一个用于通过遵循 id 或任何随机列值的序列生成数字的概念。

Syntax

以下是 create sequence 命令的通用语法。

CREATE SEQUENCE [ IF NOT EXISTS ] newSequenceName [ START WITH long ]
[ INCREMENT BY long ]
[ MINVALUE long | NOMINVALUE | NO MINVALUE ]
[ MAXVALUE long | NOMAXVALUE | NO MAXVALUE ]
[ CYCLE long | NOCYCLE | NO CYCLE ]
[ CACHE long | NOCACHE | NO CACHE ]

此通用语法用于创建序列。序列的数据类型为 BIGINT 。在此序列中,即使事务回滚,值也不会被重新使用。

Example

在此示例中,让我们使用以下查询创建一个名为 SEQ_ID 的序列。

CREATE SEQUENCE SEQ_ID;

以上查询将产生以下输出。

(0) rows effected