Aula 5 do MySQL - Modificar a estrutura da tabela

Aula 5 do MySQL - Modificar a estrutura da tabela

No MySQL, você pode usar a instrução ALTER TABLE para alterar a estrutura da tabela de dados original. As operações envolvidas na modificação da estrutura da tabela incluem principalmente: (1) adição e exclusão de campos; (2) modificação do tipo de dados do campo; (3) modificação do nome do campo; (4) modificação da posição de organização do campo; (5) adição e exclusão completa Restrições sexuais; (6) modificar o nome da tabela; (7) alterar o mecanismo de armazenamento da tabela.

O formato da sintaxe é o seguinte:

ALTER TABLE <表名> [修改选项];

[修改选项]的格式为:
ADD COLUMN <列名> <类型>
| CHANGE COLUMN <旧列名> <新列名> <新列类型>
| ALTER COLUMN <列名> [ SET DEFAULT <默认值> | DROP DEFAULT ]
| MODIFY COLUMN <列名> <类型>
| DROP COLUMN <列名>
| RENAME TO <新表名> 

O exemplo a seguir usa a tabela de funcionários, que possui a seguinte estrutura:

mysql> desc employee;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   | PRI | NULL    |       |
| name  | char(10)     | YES  |     | NULL    |       |
| addr  | varchar(100) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

Um, adicionar e excluir campos

1. Adicionar campos

O formato da sintaxe é o seguinte:

ALTER TABLE <表名> ADD COLUMN <列名> <类型> <完整性约束> [FIRST | AFTER 列名];

说明:使用 [FIRST | AFTER 列名] 选项可以设置新增字段的位置。

Por exemplo:

(1) Adicionar um telefone de coluna

