SQL 創(chuàng)建表 CREATE TABLE

在本教程中,您將學(xué)習(xí)如何使用SQL在數(shù)據(jù)庫內(nèi)部創(chuàng)建表。

建立表格

在上一章中,我們學(xué)習(xí)了如何在數(shù)據(jù)庫服務(wù)器上創(chuàng)建數(shù)據(jù)庫?,F(xiàn)在是時候在數(shù)據(jù)庫中創(chuàng)建一些表,這些表實際上將保存數(shù)據(jù)。數(shù)據(jù)庫表只是將信息組織成行和列。

SQL CREATE TABLE語句用于創(chuàng)建表。

語法

創(chuàng)建表的基本語法可以通過以下方式給出:

CREATE TABLE table_name (column1_name data_type constraints,column2_name data_type constraints,....

);

為了輕松理解此語法,讓我們在演示數(shù)據(jù)庫中創(chuàng)建一個表。在MySQL命令行工具上鍵入以下語句,然后按Enter:

-- MySQL數(shù)據(jù)庫的語法

CREATE TABLE persons (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE

);

-- SQL Server數(shù)據(jù)庫的語法

CREATE TABLE persons (
    id INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    name VARCHAR(50) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);

上面的語句創(chuàng)建一個名為person的表,該表具有id,namebirth_datephone四列。注意,每個列名后都有一個數(shù)據(jù)類型聲明;此聲明指定列將存儲什么類型的數(shù)據(jù),整數(shù),字符串,日期等。

某些數(shù)據(jù)類型可以使用length參數(shù)聲明,該參數(shù)指示可以在列中存儲多少個字符。例如,VARCHAR(50)最多可容納50個字符。

注意:列的數(shù)據(jù)類型可能會因數(shù)據(jù)庫系統(tǒng)而異。例如,MySQL和SQL Server支持INT整數(shù)值的數(shù)據(jù)類型,而Oracle數(shù)據(jù)庫支持NUMBER數(shù)據(jù)類型。

下表總結(jié)了MySQL支持的最常用的數(shù)據(jù)類型。

數(shù)據(jù)類型描述
INT存儲介于-2147483648至2147483647之間的數(shù)值
DECIMAL以精確的精度存儲十進制值。
CHAR存儲最大長度為255個字符的定長字符串。
VARCHAR存儲可變長度的字符串,最大長度為65,535個字符。
TEXT存儲最大大小為65,535個字符的字符串。
DATE以YYYY-MM-DD格式存儲日期值。
DATETIME以YYYY-MM-DD HH:MM:SS格式存儲組合的日期/時間值。
TIMESTAMP存儲時間戳值。TIMESTAMP值存儲為自Unix紀元('1970-01-01 00:00:01'UTC)以來的秒數(shù)。

請查看參考部分SQL DB數(shù)據(jù)類型,以獲取有關(guān)流行的RDBMS(如MySQL,SQL Server等)中可用的所有數(shù)據(jù)類型的詳細信息。

在前面的語句中為表列設(shè)置了一些其他約束(也稱為修飾符)。約束定義關(guān)于列中允許的值的規(guī)則。

  • NOT NULL約束確保該字段不能接受一個NULL值。

  • PRIMARY KEY約束標(biāo)記對應(yīng)的字段作為表的主鍵。

  • AUTO_INCREMENT屬性是標(biāo)準(zhǔn)SQL的MySQL擴展,它告訴MySQL如果未指定該值,則通過將前一個值增加1來自動為該字段分配一個值。僅適用于數(shù)字字段。

  • UNIQUE約束確保一列的每一行必須具有唯一值。

在下一章中,我們將學(xué)習(xí)有關(guān)SQL約束的更多信息。

注意: Microsoft SQL Server使用該IDENTITY屬性來執(zhí)行自動增量功能。默認值為IDENTITY(1,1),即種子或起始值為1,增量值為1。

提示:您可以執(zhí)行命令以查看MySQL和Oracle數(shù)據(jù)庫中任何表的列信息或任何表的結(jié)構(gòu),而在SQL Server中(將table_name替換為實際的表名)。DESC table_name;EXEC sp_columns table_name;

如果不存在則創(chuàng)建表

如果您嘗試創(chuàng)建數(shù)據(jù)庫中已經(jīng)存在的表,則會收到錯誤消息。為了避免這種情況,可以在MySQL中使用可選子句IF NOT EXISTS,如下所示:

CREATE TABLE IF NOT EXISTS persons (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);

提示:如果要查看當(dāng)前選定數(shù)據(jù)庫內(nèi)的表的列表,可以SHOW TABLES;在MySQL命令行上執(zhí)行語句。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清