版本: v2.6.0
create
创建新的数据表。
create($table, $columns, $options)
table [string]
要创建的数据表名称。
columns [array]
新数据表的列定义。
options [array/string] (可选)
创建数据表时附加的其他选项。
返回值
[PDOStatement] 已执行查询的 PDOStatement 实例。
基础示例
将每一列定义为一个数组。 Medoo 将把这些部分组合成一个完整的列定义。
$database->create("account", [
"id" => [
"INT",
"NOT NULL",
"AUTO_INCREMENT",
"PRIMARY KEY"
],
"first_name" => [
"VARCHAR(30)",
"NOT NULL"
]
]);
CREATE TABLE IF NOT EXISTS account ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(30) NOT NULL )
标识列
在列表中加入
"@id",即可定义名为 id 的自动生成整数主键。如需自定义列名,可在 @ 后使用其它名称,例如 "@account_id"。Medoo 会根据当前数据库类型将该标记转换为相应的列定义。$database->create("account", [
"@id",
"email" => [
"VARCHAR(255)",
"NOT NULL"
]
]);
| 数据库 | @id 生成的定义 |
|---|---|
| MySQL / MariaDB | id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY |
| PostgreSQL | id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY |
| SQLite | id INTEGER PRIMARY KEY AUTOINCREMENT |
| MSSQL | id BIGINT IDENTITY(1,1) PRIMARY KEY |
| Oracle | id NUMBER(19) GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY |
| Sybase | id BIGINT IDENTITY PRIMARY KEY |
只能定义一个标识列标记,且不能再以普通列定义的方式重复声明同名列。
高级用法
您还可以传递原始字符串作为其他选项的列定义。支持
<column_name> 语法作为标识符引用的快捷方式。$database->create("account", [
"id" => [
"INT",
"NOT NULL",
"AUTO_INCREMENT"
],
"email" => [
"VARCHAR(70)",
"NOT NULL",
"UNIQUE"
],
"PRIMARY KEY (<id>)"
], [
"ENGINE" => "MyISAM",
"AUTO_INCREMENT" => 200
]);
CREATE TABLE IF NOT EXISTS account ( id INT NOT NULL AUTO_INCREMENT, email VARCHAR(70) NOT NULL UNIQUE, PRIMARY KEY (`id`) ) ENGINE = MyISAM, AUTO_INCREMENT = 200