MySQL創建數據表(CREATE TABLE語句)


在創建數據庫之后,接下來就要在數據庫中創建數據表。所謂創建數據表,指的是在已經創建的數據庫中建立新表。

創建數據表的過程是規定數據列的屬性的過程,同時也是實施數據完整性(包括實體完整性、引用完整性和域完整性)約束的過程。接下來我們介紹一下創建數據表的語法形式。

基本語法

在MySQL 中,可以使用 CREATE TABLE 語句創建表。其語法格式為:

CREATE TABLE <表名> ([表定義選項])[表選項][分區選項];

其中,[表定義選項]的格式為:

<列名1> <類型1> [,…] <列名n> <類型n>

CREATE TABLE 命令語法比較多,其主要是由表創建定義(create-definition)、表選項(table-options)和分區選項(partition-options)所組成的。

這里首先描述一個簡單的新建表的例子,然后重點介紹 CREATE TABLE 命令中的一些主要的語法知識點。

CREATE TABLE 語句的主要語法及使用說明如下:

  • CREATE TABLE:用於創建給定名稱的表,必須擁有表CREATE的權限。
  • <表名>:指定要創建表的名稱,在 CREATE TABLE 之后給出,必須符合標識符命名規則。表名稱被指定為 db_name.tbl_name,以便在特定的數據庫中創建表。無論是否有當前數據庫,都可以通過這種方式創建。在當前數據庫中創建表時,可以省略 db-name。如果使用加引號的識別名,則應對數據庫和表名稱分別加引號。例如,'mydb'.'mytbl' 是合法的,但 'mydb.mytbl' 不合法。
  • <表定義選項>:表創建定義,由列名(col_name)、列的定義(column_definition)以及可能的空值說明、完整性約束或表索引組成。
  • 默認的情況是,表被創建到當前的數據庫中。若表已存在、沒有當前數據庫或者數據庫不存在,則會出現錯誤。

提示:使用 CREATE TABLE 創建表時,必須指定以下信息:

  • 要創建的表的名稱不區分大小寫,不能使用SQL語言中的關鍵字,如DROP、ALTER、INSERT等。
  • 數據表中每個列(字段)的名稱和數據類型,如果創建多個列,要用逗號隔開。

在指定的數據庫中創建表

數據表屬於數據庫,在創建數據表之前,應使用語句“USE<數據庫>”指定操作在哪個數據庫中進行,如果沒有選擇數據庫,就會拋出 No database selected 的錯誤。

【實例 1】創建員工表 tb_emp1,結構如下表所示。

字段名稱 數據類型 備注
id INT(ll) 員工編號
name VARCHAR(25) 員工名稱
deptld INT(ll) 所在部門編號
salary FLOAT 工資


選擇創建表的數據庫 test_db,創建 tb_emp1 數據表,輸入的 SQL 語句和運行結果如下所示。

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)

語句執行后,便創建了一個名稱為 tb_emp1 的數據表,使用 SHOW TABLES;語句查看數據表是否創建成功,如下所示。

mysql> SHOW TABLES;
+--------------------+
| Tables_in_test_db  |
+--------------------+
| tb_emp1            |
+--------------------+
1 rows in set (0.00 sec)

查看表結構

在 MySQL 中,使用 SQL 語句創建好數據表之后,可以查看結構的定義,以確認表的定義是否正確。在 MySQL 中,查看表結構可以使用 DESCRIBE 和 SHOW CREATE TABLE 語句。

DESCRIBE/DESC 語句可以查看表的字段信息,包括字段名、字段數據類型、是否為主鍵、是否有默認值等,語法規則如下:

DESCRIBE <表名>;

或簡寫成:

DESC <表名>;

【實例 2】使用 DESCRIBE 查看表 tb_emp1 的結構,輸入的 SQL 語句和運行結果如下所示。

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 表示在列中某個給定值允許出現多次。
  • Default:表示該列是否有默認值,如果有,值是多少。
  • Extra:表示可以獲取的與給定列有關的附加信息,如 AUTO_INCREMENT 等。


SHOW CREATE TABLE語句可以用來顯示創建表時的CREATE TABLE語句,語法格式如下:

SHOW CREATE TABLE <表名>\G;

【實例 3】使用 SHOW CREATE TABLE 查看表 tb_emp1 的詳細信息,輸入的 SQL 語句和運行結果如下所示。

mysql> SHOW CREATE TABLE tb_emp1\G
*************************** 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 語句不僅可以查看創建表時的詳細語句,而且可以查看存儲引擎和字符編碼。如果不加“\G”參數,顯示的結果可能非常混亂,加上“\G”參數之后,可使顯示的結果更加直觀,易於查看。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM