H2 数据库 – 创建

H2 数据库 – 创建


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

创建表

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

句法

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

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

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

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

  • MEMORY – 内存表是临时表的默认类型。这意味着内存表不应变得太大,索引数据保存在主内存中。

  • TEMPORARY – 在关闭或打开数据库时删除临时表。基本上,临时表有两种类型 –

    • 全局类型 – 所有连接均可访问。

    • LOCAL 类型 – 当前连接可访问。

    临时表的默认类型是全局类型。临时表的索引保存在主内存中,除非临时表是使用 CREATE CACHED TABLE 创建的。

  • ENGINE – 只有在使用自定义表实现时才需要 ENGINE 选项。

  • NOT PERSISTENT – 它是一个修饰符,用于将完整的表数据保存在内存中,并且在数据库关闭时所有行都将丢失。

  • TRANSACTIONAL – 这是一个提交打开事务的关键字,该命令仅支持临时表。

例子

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

Sr.No 列名 数据类型
1 ID 整数
2 标题 瓦尔查尔(50)
3 作者 瓦尔查尔(20)
4 提交日期 日期

以下查询用于创建表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 是用于在特定授权下(在当前注册用户下)创建依赖于用户的架构的命令。

句法

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

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

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

此命令在此连接中提交一个打开的事务。

例子

在此示例中,让我们使用以下命令在 SA 用户下创建名为test_schema的架构

CREATE SCHEMA test_schema AUTHORIZATION sa; 

上述命令产生以下输出。

(0) rows effected 

创建序列

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

句法

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

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在这个序列中,值永远不会被重用,即使在事务回滚时也是如此。

例子

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

CREATE SEQUENCE SEQ_ID; 

上述查询产生以下输出。

(0) rows effected 

觉得文章有用?

点个广告表达一下你的爱意吧 !😁