5.数据定义(DDL)语句
DDL是Firebird数据库SQL语言的数据定义语言的子集.DDL 语句用于创建,修改和删除已由用户创建的数据库对象。当DDL语句被提交后,对象的元数据将被创建、更改或删除。
本节介绍如何创建一个数据库,连接到现有数据库,修改数据库的文件结构以及如何删除其中一个。它还说明了如何两种十分不同的方式备份数据库和如何要将数据库切换到安全地执行外部备份的"副本-安全"模式。
作用: 建立一个新的数据库
用于: DSQL, ESQL
语法:
CREATE {DATABASE | SCHEMA} '<filespec>'
[USER 'username' [PASSWORD 'password']]
[PAGE_SIZE [=] size]
[LENGTH [=] num [PAGE[S]]
[SET NAMES 'charset']
[DEFAULT CHARACTER SET default_charset
[COLLATION collation]] -- 在 ESQL中不支持
[<sec_file> [<sec_file> ...]]
[DIFFERENCE FILE 'diff_file']; -- 在 ESQL中不支持
<filespec> ::= [<server_spec>]{filepath | db_alias}
<server_spec> ::= servername [/{port|service}]: | \\servername\
<sec_file> ::= FILE 'filepath'
[LENGTH [=] num [PAGE[S]] [STARTING [AT [PAGE]] pagenum]
表5.1. CREATE DATABASE语句参数
参数 | 描述 |
filespec | 主数据库文件的文件规范的文件 |
server_spec | 远程服务器规格在 TCP/IP 或 Windows 网络的风格。还可以选择包含一个端口号或服务名 |
filepath | 包括其扩展名的完整路径和文件名称。根据正在使用的平台文件系统的规则,必须指定文件名称。 |
db_alias | 数据库别名以前创建的 aliases.conf 文件中 |
servername | 主机名称或要创建的数据库服务器的 IP 地址 |
username | 新数据库的所有者的用户名称。它可能包括达 31 个字符。不区分大小写 |
password | 作为数据库所有者的用户名称的密码。最大长度为 31 个字符;然而只有考虑前 8 个字符。区分大小写 |
size | 数据库的页面大小以字节为单位。可能的值为 4096 (默认)、 8192、 16384. |
num | 主数据库文件或辅助文件的最大页面数大小 |
charset | 指定成功地创建了数据库之后的客户端有效连接字符集。需加上单引号. |
default_charset | 为字符串数据类型指定的默认字符集 |
collation | 默认字符集的默认排序规则 |
sec_file | 辅助文件文件验收规程 |
pagenum | 辅助数据库文件的起始页码 |
diff_file | 文件路径和名称差异文件 (.delta 文件) |
CREATE DATABASE语句创建一个新的数据库,可以使用CREATE DATABASE 或 CREATE SCHEMA.它们是相同的
一个数据库可能由一个或多个文件组成.第一个(主)文件叫做主文件,后续的文件被称为二级文件。
多文件数据库
如今,多文件数据库被认为是一个倒退。它合情合理的在旧的文件系统上使用多文件数据库,任何文件的大小是有限定的。例如,在FAT32上不能建立比4GB更大的文件.
主文件规范是数据库文件的名称,它的扩展名以及它根据操作系统平台文件系统的规则使用的完整路径。当数据库正在被创建时数据库文件必须不存在。如果数据存在,将得到一个错误,数据将不会被创建.
如果完整路径没有被指定,将在其中一个系统目录中创建数据库,特定的目录取决于操作系统。因为这个原因,除非你有强烈的喜欢理由,这种情况下,在创建数据库或别名时,总是指定绝对路径。
使用数据库别名
可以使用一个别名来替代主数据库文件的完整路径,别名被定义在aliases.conf文件中,使用如下的格式:
alias = filepath
创建一个远程数据库
如果在远程的服务器上创建一个数据库,应该指定远程服务器规范,远程服务器规格取决于所使用的协议。如果使用TCP/IP协议创建一个数据库,主文件规范应该是这样的:
servername[/{port|service}]:{filepath | db_alias}
如果使用命名管道协议在一台Windows服务器上创建一个数据库,主文件规范应该是这样的:
\\servername\{filepath | db_alias}
CREATE DATABASE选项参数
选项USER和PASSWORD: 子句用于指定用户名称和密码,分别为安全数据库security2.fdb中的现有用户,如果ISC_USER和ISC_PASSWORD环境变量被设定,则可以不用指定用户名称和密码,创建过程中指定的用户将是该数据库的拥有者。在考虑数据库和对象的权限时,这将是重要的。
选项PAGE_SIZE: 子句用于指定数据库页面大小,此大小将设置为数据库的主文件和所有的辅助文件。如果指定的数据库页大小小于 4,096,它将自动改变为默认页面大小,4,096。将其他值不等于 4,096、 8,192 或 16,384更改为最接近小的被支持的值。如果不指定数据库页大小,它设置为默认值4,096 的值。
选项LENGTH:子句在页面指定主要和次要数据库文件的最大大小。当创建一个数据库时,其主要和次要文件会占据最低必要的页面数存储系统数据,不考虑LENGTH子句中指定的值。长度值不影响单个(或最后,一个多文件数据库)文件的大小。在必要的时候文件将自动继续增加它的大小.
选项SET NAMES:子句指定在数据库成功创建后的连接有效的字符集。NONE是在默认情况下使用的字符集。注意字符集应加上一双撇号(单引号)。
选项 DEFAULT CHARACTER SET:子句指定用于创建字符串数据类型的数据结构的默认字符集,字符集被应用于CHAR、 VARCHAR 和 BLOB 文本数据类型。字符集 NONE被默认使用。默认值将用于整个数据库,除非一个替代的字符集,有或没有指定的排序规则,显示的用于字段、域、变量、强制表达式等.
STARTING AT:子句指定下一个辅助数据库文件应开始的数据库页编号。当以前的文件完全填满数据,根据指定的页码系统将开始向下一个数据库文件中添加新数据。
选项 DIFFERENCE FILE:子句指定增量文件的路径和名称, 用于存储数据库文件由ALTER DATABASE BEGIN BACKUP语句切换到“copy-safe”模式后的任何突变,这个语句的详细描述参阅ALTER DATABASE.
SET SQL DIALECT: 数据库默认使用方言3创建,如果数据库需要使用用方言1创建,那么需要从脚本或客户端应用程序执行语句设置SQL方言1,例如ISQL,在创建数据库语句之前。
CREATE DATABASE使用例子
1. 在windows系统中建立一个数据库,位于D盘位于磁盘 D 与页面大小为 8,192。数据库的所有者为用户 'wizard' 。该数据库将使用方言1,它将使用 WIN1251 作为其默认字符集。
SET SQL DIALECT 1;
CREATE DATABASE 'D:\test.fdb'
USER 'wizard' PASSWORD 'player'
PAGE_SIZE = 8192 DEFAULT CHARACTER SET WIN1251;
2.在 Linux 操作系统中创建一个数据库,页面大小为 4,096 。数据库的所有者为用户'wizard'。数据库为方言3,它将使用 UTF8 作为其默认字符集和 UNICODE_CI_AI为排序规则.
CREATE DATABASE '/home/firebird/test.fdb'
USER 'wizard' PASSWORD 'player'
DEFAULT CHARACTER SET UTF8 COLLATION UNICODE_CI_AI;
3.创建一个数据库在远程服务器“BaseServer”上,别名"test"路径在已在先前的文件aliases.conf定义指定,使用TCP/IP协议。数据库的所有者为用户'wizard',数据库为方言3,它将使用 UTF8 作为其默认字符集。
CREATE DATABASE 'baseserver:test'
USER 'wizard' PASSWORD 'player'
DEFAULT CHARACTER SET UTF8;
4.创建一个数据库使用方言 3和 UTF8 作为其默认字符,主文件将包含可达到 10000 页及页大小为 8,192。只要主文件已达到最大数量页,Firebird将开始分配页面到辅助文件 test.fdb2。如果该文件被填满达其最大,以及 test.fdb3 成为所有新页分配的接收者。作为最后一个文件,它有没有由Firebird强加给它页面限制。新的分配将继续,只要文件系统允许它或直到耗尽存储设备的可用空间。如果为这个最后文件提供了一个LENGTH参数,它将被忽略。
SET SQL DIALECT 3;
CREATE DATABASE 'baseserver:D:\test.fdb'
USER 'wizard' PASSWORD 'player'
PAGE_SIZE = 8192
DEFAULT CHARACTER SET UTF8
FILE 'D:\test.fdb2'
STARTING AT PAGE 10001
FILE 'D:\test.fdb3'
STARTING AT PAGE 20001;
5. 创建一个数据库使用方言 3和 UTF8 作为其默认字符,主文件将包含可达到 10000 页及页大小为 8,192。就文件大小和辅助文件的使用而言,这数据库完全会像前面的示例中的一个。
SET SQL DIALECT 3;
CREATE DATABASE 'baseserver:D:\test.fdb'
USER 'wizard' PASSWORD 'player'
PAGE_SIZE = 8192
LENGTH 10000 PAGES
DEFAULT CHARACTER SET UTF8
FILE 'D:\test.fdb2'
FILE 'D:\test.fdb3'
STARTING AT PAGE 20001;
参阅: ALTER DATABASE, DROP DATABASE