
- MySQL 基礎
- MySQL - 首頁
- MySQL - 簡介
- MySQL - 特性
- MySQL - 版本
- MySQL - 變數
- MySQL - 安裝
- MySQL - 管理
- MySQL - PHP 語法
- MySQL - Node.js 語法
- MySQL - Java 語法
- MySQL - Python 語法
- MySQL - 連線
- MySQL - Workbench
- MySQL 資料庫
- MySQL - 建立資料庫
- MySQL - 刪除資料庫
- MySQL - 選擇資料庫
- MySQL - 顯示資料庫
- MySQL - 複製資料庫
- MySQL - 資料庫匯出
- MySQL - 資料庫匯入
- MySQL - 資料庫資訊
- MySQL 使用者
- MySQL - 建立使用者
- MySQL - 刪除使用者
- MySQL - 顯示使用者
- MySQL - 修改密碼
- MySQL - 授予許可權
- MySQL - 顯示許可權
- MySQL - 收回許可權
- MySQL - 鎖定使用者賬戶
- MySQL - 解鎖使用者賬戶
- MySQL 表
- MySQL - 建立表
- MySQL - 顯示錶
- MySQL - 修改表
- MySQL - 重命名錶
- MySQL - 克隆表
- MySQL - 截斷表
- MySQL - 臨時表
- MySQL - 修復表
- MySQL - 描述表
- MySQL - 新增/刪除列
- MySQL - 顯示列
- MySQL - 重新命名列
- MySQL - 表鎖定
- MySQL - 刪除表
- MySQL - 派生表
- MySQL 查詢
- MySQL - 查詢
- MySQL - 約束
- MySQL - 插入查詢
- MySQL - 選擇查詢
- MySQL - 更新查詢
- MySQL - 刪除查詢
- MySQL - 替換查詢
- MySQL - 插入忽略
- MySQL - 插入重複鍵更新
- MySQL - 插入選擇
- MySQL 運算子和子句
- MySQL - WHERE 子句
- MySQL - LIMIT 子句
- MySQL - DISTINCT 子句
- MySQL - ORDER BY 子句
- MySQL - GROUP BY 子句
- MySQL - HAVING 子句
- MySQL - AND 運算子
- MySQL - OR 運算子
- MySQL - LIKE 運算子
- MySQL - IN 運算子
- MySQL - ANY 運算子
- MySQL - EXISTS 運算子
- MySQL - NOT 運算子
- MySQL - 不等於運算子
- MySQL - IS NULL 運算子
- MySQL - IS NOT NULL 運算子
- MySQL - BETWEEN 運算子
- MySQL - UNION 運算子
- MySQL - UNION 與 UNION ALL
- MySQL - MINUS 運算子
- MySQL - INTERSECT 運算子
- MySQL - INTERVAL 運算子
- MySQL 連線
- MySQL - 使用連線
- MySQL - INNER JOIN
- MySQL - LEFT JOIN
- MySQL - RIGHT JOIN
- MySQL - CROSS JOIN
- MySQL - FULL JOIN
- MySQL - 自連線
- MySQL - 刪除連線
- MySQL - 更新連線
- MySQL - UNION 與 JOIN
- MySQL 觸發器
- MySQL - 觸發器
- MySQL - 建立觸發器
- MySQL - 顯示觸發器
- MySQL - 刪除觸發器
- MySQL - 插入前觸發器
- MySQL - 插入後觸發器
- MySQL - 更新前觸發器
- MySQL - 更新後觸發器
- MySQL - 刪除前觸發器
- MySQL - 刪除後觸發器
- MySQL 資料型別
- MySQL - 資料型別
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正則表示式
- MySQL - 正則表示式
- MySQL - RLIKE 運算子
- MySQL - NOT LIKE 運算子
- MySQL - NOT REGEXP 運算子
- MySQL - regexp_instr() 函式
- MySQL - regexp_like() 函式
- MySQL - regexp_replace() 函式
- MySQL - regexp_substr() 函式
- MySQL 函式和運算子
- MySQL - 日期和時間函式
- MySQL - 算術運算子
- MySQL - 數值函式
- MySQL - 字串函式
- MySQL - 聚合函式
- MySQL 雜項概念
- MySQL - NULL 值
- MySQL - 事務
- MySQL - 使用序列
- MySQL - 處理重複項
- MySQL - SQL 注入
- MySQL - 子查詢
- MySQL - 註釋
- MySQL - 檢查約束
- MySQL - 儲存引擎
- MySQL - 將表匯出到 CSV 檔案
- MySQL - 將 CSV 檔案匯入資料庫
- MySQL - UUID
- MySQL - 通用表表達式
- MySQL - ON DELETE CASCADE
- MySQL - Upsert
- MySQL - 水平分割槽
- MySQL - 垂直分割槽
- MySQL - 遊標
- MySQL - 儲存函式
- MySQL - 訊號
- MySQL - 重新發送訊號
- MySQL - 字元集
- MySQL - 校對
- MySQL - 萬用字元
- MySQL - 別名
- MySQL - ROLLUP
- MySQL - 當天日期
- MySQL - 字面量
- MySQL - 儲存過程
- MySQL - EXPLAIN
- MySQL - JSON
- MySQL - 標準差
- MySQL - 查詢重複記錄
- MySQL - 刪除重複記錄
- MySQL - 選擇隨機記錄
- MySQL - 顯示程序列表
- MySQL - 更改列型別
- MySQL - 重置自動遞增
- MySQL - Coalesce() 函式
- MySQL 有用資源
- MySQL - 有用函式
- MySQL - 語句參考
- MySQL - 快速指南
- MySQL - 有用資源
- MySQL - 討論
MySQL - 建立表
在 MySQL 關係資料庫系統中,SQL 用於以結構化表的形式儲存資料。這些表由欄位和記錄組成。欄位表示定義要在表中儲存的資料型別的列,記錄是包含實際資料的行。MySQL 提供各種查詢來與資料互動,允許您建立表、更新表、刪除表等。
MySQL 建立表語句
要在提示符下在 MySQL RDBMS 中建立表,使用 CREATE TABLE 語句。
可以在 SQL Server 資料庫中建立任意數量的表。但是,資料庫中存在的物件數量存在限制。包括表、檢視、索引等,資料庫不能超過 2,147,483,647 個物件。因此,單個使用者定義的表最多可以定義 1024 列。
建立表的 MySQL 查詢必須定義表的結構。結構由表名和表中列的名稱組成,以及每列的資料型別。請注意,每個表在資料庫中必須具有唯一的名稱。
首先,表建立命令需要以下詳細資訊:
- 表的名稱。
- 列的名稱。
- 每列的定義。
語法
以下是建立 MySQL 表的基本 SQL 語法:
CREATE TABLE table_name( column1 datatype, column2 datatype, ..... columnN datatype, PRIMARY KEY( one or more columns ) );
示例
在以下查詢中,我們使用 CREATE TABLE 語句建立一個名為 CUSTOMERS 的表:
CREATE TABLE CUSTOMERS ( ID INT AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
這裡,一些專案需要解釋:
MySQL 中的欄位屬性 AUTO_INCREMENT 會自動將 ID 列中的值遞增 1,用於您新增的每個新記錄。它從下一個可用數字開始。
使用欄位屬性 NOT NULL 是因為我們不希望該欄位為 NULL。因此,如果使用者嘗試建立具有該欄位中 NULL 值的記錄,則 MySQL 將引發錯誤。
關鍵字 PRIMARY KEY 用於將列定義為主鍵。它確保該列中的每條記錄都是唯一的。您還可以透過逗號分隔它們來將其用於多列。
輸出
當我們執行上述查詢時,將獲得如下輸出:
Query OK, 0 rows affected (0.03 sec)
驗證
建立表完成後,我們可以使用以下查詢檢查它是否已成功建立:
DESC CUSTOMERS;
上述查詢顯示 CUSTOMERS 表的結構:列名、資料型別等。
欄位 | 型別 | 空 | 鍵 | 預設值 | 額外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | auto_increment |
NAME | varchar(20) | 否 | NULL | ||
AGE | int | 否 | NULL | ||
ADDRESS | char(25) | 是 | NULL | ||
SALARY | decimal(18,2) | 是 | NULL |
從命令提示符建立表
我們可以透過定義其結構和列從命令提示符建立 MySQL 表。
以下是執行從命令提示符建立 MySQL 表的步驟
首先,開啟命令提示符並輸入以下命令:mysql -u root -p 以訪問 MySQL 資料庫管理系統。
輸入命令後,輸入密碼以登入到 MySQL 伺服器。
然後,我們可以使用相應的 SQL CREATE TABLE 查詢開始建立表。
示例
在以下示例中,我們從命令提示符建立了一個名為 CUSTOMERS 的 MySQL 表。
CREATE TABLE CUSTOMERS ( NAME VARCHAR(20) NOT NULL, ID INT AUTO_INCREMENT, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
注意 - 在 SQL 命令末尾使用分號 (;) 之前,MySQL 不會終止命令。
輸出
當我們執行上述查詢時,將獲得如下輸出:
Query OK, 0 rows affected (0.03 sec)
驗證
我們可以使用以下查詢驗證表是否已成功建立:
mysql> DESC CUSTOMERS;
以上查詢將顯示 CUSTOMERS 表的結構和描述。
欄位 | 型別 | 空 | 鍵 | 預設值 | 額外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | auto_increment |
NAME | varchar(20) | 否 | NULL | ||
AGE | int | 否 | NULL | ||
ADDRESS | char(25) | 是 | NULL | ||
SALARY | decimal(18,2) | 是 | NULL |
從現有表建立表
我們可以使用 SQL 的 CREATE TABLE 和 SELECT 語句建立現有表的副本,包括其結構和資料。副本表具有相同的列及其定義,並且還填充與原始表相同的資料。
注意 - 因為它是一個全新的表,因此對它進行的任何更改都不會反映在原始表中。
語法
以下是根據另一個表建立表的語法:
CREATE TABLE NEW_TABLE_NAME AS SELECT [column1, column2...columnN] FROM EXISTING_TABLE_NAME [WHERE CONDITION];
這裡,column1、column2... 是現有表的欄位,並且將用於建立新表的欄位。WHERE 子句是可選的。
示例
讓我們考慮 TUTORIALS 資料庫中現有的表 CUSTOMERS。
mysql> USE TUTORIALS; Database changed mysql> SELECT * FROM CUSTOMERS;
以下是 CUSTOMERS 表:
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
現在,使用以下查詢,我們建立一個名為 SAMPLE 的新表,其結構和記錄與 CUSTOMERS 相同。
CREATE TABLE SAMPLE AS SELECT * FROM CUSTOMERS;
輸出
正如我們在輸出中看到的,SAMPLE 表已成功建立。
Query OK, 7 rows affected (0.03 sec) Records: 7 Duplicates: 0 Warnings: 0
驗證
使用以下 SELECT 語句,讓我們驗證新表 SAMPLE 是否包含記錄。
SELECT * FROM SAMPLE;
正如我們在下面的輸出中看到的,SAMPLE 表已建立,其中包含來自 CUSTOMERS 表的所有記錄。
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
IF NOT EXISTS 子句
如果您嘗試建立名稱已存在的表,則會生成錯誤。
CREATE TABLE Employee(Name VARCHAR(255)); ERROR 1050 (42S01): Table 'employee' already exists
如果您在 CREATE 語句中使用 IF NOT EXISTS 子句(如下所示),則會建立一個新表;如果具有給定名稱的表已存在,則會忽略該查詢。
CREATE TABLE Test(Name VARCHAR(255)); Query OK, 0 rows affected (0.69 sec)
使用客戶端程式在 MySQL 資料庫中建立表
除了使用 MySQL 查詢在 MySQL 資料庫中建立表之外,我們還可以使用客戶端程式執行 CREATE TABLE 操作。
語法
以下是各種程式語言中建立表的語法:
要在 MySQL 資料庫中透過 PHP 程式建立表,我們需要使用 mysqli 函式 query() 執行 CREATE TABLE 語句,如下所示:
$sql = "CREATE TABLE table_name (column_name column_type)"; $mysqli->query($sql);
要在 MySQL 資料庫中透過 Node.js 程式建立表,我們需要使用 mysql2 庫的 query() 函式執行 CREATE TABLE 語句,如下所示:
sql = "CREATE TABLE table_name (column_name column_type)"; con.query(sql);
要在 MySQL 資料庫中透過 Java 程式建立表,我們需要使用 JDBC 函式 executeUpdate() 執行 CREATE TABLE 語句,如下所示:
String sql = "CREATE TABLE table_name (column_name column_type)"; statement.execute(sql);
要在 MySQL 資料庫中透過 Python 程式建立表,我們需要使用 MySQL Connector/Python 的 execute() 函式執行 CREATE TABLE 語句,如下所示:
sql = "CREATE TABLE table_name (column_name column_type)"; cursorObj.execute(sql);
示例
以下是程式:
$dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli->connect_errno ) { printf("Connect failed: %s<br />", $mysqli->connect_error); exit(); } printf('Connected successfully.<br />'); $sql = "CREATE TABLE tutorials_tbl( ". "tutorial_id INT NOT NULL AUTO_INCREMENT, " "tutorial_title VARCHAR(100) NOT NULL, ". "tutorial_author VARCHAR(40) NOT NULL, ". "submission_date DATE, ". "PRIMARY KEY ( tutorial_id )); "; if ($mysqli->query($sql)) { printf("Table tutorials_tbl created successfully.<br />"); } if ($mysqli->errno) { printf("Could not create table: %s<br />", $mysqli->error); } $mysqli->close();
輸出
獲得的輸出如下所示:
Connected successfully. Table tutorials_tbl created successfully.
var mysql = require('mysql2'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "*****" }); //Connecting to MySQL con.connect(function (err) { if (err) throw err; console.log("Connected!"); console.log("--------------------------"); //Creating a table sql = "CREATE TABLE tutorials_tbl(tutorial_id INT NOT NULL AUTO_INCREMENT,tutorial_title VARCHAR(100) NOT NULL,tutorial_author VARCHAR(40) NOT NULL,submission_date DATE,PRIMARY KEY ( tutorial_id ));" con.query(sql, function (err, result) { if (err) throw err; console.log("The table tutorials_tbl is created successfully!"); }); });
輸出
生成的輸出如下所示:
Connected! -------------------------- The table tutorials_tbl is created successfully!
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class CreateTable { public static void main(String[] args) { String url = "jdbc:mysql://:3306/TUTORIALS"; String username = "root"; String password = "password"; try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection connection = DriverManager.getConnection(url, username, password); Statement statement = connection.createStatement(); System.out.println("Connected successfully...!"); //Create new table...! String sql = "CREATE TABLE tutorials_tbl (ID Int Auto_Increment not null, tutorial_title Varchar(50) Not Null, tutorial_author Varchar(30) Not Null, Primary Key(ID))"; statement.executeUpdate(sql); System.out.println("Table created successfully...!"); ResultSet resultSet = statement.executeQuery("DESCRIBE tutorials_tbl"); while (resultSet.next()) { System.out.print(resultSet.getNString(1)); System.out.println(); } connection.close(); } catch (Exception e) { System.out.println(e); } } }
輸出
獲得的輸出如下所示:
Connected successfully...! Table created successfully...! ID tutorial_title tutorial_author
import mysql.connector #establishing the connection conn = mysql.connector.connect( user='root', password='password', host='localhost', database='tut' ) #Creating a cursor object cursor = conn.cursor() #Creating a table sql ='''CREATE TABLE tutorials_tbl( tutorial_id INT NOT NULL AUTO_INCREMENT, tutorial_title VARCHAR(100) NOT NULL, tutorial_author VARCHAR(40) NOT NULL, submission_date DATE, PRIMARY KEY ( tutorial_id ) )''' cursor.execute(sql) print ("The table tutorials_tbl is created successfully!") #Closing the connection conn.close()
輸出
以下是以上程式碼的輸出:
The table tutorials_tbl is created successfully!