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 告诉服务器如果表不存在,它不应引发错误。