繁體中文
版本: v2.6.0

create

建立新的資料表。

create($table, $columns, $options)
回傳值
[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