mysql> alter table employee add phone char(20);
Query OK, 0 rows affected (0.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   | PRI | NULL    |       |
| name  | char(10)     | YES  |     | NULL    |       |
| addr  | varchar(100) | YES  |     | NULL    |       |
| phone | char(20)     | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

(2) Adicione um salário de coluna, o valor padrão é 0, não pode assumir um valor nulo

 mysql> alter table employee add salary decimal(10,2) default 0 not null;
Query OK, 0 rows affected (0.11 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+--------+---------------+------+-----+---------+-------+
| Field  | Type          | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| id     | int(11)       | NO   | PRI | NULL    |       |
| name   | char(10)      | YES  |     | NULL    |       |
| addr   | varchar(100)  | YES  |     | NULL    |       |
| phone  | char(20)      | YES  |     | NULL    |       |
| salary | decimal(10,2) | NO   |     | 0.00    |       |
+--------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

(3) Adicione um novo campo de nascimento, e coloque-o após o campo de nome

mysql> ALTER TABLE employee ADD COLUMN birth datetime after name;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+--------+---------------+------+-----+---------+-------+
| Field  | Type          | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| id     | int(11)       | NO   | PRI | NULL    |       |
| name   | char(10)      | YES  |     | NULL    |       |
| birth  | datetime      | YES  |     | NULL    |       |
| addr   | varchar(100)  | YES  |     | NULL    |       |
| phone  | char(20)      | YES  |     | NULL    |       |
| salary | decimal(10,2) | NO   |     | 0.00    |       |
+--------+---------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

2. Exclua o campo

O formato da sintaxe é o seguinte:

ALTER TABLE <表名> DROP COLUMN <列名>;

Exemplo: Exclua o campo salário na tabela de funcionários

mysql> alter table employee drop column salary;
Query OK, 0 rows affected (0.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+--------+---------------+------+-----+---------+-------+
| Field  | Type          | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| id     | int(11)       | NO   | PRI | NULL    |       |
| name   | char(10)      | YES  |     | NULL    |       |
| birth  | datetime      | YES  |     | NULL    |       |
| addr   | varchar(100)  | YES  |     | NULL    |       |
| phone  | char(20)      | YES  |     | NULL    |       |
+--------+---------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

Dois, modifique o tipo de dados, nome e localização do campo

1. Modifique o tipo de dados do campo

Use a opção MODIFY para modificar o tipo de dados do campo. O formato da sintaxe é o seguinte:

ALTER TABLE <表名> MODIFY COLUMN <列名> <类型>;

说明:使用 MODIFY 选项不能更改字段的名称。

Exemplo: altere o tipo do nome do campo para varchar, com um comprimento de 20

mysql> alter table employee modify name varchar(20);
Query OK, 2 rows affected (0.05 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> desc employee;
+--------+---------------+------+-----+---------+-------+
| Field  | Type          | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| id     | int(11)       | NO   | PRI | NULL    |       |
| name   | varchar(20)   | YES  |     | NULL    |       |
| birth  | datetime      | YES  |     | NULL    |       |
| addr   | varchar(100)  | YES  |     | NULL    |       |
| phone  | char(20)      | YES  |     | NULL    |       |
| salary | decimal(10,2) | NO   |     | 0.00    |       |
+--------+---------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

2. Modifique o nome do campo

Use a opção ALTERAR para modificar o nome do campo. O formato da sintaxe é o seguinte:

ALTER TABLE <表名> CHANGE COLUMN <旧列名> <新列名> <新列类型>;

说明:使用 CHANGE 选项时,如果新列名和旧列名相同,则作用和 MODIFY 相同。

Exemplo: altere o nome da coluna addr para address e o tipo para varchar (200), e coloque-o após o campo phone

mysql> alter table employee change addr address varchar(200) after phone;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id      | int(11)       | NO   | PRI | NULL    |       |
| name    | varchar(20)   | YES  |     | NULL    |       |
| birth   | datetime      | YES  |     | NULL    |       |
| phone   | char(20)      | YES  |     | NULL    |       |
| address | varchar(200)  | YES  |     | NULL    |       |
| salary  | decimal(10,2) | NO   |     | 0.00    |       |
+---------+---------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

3. Altere a posição do campo

Ao usar a opção ADICIONAR para adicionar campos, usar a opção MODIFICAR para modificar o tipo e o comprimento do campo e usar a opção ALTERAR para modificar o nome e o tipo do campo, você pode usar a opção [FIRST | APÓS nome da coluna] para especificar a localização do campo. O formato da sintaxe é o seguinte:

--添加字段同时指定新增字段的位置
ALTER TABLE <表名> ADD COLUMN <列名> <类型> <完整性约束> [FIRST | AFTER 列名]; 
--修改字段的类型和长度同时指定字段的位置
ALTER TABLE <表名> MODIFY COLUMN <列名> <类型> [FIRST | AFTER 列名];
--修改字段的名称、类型和长度同时指定字段的位置
ALTER TABLE <表名> CHANGE COLUMN <旧列名> <新列名> <新列类型> [FIRST | AFTER 列名];

Por exemplo:

(1) Adicione um campo comm, o tipo é varchar (500), a posição está em primeiro lugar

mysql> alter table employee add comm varchar(500) first;
Query OK, 0 rows affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| comm    | varchar(500)  | YES  |     | NULL    |       |
| id      | int(11)       | NO   | PRI | NULL    |       |
| name    | varchar(20)   | YES  |     | NULL    |       |
| birth   | datetime      | YES  |     | NULL    |       |
| phone   | char(20)      | YES  |     | NULL    |       |
| address | varchar(200)  | YES  |     | NULL    |       |
| salary  | decimal(10,2) | NO   |     | 0.00    |       |
+---------+---------------+------+-----+---------+-------+
7 rows in set (0.01 sec)

(2) Modifique o comprimento do campo comm para 1000 e coloque-o antes do campo de salário

mysql> alter table employee modify comm varchar(1000) after address;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id      | int(11)       | NO   | PRI | NULL    |       |
| name    | varchar(20)   | YES  |     | NULL    |       |
| birth   | datetime      | YES  |     | NULL    |       |
| phone   | char(20)      | YES  |     | NULL    |       |
| address | varchar(200)  | YES  |     | NULL    |       |
| comm    | varchar(1000) | YES  |     | NULL    |       |
| salary  | decimal(10,2) | NO   |     | 0.00    |       |
+---------+---------------+------+-----+---------+-------+
7 rows in set (0.01 sec)

(3) Mude o nome do campo comm para comme e coloque-o no final da tabela

mysql> alter table employee change comm comme varchar(1000) after salary;
Query OK, 0 rows affected (0.07 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id      | int(11)       | NO   | PRI | NULL    |       |
| name    | varchar(20)   | YES  |     | NULL    |       |
| birth   | datetime      | YES  |     | NULL    |       |
| phone   | char(20)      | YES  |     | NULL    |       |
| address | varchar(200)  | YES  |     | NULL    |       |
| salary  | decimal(10,2) | NO   |     | 0.00    |       |
| comme   | varchar(1000) | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

Três, modifique o nome da tabela

O formato da sintaxe é o seguinte:

ALTER TABLE <表名> RENAME [TO] <新表名>;

Exemplo: altere o nome do funcionário da tabela de dados para emp

mysql> alter table employee rename emp;
Query OK, 0 rows affected (0.10 sec)

mysql> show tables;
+-----------------+
| Tables_in_hist  |
+-----------------+
| dept            |
| emp             |
| stu             |
| student         |
| user_permission |
+-----------------+
5 rows in set (0.00 sec)

Acho que você gosta

Origin blog.csdn.net/weixin_44377973/article/details/108698644
Recomendado
Clasificación