Inhaltsverzeichnis
Ändern Sie Spaltennamen und -definitionen
Ändern Sie die Speicher-Engine der Tabelle
Wenn Sie während der Verwendung der Tabelle Änderungen an der Tabelle vornehmen müssen, können Sie ALTER TABLE
die Anweisung verwenden. Mit ALTER TABLE
Anweisungen können Sie Tabellen umbenennen, Spalten umbenennen, Spalten hinzufügen, Spalten löschen, Spaltenattribute ändern und vieles mehr.
ALTER TABLE-Syntax
ALTER TABLE table_name
[alter_action options], ...
wo ist eine modifizierende Aktion, einschließlich alter_action
ADD
Schlüsselwörter können zum Hinzufügen von Spalten, Indizes, Einschränkungen usw. verwendet werden, einschließlich:
ADD [COLUMN]
: Spalte hinzufügenADD INDEX
: Index hinzufügenADD PRIMARY KEY
: Primärschlüssel hinzufügenADD FOREIGN KEY
: Fremdschlüssel hinzufügenADD UNIQUE INDEX
: Fügen Sie einen eindeutigen Index hinzuADD CHECK
: Prüfeinschränkung hinzufügen
DROP
Schlüsselwörter können zum Löschen von Spalten, Indizes, Einschränkungen usw. verwendet werden, einschließlich:
DROP [COLUMN] col_name
: Spalte löschenADD INDEX index_name
: Index löschenDROP PRIMARY KEY
: Primärschlüssel löschenDROP FOREIGN KEY fk_symbol
: Fremdschlüssel löschenDROP CHECK symbol
: Check-Einschränkung entfernen
MODIFY
Schlüsselwörter werden zum Ändern der Spaltendefinition verwendet. Im Gegensatz zu Schlüsselwörtern können Spalten nicht umbenannt werden. Zum Beispiel: .CHANGE
MODIFY [COLUMN] col_name column_definition
CHANGE
Schlüsselwörter werden zum Ändern der Spaltendefinition verwendet. Im Gegensatz zu Schlüsselwörtern können Spalten umbenannt werden. Zum Beispiel: .MODIFY
CHANGE [COLUMN] old_col_name new_col_name column_definition
RENAME
Schlüsselwörter können Spalten, Indizes und Tabellen umbenennen. enthalten:
RENAME COLUMN old_col_name TO new_col_name
: Doppelt benannte Spalten.RENAME INDEX old_index_name TO new_index_name
: Benennt den Index um.RENAME new_tbl_name
: Benennt die Tabelle um.
ALTER TABLE-Instanz
Aus ALTER TABLE
grammatikalischer Sicht gibt es viele Verwendungen. Um die Verwendung zu demonstrieren, erstellen wir eine Tabelle in der Datenbank . ALTER TABLE
ALTER TABLE
testdb
user
Bitte führen Sie die folgende Anweisung aus:
CREATE TABLE user (id INT);
user
Verwenden Sie die folgende Anweisung, um die Definition der Tabelle anzuzeigen .
DESC user;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| id | int | YES | | NULL | |
+-------+------+------+-----+---------+-------+
1 row in set (0.00 sec)
Schauen wir uns einige praktische Beispiele an.
Fügen Sie eine Spalte hinzu
Die folgende Anweisung fügt mithilfe von Schlüsselwörtern eine Spalte zu einer Tabelle hinzu . ADD
user
name
ALTER TABLE user
ADD name VARCHAR(20);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
Beachten Sie, dass beim Hinzufügen einer Spalte zu einer Tabelle mit Daten ein Fehler zurückgegeben wird, wenn die neu hinzugefügte Spalte die Einschränkungsdefinition der Tabelle nicht erfüllt.
mehrere Spalten hinzufügen
Die folgende Anweisung fügt mithilfe ADD
von Schlüsselwörtern und Spalten zu einer Tabelle hinzu .user
age
email
ALTER TABLE user
ADD age INT,
ADD email VARCHAR(50);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
doppelte Spalte
Die folgende Anweisung RENAME COLUMN
benennt eine Spalte user
einer Tabelle in um .name
username
ALTER TABLE user
RENAME COLUMN name TO username;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
Hier ist die geänderte Tabellendefinition:
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| age | int | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
Spaltendefinition ändern
Die folgende Anweisung verwendet MODIFY
das Schlüsselwort, um die Spalte user
der Tabelle von in zu ändern .username
varchar(20)
VARCHAR(45)
ALTER TABLE user
MODIFY username VARCHAR(45);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
Hier ist die geänderte Tabellendefinition:
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| username | varchar(45) | YES | | NULL | |
| age | int | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
Ändern Sie Spaltennamen und -definitionen
Die folgende Anweisung verwendet CHANGE
das Schlüsselwort, um die Spalte der Tabelle in zu ändern . user
username
name VARCHAR(30)
ALTER TABLE user
CHANGE username name VARCHAR(30);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
Hier ist die geänderte Tabellendefinition:
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(30) | YES | | NULL | |
| age | int | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
Primärschlüssel hinzufügen
Die folgende Anweisung verwendet ADD
Schlüsselwörter, um eine Spalte user
einer Tabelle als Primärschlüssel festzulegen. id
ALTER TABLE user
ADD PRIMARY KEY(id);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
Beachten Sie, dass, da der Primärschlüssel erfordert, dass der Wert der Spalte eindeutig ist und dies nicht der Fall sein kann , ein Fehler zurückgegeben wird, wenn doppelte Werte oder Werte in der Spalte vorhanden sind . Auch wenn Sie einen eindeutigen Index hinzufügen, kann der gleiche Fehler auftreten. NULL
NULL
Hier ist die geänderte Tabellendefinition:
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| age | int | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
Spalte löschen
DROP
Die folgende Anweisung löscht eine Spalte mithilfe eines Schlüsselworts email
.
ALTER TABLE user
DROP COLUMN email;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
Hinweis: Das Löschen einer Spalte ist gefährlich, da dadurch die Daten in der Spalte dauerhaft gelöscht werden. Dies ist eine irreversible Aktion, bitte seien Sie vorsichtig.
Hier ist die Tabellendefinition nach dem Löschen:
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| age | int | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
Tabelle umbenennen
Die folgende Anweisung verwendet RENAME
das Schlüsselwort, um die Tabelle in umzubenennen . user
users
ALTER TABLE user
RENAME users;
Wir können die Tabelle auch mit einer Anweisung umbenennen, die wie folgt verwendet wird: RENAME TABLE
RENAME TABLE table_name TO new_table_name;
Die folgende Anweisung benennt die Tabelle auch um in : user
users
RENAME TABLE user TO users;
Ändern Sie die Speicher-Engine der Tabelle
Der Befehl ALTER TABLE kann auch zum Ändern der Speicher-Engine einer Tabelle verwendet werden. Die folgende Syntax kann verwendet werden:
ALTER TABLE table_name ENGINE=engine_name;
Unter diesen ist Tabellenname der Name der zu ändernden Tabelle und Engine_name die neue Speicher-Engine.
Beispiel:
-- 将customer表的存储引擎改为innodb
ALTER TABLE customer ENGINE=InnoDB;
abschließend
In diesem Artikel haben wir vorgestellt, wie Anweisungen zum Ändern von Tabellen auf dem MySQL-Server verwendet werden , einschließlich: Hinzufügen von Spalten, Löschen von Spalten, Ändern von Spalten, Umbenennen von Spalten, Umbenennen von Tabellen und Festlegen von Primärschlüsseln. Zu den Highlights dieses Artikels gehören: ALTER TABLE
ALTER TABLE
Auf das Schlüsselwort folgt der Name der zu ändernden Tabelle.ADD
Schlüsselwörter können zum Hinzufügen von Spalten, Indizes, Einschränkungen usw. verwendet werden.DROP
Schlüsselwörter können zum Löschen von Spalten, Indizes, Einschränkungen usw. verwendet werden.RENAME
Schlüsselwörter können Spalten, Indizes und Tabellen umbenennen.MODIFY
Schlüsselwörter werden zum Ändern der Spaltendefinition verwendet.CHANGE
Schlüsselwörter werden zum Ändern von Spaltendefinitionen und Spaltennamen verwendet.RENAME TABLE ... TO ...
Wird zum Umbenennen von Tabellen verwendet.
-- alter table 修改表结构(表名,列名,列的数据类型,相关约束)
use d3;
show tables;
-- 查看表结构
desc tuser;
describe tuser;
show columns from tuser;
describe table tuser;
-- 修改表名
alter table tuser rename userinfo;
rename table userinfo to tuser;
-- 移动表表tt2从db2库移动当前数据库为tt3表
rename table db2.tt2 to tt3;
/*
RENAME TABLE
tbl_name TO new_tbl_name
[, tbl_name2 TO new_tbl_*/
drop table if exists
t,t1,t3,s,stu,user,tuser,tteacher,dept,employees,student;
create table t1(t int);
create table t2(t int);
create table t3(t int);
-- 修改多个表的名称
rename table
t1 to tt1,
t2 to tt2,
t3 to tt3;
-- 查看表结构
desc tt1;
-- 查看建立数据库的语句
show create database mysql;
-- 查看建立表的语句
show create table tt1;
rename table tt1 to student;
-- 增加字段类型
alter table student add column id int unsigned auto_increment primary key;
alter table student add sname varchar(15) not null;
alter table student add age tinyint unsigned default 18;
alter table student add gender enum('男','女') default '男' after sname;
alter table student add address varchar(255) first;
-- 修改列的类型 及 位置
alter table student modify address varchar(255) after age;
-- 修改列名
alter table student rename column address to saddr;
-- 修改列名 类型 及 位置
alter table student change saddr address varchar(100) after age;
-- 复制表结构或建立一个空表
create table stu like student;
-- 根据查询的内容建立一个表,此表没有相关的约束,不推荐使用
create table t1 as select 20,'jack';
-- 删除字段
alter table student drop column t;
-- 修改表名 student cf_student cf_user cf_admin cf_car
rename table w_student to cf_student;
alter table cf_student rename st;
-- 查看表结构
describe st;
desc st;
-- 查看建立表语句
show create table st;
CREATE TABLE `st` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`gender` enum('男','女') DEFAULT NULL,
`course` set('计算机英语','高数','离散数学','线性代数') DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3
-- 增加一列(字段)
-- 删除一列(字段)
-- 修改列名
-- 修改列的数据类型 int bigint varchar int varchar(30) varchar(5)
select * from st;
-- 增加一列
alter table st add address varchar(255) not null default '郑州市';
alter table st add age tinyint unsigned not null default 18 first;
alter table st add age tinyint unsigned default 0 after name;
-- 删除一列
alter table st drop address;
alter table st drop column age;
-- 修改列名 name StudentName sname
alter table st rename column name to sname;
alter table st change sname name varchar(30) first;
alter table st change name name varchar(30) after id;
-- 修改列的数据类型及精度
alter table st modify name varchar(100) after address;
alter table st modify name varchar(50) after id;
-- 复制表的结构
-- create table t6(t int);
create table st2 like st;
show create table st2;
select * from st2;
-- 插入数据
insert into st2 select * from st;
show tables;
-- 根据查询的结构,建立一个没有相关约束的表,可以直接插入数据
create table st3 as select id,name from st;
create table st4 as select id,name,address from st where name like '李%';
select * from st3;
show create table st3;
drop table st3;
select * from st4;