在本教程中,我們將向您展示如何使用MySQL CREATE TABLE語句在數(shù)據(jù)庫中創(chuàng)建新表。
要在數(shù)據(jù)庫中創(chuàng)建一個新表,可以使用MySQL CREATE TABLE語句。 CREATE TABLE語句是MySQL中最復(fù)雜的語句之一。
下面以簡單的形式來說明CREATE TABLE語句的語法:
CREATE TABLE [IF NOT EXISTS] table_name(
column_list
) engine=table_type;
我們來更詳細(xì)地來查看其語法:
首先,指定要在CREATE TABLE子句之后創(chuàng)建的表的名稱。表名在數(shù)據(jù)庫中必須是唯一的。 IF NOT EXISTS是語句的可選部分,允許您檢查正在創(chuàng)建的表是否已存在于數(shù)據(jù)庫中。 如果是這種情況,MySQL將忽略整個語句,不會創(chuàng)建任何新的表。 強(qiáng)烈建議在每個CREATE TABLE語句中使用IF NOT EXISTS來防止創(chuàng)建已存在的新表而產(chǎn)生錯誤。
其次,在column_list部分指定表的列表。字段的列用逗號(,)分隔。我們將在下一節(jié)中向您展示如何更詳細(xì)地列(字段)定義。
第三,需要為engine子句中的表指定存儲引擎??梢允褂萌魏未鎯σ?,如:InnoDB,MyISAM,HEAP,EXAMPLE,CSV,ARCHIVE,MERGE, FEDERATED或NDBCLUSTER。如果不明確聲明存儲引擎,MySQL將默認(rèn)使用InnoDB。
注:InnoDB自MySQL 5.5之后成為默認(rèn)存儲引擎。 InnoDB表類型帶來了諸如ACID事務(wù),引用完整性和崩潰恢復(fù)等關(guān)系數(shù)據(jù)庫管理系統(tǒng)的諸多好處。在以前的版本中,MySQL使用MyISAM作為默認(rèn)存儲引擎。
要在CREATE TABLE語句中為表定義列,請使用以下語法:
column_name data_type[size] [NOT NULL|NULL] [DEFAULT value]
[AUTO_INCREMENT]
以上語法中最重要的組成部分是:
column_name指定列的名稱。每列具有特定數(shù)據(jù)類型和大小,例如:VARCHAR(255)。NOT NULL或NULL表示該列是否接受NULL值。DEFAULT值用于指定列的默認(rèn)值。AUTO_INCREMENT指示每當(dāng)將新行插入到表中時,列的值會自動增加。每個表都有一個且只有一個AUTO_INCREMENT列。如果要將表的特定列設(shè)置為主鍵,則使用以下語法:
PRIMARY KEY (col1,col2,...)
下面讓我們練習(xí)一個例子,在示例數(shù)據(jù)庫(testdb)中創(chuàng)建一個名為tasks的新表,如下所示:
可以使用CREATE TABLE語句創(chuàng)建這個tasks表,如下所示:
CREATE TABLE IF NOT EXISTS tasks (
task_id INT(11) NOT NULL AUTO_INCREMENT,
subject VARCHAR(45) DEFAULT NULL,
start_date DATE DEFAULT NULL,
end_date DATE DEFAULT NULL,
description VARCHAR(200) DEFAULT NULL,
PRIMARY KEY (task_id)
) ENGINE=InnoDB;
在本教程中,您已經(jīng)學(xué)習(xí)了如何使用MySQL CREATE TABLE語句在數(shù)據(jù)庫中創(chuàng)建新表。