跳轉到內容

MySQL/語言/表操作

來自華夏公益教科書,開放書籍,自由世界

CREATE TABLE

[編輯 | 編輯原始碼]

建立表的語法是

 Create table tablename (FieldName1 DataType, FieldName2 DataType)

"select" 查詢返回的行可以儲存為一個新表。資料型別將與舊錶相同。例如

 CREATE TABLE LearnHindi
 select english.tag, english.Inenglish as english, hindi.Inhindi as hindi
 FROM english, hindi
 WHERE english.tag = hindi.tag

表大小限制取決於檔案系統,通常約為 2TB[1]

此外,MySQL 可以使用 AUTO_INCREMENT 選項確保唯一鍵自動遞增。如果表被截斷,可以使用以下命令重置計數器:

ALTER TABLE tablename AUTO_INCREMENT = 1

複製表

[編輯 | 編輯原始碼]

要複製相同的結構(名稱、欄位型別和索引,但不包括記錄)

 CREATE TABLE `new1` LIKE `old1`;

將記錄複製到先前的結果中

 INSERT INTO `new1` SELECT * FROM `old1`;

臨時表

[編輯 | 編輯原始碼]

可以建立型別為 "table" 的變數,就像其他變數一樣,它們將在指令碼結束時被刪除。這被稱為 "臨時表"。

 CREATE TEMPORARY TABLE IF NOT EXISTS MyTempTable1 AS (SELECT * FROM MyTable1)

帶命名列的示例

 CREATE TEMPORARY TABLE IF NOT EXISTS MyTempTable1(id INT) AS (SELECT id FROM MyTable1)

注意:如果臨時表列名與填充它的欄位不對應,則將新增一個額外的列,該列使用該欄位名。例如

 CREATE TEMPORARY TABLE IF NOT EXISTS MyTempTable1(id1 INT) AS (SELECT id FROM MyTable1);
 SHOW FIELDS FROM MyTempTable1;
Field 	Type 	Null 	Key 	Default 	Extra 	
id1 	int(11) 	YES 		NULL	
id 	int(11) 	NO 		0 	

注意:所有臨時表在建立它們的 MySQL 連線結束時都會被刪除[2]

ALTER TABLE

[編輯 | 編輯原始碼]

當您想新增/刪除/修改列和/或索引時,可以使用 ALTER TABLE 命令;或者,它可以用於更改其他表屬性。

新增列

 ALTER TABLE awards
 ADD COLUMN AwardCode int(2)

修改列

 ALTER TABLE awards
 CHANGE COLUMN AwardCode VARCHAR(2) NOT NULL

 ALTER TABLE awards
 MODIFY COLUMN AwardCode VARCHAR(2) NOT NULL

刪除列

 ALTER TABLE awards
 DROP COLUMN AwardCode

重新排序表中的記錄

 ALTER TABLE awards ORDER BY id

(此操作僅受某些儲存引擎支援;它可能會使某些查詢更快)

重命名錶

[編輯 | 編輯原始碼]

要重命名錶,您必須對舊錶名(或所有表)具有 ALTER 和 DROP 許可權,並且對新表名(或所有表)具有 CREATE 和 INSERT 許可權。

您可以使用 ALTER TABLE 重命名錶

 RENAME TABLE `old_name` TO `new_name`

您可以使用單個命令重新命名多個表

 RENAME TABLE `old1` TO `new1`, `old2` TO `new2`, ...

RENAME 是一個快捷方式。您也可以使用 ALTER TABLE 語句

 ALTER TABLE `old` RENAME `new`

使用 ALTER TABLE,您只能每個語句重新命名一個表,但這是重新命名臨時表的唯一方法。

DROP TABLE

[編輯 | 編輯原始碼]
 DROP TABLE `awards`

將完全刪除該表及其包含的所有記錄。

您也可以使用單個語句刪除多個表

 DROP TABLE `table1`, `table2`, ...

有一些可選關鍵字

 DROP TEMPORARY TABLE `table`;
 DROP TABLE `table` IF EXISTS;

必須指定 TEMPORARY 來刪除臨時表。IF EXISTS 告訴伺服器如果表不存在,它不應引發錯誤。

參考資料

[編輯 | 編輯原始碼]
  1. https://dev.mysql.com.tw/doc/refman/5.7/en/table-size-limit.html
  2. http://www.mysqltutorial.org/mysql-temporary-table/
華夏公益教科書