MySQL创建数据表(CREATE TABLE语句)
在創(chuàng)建數(shù)據(jù)庫之后,接下來就要在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表。所謂創(chuàng)建數(shù)據(jù)表,指的是在已經(jīng)創(chuàng)建的數(shù)據(jù)庫中建立新表。
?
創(chuàng)建數(shù)據(jù)表的過程是規(guī)定數(shù)據(jù)列的屬性的過程,同時也是實施數(shù)據(jù)完整性(包括實體完整性、引用完整性和域完整性)約束的過程。接下來我們介紹一下創(chuàng)建數(shù)據(jù)表的語法形式。
基本語法
在 MySQL 中,可以使用?CREATE TABLE?語句創(chuàng)建表。其語法格式為:
CREATE TABLE <表名> ([表定義選項])[表選項][分區(qū)選項];
其中,[表定義選項]的格式為:
<列名1> <類型1> [,…] <列名n> <類型n>
CREATE TABLE 命令語法比較多,其主要是由表創(chuàng)建定義(create-definition)、表選項(table-options)和分區(qū)選項(partition-options)所組成的。
這里首先描述一個簡單的新建表的例子,然后重點介紹 CREATE TABLE 命令中的一些主要的語法知識點。
CREATE TABLE 語句的主要語法及使用說明如下:
- CREATE TABLE:用于創(chuàng)建給定名稱的表,必須擁有表CREATE的權(quán)限。
- <表名>:指定要創(chuàng)建表的名稱,在 CREATE TABLE 之后給出,必須符合標識符命名規(guī)則。表名稱被指定為 db_name.tbl_name,已經(jīng)為大家精心準備了大數(shù)據(jù)的系統(tǒng)學習資料,從Linux-Hadoop-spark-......,需要的小伙伴可以點擊以便在特定的數(shù)據(jù)庫中創(chuàng)建表。無論是否有當前數(shù)據(jù)庫,都可以通過這種方式創(chuàng)建。在當前數(shù)據(jù)庫中創(chuàng)建表時,可以省略 db-name。如果使用加引號的識別名,則應對數(shù)據(jù)庫和表名稱分別加引號。例如,'mydb'.'mytbl' 是合法的,但 'mydb.mytbl' 不合法。
- <表定義選項>:表創(chuàng)建定義,由列名(col_name)、列的定義(column_definition)以及可能的空值說明、完整性約束或表索引組成。
- 默認的情況是,表被創(chuàng)建到當前的數(shù)據(jù)庫中。若表已存在、沒有當前數(shù)據(jù)庫或者數(shù)據(jù)庫不存在,則會出現(xiàn)錯誤。
提示:使用 CREATE TABLE 創(chuàng)建表時,必須指定以下信息:
- 要創(chuàng)建的表的名稱不區(qū)分大小寫,不能使用SQL語言中的關鍵字,如DROP、ALTER、INSERT等。
- 數(shù)據(jù)表中每個列(字段)的名稱和數(shù)據(jù)類型,如果創(chuàng)建多個列,要用逗號隔開。
在指定的數(shù)據(jù)庫中創(chuàng)建表
數(shù)據(jù)表屬于數(shù)據(jù)庫,在創(chuàng)建數(shù)據(jù)表之前,應使用語句“USE<數(shù)據(jù)庫>”指定操作在哪個數(shù)據(jù)庫中進行,如果沒有選擇數(shù)據(jù)庫,就會拋出 No database selected 的錯誤。
【實例 1】創(chuàng)建員工表 tb_emp1,結(jié)構(gòu)如下表所示。
| id | INT(ll) | 員工編號 |
| name | VARCHAR(25) | 員工名稱 |
| deptld | INT(ll) | 所在部門編號 |
| salary | FLOAT | 工資 |
選擇創(chuàng)建表的數(shù)據(jù)庫 test_db,創(chuàng)建 tb_emp1 數(shù)據(jù)表,輸入的 SQL 語句和運行結(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)語句執(zhí)行后,便創(chuàng)建了一個名稱為 tb_emp1 的數(shù)據(jù)表,使用 SHOW TABLES;語句查看數(shù)據(jù)表是否創(chuàng)建成功,如下所示。
mysql> SHOW TABLES; +--------------------+ | Tables_in_test_db | +--------------------+ | tb_emp1 | +--------------------+ 1 rows in set (0.00 sec)查看表結(jié)構(gòu)
在 MySQL 中,使用 SQL 語句創(chuàng)建好數(shù)據(jù)表之后,可以查看結(jié)構(gòu)的定義,以確認表的定義是否正確。在 MySQL 中,查看表結(jié)構(gòu)可以使用 DESCRIBE 和 SHOW CREATE TABLE 語句。
DESCRIBE/DESC 語句可以查看表的字段信息,包括字段名、字段數(shù)據(jù)類型、是否為主鍵、是否有默認值等,語法規(guī)則如下:
DESCRIBE <表名>;
或簡寫成:
DESC <表名>;
【實例 2】使用 DESCRIBE 查看表 tb_emp1 的結(jié)構(gòu),輸入的 SQL 語句和運行結(jié)果如下所示。
mysql> DESCRIBE tb_emp1; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(25) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)其中,各個字段的含義如下:
- Null:表示該列是否可以存儲 NULL 值。
- Key:表示該列是否已編制索引。PRI 表示該列是表主鍵的一部分,UNI 表示該列是 UNIQUE 索引的一部分,MUL 表示在列中某個給定值允許出現(xiàn)多次。
- Default:表示該列是否有默認值,如果有,值是多少。
- Extra:表示可以獲取的與給定列有關的附加信息,如 AUTO_INCREMENT 等。
SHOW CREATE TABLE語句可以用來顯示創(chuàng)建表時的CREATE TABLE語句,語法格式如下:
SHOW CREATE TABLE <表名>G;【實例 3】使用 SHOW CREATE TABLE 查看表 tb_emp1 的詳細信息,輸入的 SQL 語句和運行結(jié)果如下所示。
mysql> SHOW CREATE TABLE tb_emp1G *************************** 1. row *************************** Table: tb_emp1 Create Table: CREATE TABLE `tb_emp1` ( `id` int(11) DEFAULT NULL, `name` varchar(25) DEFAULT NULL, `deptId` int(11) DEFAULT NULL, `salary` float DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 1 row in set (0.03 sec)提示:使用 SHOW CREATE TABLE 語句不僅可以查看創(chuàng)建表時的詳細語句,而且可以查看存儲引擎和字符編碼。如果不加“G”參數(shù),顯示的結(jié)果可能非常混亂,加上“G”參數(shù)之后,可使顯示的結(jié)果更加直觀,易于查看。
總結(jié)
以上是生活随笔為你收集整理的MySQL创建数据表(CREATE TABLE语句)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL BIT、BINARY、VAR
- 下一篇: MySQL删除数据表(DORP TABL