Ausführliche Erläuterung des MySQL-Alter-Befehls zum Ändern der Tabelle

Inhaltsverzeichnis

ALTER TABLE-Syntax

ALTER TABLE-Instanz

Fügen Sie eine Spalte hinzu

mehrere Spalten hinzufügen

doppelte Spalte

Spaltendefinition ändern

Ändern Sie Spaltennamen und -definitionen

Primärschlüssel hinzufügen

Spalte löschen

Tabelle umbenennen

Ändern Sie die Speicher-Engine der Tabelle

abschließend


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ügen
  • ADD INDEX: Index hinzufügen
  • ADD PRIMARY KEY: Primärschlüssel hinzufügen
  • ADD FOREIGN KEY: Fremdschlüssel hinzufügen
  • ADD UNIQUE INDEX: Fügen Sie einen eindeutigen Index hinzu
  • ADD 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öschen
  • ADD INDEX index_name: Index löschen
  • DROP PRIMARY KEY: Primärschlüssel löschen
  • DROP FOREIGN KEY fk_symbol: Fremdschlüssel löschen
  • DROP 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  username

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 .nameusername

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 .usernamevarchar(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 . userusername 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. NULLNULL 

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;

Ich denke du magst

Origin blog.csdn.net/qq_57570052/article/details/132147393
Empfohlen
Rangfolge