MySQL/語言/表操作
外觀
建立表的語法是
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 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 `awards`
將完全刪除該表及其包含的所有記錄。
您也可以使用單個語句刪除多個表
DROP TABLE `table1`, `table2`, ...
有一些可選關鍵字
DROP TEMPORARY TABLE `table`;
DROP TABLE `table` IF EXISTS;
必須指定 TEMPORARY 來刪除臨時表。IF EXISTS 告訴伺服器如果表不存在,它不應引發錯誤。