版本: 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