在mysql中,可以使用“CREATE TABLE”語(yǔ)句來(lái)創(chuàng)建數(shù)據(jù)表,語(yǔ)法格式“CREATE TABLE <表名> ([表定義選項(xiàng)])[表選項(xiàng)][分區(qū)選項(xiàng)];”,其中“表定義選項(xiàng)”由列名、列的定義以及可能的空值說(shuō)明、完整性約束或表索引組成。
(推薦教程:mysql視頻教程)
創(chuàng)建數(shù)據(jù)表的過(guò)程是規(guī)定數(shù)據(jù)列的屬性的過(guò)程,同時(shí)也是實(shí)施數(shù)據(jù)完整性(包括實(shí)體完整性、引用完整性和域完整性)約束的過(guò)程。接下來(lái)我們介紹一下創(chuàng)建數(shù)據(jù)表的語(yǔ)法形式。
基本語(yǔ)法
在 MySQL 中,可以使用 CREATE TABLE 語(yǔ)句創(chuàng)建表。其語(yǔ)法格式為:
CREATE TABLE <表名> ([表定義選項(xiàng)])[表選項(xiàng)][分區(qū)選項(xiàng)];
其中,[表定義選項(xiàng)]的格式為:
<列名1> <類(lèi)型1> [,…] <列名n> <類(lèi)型n>
CREATE TABLE 命令語(yǔ)法比較多,其主要是由表創(chuàng)建定義(create-definition)、表選項(xiàng)(table-options)和分區(qū)選項(xiàng)(partition-options)所組成的。
這里首先描述一個(gè)簡(jiǎn)單的新建表的例子,然后重點(diǎn)介紹 CREATE TABLE 命令中的一些主要的語(yǔ)法知識(shí)點(diǎn)。
CREATE TABLE 語(yǔ)句的主要語(yǔ)法及使用說(shuō)明如下:
-
CREATE TABLE:用于創(chuàng)建給定名稱(chēng)的表,必須擁有表CREATE的權(quán)限。
-
<表名>:指定要?jiǎng)?chuàng)建表的名稱(chēng),在 CREATE TABLE 之后給出,必須符合標(biāo)識(shí)符命名規(guī)則。表名稱(chēng)被指定為 db_name.tbl_name,以便在特定的數(shù)據(jù)庫(kù)中創(chuàng)建表。無(wú)論是否有當(dāng)前數(shù)據(jù)庫(kù),都可以通過(guò)這種方式創(chuàng)建。在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建表時(shí),可以省略 db-name。如果使用加引號(hào)的識(shí)別名,則應(yīng)對(duì)數(shù)據(jù)庫(kù)和表名稱(chēng)分別加引號(hào)。例如,'mydb'.'mytbl' 是合法的,但 'mydb.mytbl' 不合法。
-
<表定義選項(xiàng)>:表創(chuàng)建定義,由列名(col_name)、列的定義(column_definition)以及可能的空值說(shuō)明、完整性約束或表索引組成。
-
默認(rèn)的情況是,表被創(chuàng)建到當(dāng)前的數(shù)據(jù)庫(kù)中。若表已存在、沒(méi)有當(dāng)前數(shù)據(jù)庫(kù)或者數(shù)據(jù)庫(kù)不存在,則會(huì)出現(xiàn)錯(cuò)誤。
提示:使用 CREATE TABLE 創(chuàng)建表時(shí),必須指定以下信息:
-
要?jiǎng)?chuàng)建的表的名稱(chēng)不區(qū)分大小寫(xiě),不能使用SQL語(yǔ)言中的關(guān)鍵字,如DROP、ALTER、INSERT等。
-
數(shù)據(jù)表中每個(gè)列(字段)的名稱(chēng)和數(shù)據(jù)類(lèi)型,如果創(chuàng)建多個(gè)列,要用逗號(hào)隔開(kāi)。
在指定的數(shù)據(jù)庫(kù)中創(chuàng)建表
數(shù)據(jù)表屬于數(shù)據(jù)庫(kù),在創(chuàng)建數(shù)據(jù)表之前,應(yīng)使用語(yǔ)句“USE<數(shù)據(jù)庫(kù)>”指定操作在哪個(gè)數(shù)據(jù)庫(kù)中進(jìn)行,如果沒(méi)有選擇數(shù)據(jù)庫(kù),就會(huì)拋出 No database selected 的錯(cuò)誤。
示例
創(chuàng)建員工表 tb_emp1,結(jié)構(gòu)如下表所示。
選擇創(chuàng)建表的數(shù)據(jù)庫(kù) test_db,創(chuàng)建 tb_emp1 數(shù)據(jù)表,輸入的 SQL 語(yǔ)句和運(yùn)行結(jié)果如下所示。
mysql> USE test_db; Database changed mysql> CREATE TABLE tb_emp1 -> ( -> id INT(11), -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT -> ); Query OK, 0 rows affected (0.37 sec)
語(yǔ)句執(zhí)行后,便創(chuàng)建了一個(gè)名稱(chēng)為 tb_emp1 的數(shù)據(jù)表,使用 SHOW TABLES;語(yǔ)句查看數(shù)據(jù)表是否創(chuàng)建成功,如下所示。
mysql> SHOW TABLES; +--------------------+ | Tables_in_test_db | +--------------------+ | tb_emp1 | +--------------------+ 1 rows in set (0.00 sec)