DDL 语句
使用 SmartESQL 定义数据库架构有两种方法。使用 C 或 C++ API 开发的嵌入式 SmartESQL 应用程序通常会先使用 SmartEDB DDL 定义数据库。Java、C# 和 Python 应用程序会使用原生语言语法定义数据库类和索引。当使用 xSQL 创建数据库时,架构会在配置文件的架构部分中指定,要么通过导入架构定义文件,要么通过使用 SmartEDB DDL 在文本字符串中定义架构。
另外,数据库也可以通过动态 SQL 数据定义语言(DDL)语句 create table(创建表)、create_index(创建索引)、alter table(修改表)、alter index(修改索引)、drop table(删除表)和 drop index(删除索引)来创建和/或修改。这些 SQL DDL 语句可由嵌入式 SmartESQL 应用程序或 xSQL 执行。
还提供了 ODBC 和 JDBC 驱动程序,以便其他第三方数据库工具和应用程序能够通过这些“中间件”驱动程序来管理数据库。
SmartESQL 以及动态 DDL 语句
在应用程序设计阶段,开发人员必须决定是否允许动态模式更改。如果允许,则所有数据库访问都必须通过 SQL 或 UDA API 来实现;使用由 mcocomp 生成的 C 或 C++ API(即函数)进行的任何操作都将无效。
动态架构是通过为数据库中最大类和索引数量指定限制来实现的。当执行 SQL 的创建表语句时,它会使用 SmartESQL API 创建新表的定义。然后,当前数据库字典(由 SmartEDB 运行时以二进制形式维护)将转换为 SQL DDL 格式,新表也使用 SQL DDL 表示,并附加到现有数据库架构中。然后将此新的 SQL DDL 架构转换回 SmartEDB 字典,并替换旧字典进行存储。为了实现这一点,在分配字典时预留了空间。因此,需要指定最大类和索引数量。
db_params params;
params.max_classes = 150;
params.max_indexes = 120;
params.ddl_dict_size = 128 * 1024;
Java 和 C# 应用程序设置相应的 Database::Parameters 属性 maxClasses、maxIndexes 和 maxDictionarySize。例如:
Database.Parameters dbParams = new Database.Parameters();
dbParams.MaxClasses = 150;
dbParams.MaxIndexes = 120;
dbParams.MaxDictionarySize = 128 * 1024;
Python 应用程序将这些值作为参数 max_classes、max_indexes 和 maxDictionarySize 传递给函数 open_database()。例如:
db = exdb.open_database(dbname='opendb', dictionary=dict, is_disk=is_disk,
db_segment_size=128*1024*1024,
max_classes=100, max_indexes=1000,
maxDictionarySize=16*1024)
使用 xSQL 创建数据库时,这些参数在配置文件的 db_params 部分中指定。例如:
db_params: {
ddl_dict_size: 128 * 1024,
max_classes : 150,
max_indexes : 120,
}
请使用以下链接查看数据定义语言语句的语法和示例:
语句 | 说明 |
---|---|
create table | 创建一个表;将此表定义添加到 SmartESQL 元表中 |
alter table | 修改现有表的定义 |
drop table | 从 SmartESQL 元表中删除现有表 |
create index | 在现有表上创建索引 |
drop index | 从 SmartESQL 元表中删除现有索引 |
create synonym | 创建一个同义词,即表的替代名称(或别名) |
drop synonym | 移除现有的同义词 |
create function | |
drop function |