亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

SQL 創(chuàng)建表 CREATE TABLE

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

建立表格

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

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

語(yǔ)法

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

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

);

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

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

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ù)庫(kù)的語(yǔ)法

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
);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如果您嘗試創(chuàng)建數(shù)據(jù)庫(kù)中已經(jīng)存在的表,則會(huì)收到錯(cuò)誤消息。為了避免這種情況,可以在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ù)庫(kù)內(nèi)的表的列表,可以SHOW TABLES;在MySQL命令行上執(zhí)行語(yǔ)句。