В этом учебном материале вы узнаете, как использовать SQL оператор ALTER TABLE для добавления столбца, изменения столбца, удаления столбца, переименования столбца или переименования таблицы (с множеством ясных и кратких примеров).
Описание
SQL оператор ALTER TABLE используется для добавления, изменения или удаления столбцов в таблице. SQL оператор ALTER TABLE также используется для переименования таблицы.
Добавить столбец в таблицу
Синтаксис
Синтаксис SQL оператора ALTER TABLE для добавления столбца в таблицу.
ADD column_name column_definition;
Пример
Давайте посмотрим на SQL ALTER TABLE пример, который добавляет столбец.
Например.
1 2 |
ALTER TABLE supplier ADD supplier_name char(50); |
Этот SQL пример ALTER TABLE добавит столбец с именем supplier_name в таблицу supplier.
Добавить несколько столбцов в таблицу
Синтаксис
Синтаксис SQL ALTER TABLE для добавления несколько столбцов в существующую таблицу.
ADD (column_1 column_definition,
column_2 column_definition,
...
column_n column_definition);
Пример
Давайте посмотрим на SQL ALTER TABLE пример, который добавляет более одного столбца.
Например.
1 2 3 |
ALTER TABLE supplier ADD (supplier_name char(50), city char(45)); |
Этот SQL ALTER TABLE пример добавит два столбца: supplier_name как поле char(50) и city как поле char(45) в таблицу supplier .
Изменить столбец в таблице
Синтаксис
Синтаксис SQL ALTER TABLE для изменения столбца в существующей таблице.
Для Oracle, MySQL, MariaDB.
MODIFY column_name column_type;
Для SQL Server.
ALTER COLUMN column_name column_type;
Для PostgreSQL.
ALTER COLUMN column_name TYPE column_definition;
Пример
Давайте посмотрим, как изменить столбец с именем supplier_name, используя команду ALTER TABLE. Обратите внимание, что в большинстве баз данных Синтаксис немного отличается.
Для Oracle.
1 2 |
ALTER TABLE supplier MODIFY supplier_name char(100) NOT NULL; |
Для MySQL и MariaDB.
1 2 |
ALTER TABLE supplier MODIFY supplier_name VARCHAR(100) NOT NULL; |
Для SQL Server.
1 2 |
ALTER TABLE supplier ALTER COLUMN supplier_name VARCHAR(100) NOT NULL; |
Для PostgreSQL.
1 2 3 |
ALTER TABLE supplier ALTER COLUMN supplier_name TYPE CHAR(100), ALTER COLUMN supplier_name SET NOT NULL; |
Изменить несколько столбцов в таблице
Синтаксис
Синтаксис SQL ALTER TABLE для изменения нескольких столбцов в существующей таблице.
Для Oracle.
MODIFY (column_1 column_type,
column_2 column_type,
...
column_n column_type);
Для MySQL и MariaDB.
MODIFY column_1 column_definition
[ FIRST | AFTER column_name ],
MODIFY column_2 column_definition
[ FIRST | AFTER column_name ],
...
;
Для PostgreSQL.
ALTER COLUMN column_name TYPE column_definition,
ALTER COLUMN column_name TYPE column_definition,
...
;
Пример
Давайте рассмотрим пример, который использует ALTER TABLE для изменения более одного столбца. В этом примере мы изменим два столбца с именами supplier_name и city.
Для Oracle.
1 2 3 |
ALTER TABLE supplier MODIFY (supplier_name char(100) NOT NULL, city char(75)); |
Для MySQL и MariaDB.
1 2 3 |
ALTER TABLE supplier MODIFY supplier_name VARCHAR(100) NOT NULL, MODIFY city VARCHAR(75); |
Для PostgreSQL.
1 2 3 4 |
ALTER TABLE supplier ALTER COLUMN supplier_name TYPE CHAR(100), ALTER COLUMN supplier_name SET NOT NULL, ALTER COLUMN city TYPE CHAR(75); |
Удалить столбец в таблиц
Синтаксис
Синтаксис ALTER TABLE для удаления столбца в существующей таблице.
DROP COLUMN column_name;
Пример
Давайте посмотрим на пример, который удаляет столбец из таблицы.
Например.
1 2 |
ALTER TABLE supplier DROP COLUMN supplier_name; |
Этот SQL пример ALTER TABLE удалит столбец supplier_name из таблицы supplier.
Переименовать столбец в таблице
Синтаксис
Синтаксис SQL ALTER TABLE для переименования столбца в существующей таблице.
Для Oracle и PostgreSQL.
RENAME COLUMN old_name TO new_name;
Для SQL Server (с использованием хранимой процедуры sp_rename).
Для MySQL и MariaDB.
CHANGE COLUMN old_name TO new_name;
Пример
Давайте рассмотрим пример, который переименовывает столбец в таблице supplier из supplier_name в sname.
Для Oracle (9i Rel2 и выше) и PostgreSQL.
1 2 |
ALTER TABLE supplier RENAME COLUMN supplier_name TO sname; |
Для SQL Server (с использованием хранимой процедуры sp_rename).
1 |
sp_rename 'supplier.supplier_name', 'sname', 'COLUMN'; |
Для MySQL и MariaDB.
1 2 |
ALTER TABLE supplier CHANGE COLUMN supplier_name sname VARCHAR(100); |
В MySQL и MariaDB вы должны указать тип данных столбца при его переименовании.
Переименовать таблицу
Синтаксис
Синтаксис SQL ALTER TABLE для переименования таблицы.
Для Oracle, MySQL, MariaDB, PostgreSQL и SQLite.
RENAME TO new_table_name;
Для SQL Server (с использованием хранимой процедуры sp_rename).
Пример
Давайте рассмотрим пример, который переименовывает таблицу supplier в новое имя vendor.
Для Oracle, MySQL, MariaDB, PostgreSQL и SQLite.
1 2 |
ALTER TABLE supplier RENAME TO vendor; |
Для SQL Server (с использованием хранимой процедуры sp_rename).
1 |
sp_rename 'supplier', 'vendor'; |
Практическое упражнение № 1
На основании приведенной ниже таблицы departments переименуйте таблицу departments в depts.
1 2 3 4 5 |
CREATE TABLE departments ( department_id int NOT NULL, department_name char(50) NOT NULL, CONSTRAINT departments_pk PRIMARY KEY (department_id) ); |
Решение для упражнения № 1
Следующий SQL оператор ALTER TABLE переименует таблицу departments в depts.
1 2 |
ALTER TABLE departments RENAME TO depts; |
Практическое упражнение № 2
На основе приведенной ниже таблицы employees добавьте столбец с именем salary, который имеет тип данных int.
1 2 3 4 5 6 |
CREATE TABLE employees ( employee_number int NOT NULL, employee_name char(50) NOT NULL, department_id int, CONSTRAINT employees_pk PRIMARY KEY (employee_number) ); |
Решение для упражнения № 2
Следующий SQL оператор ALTER TABLE добавит столбец salary в таблицу employees.
1 2 |
ALTER TABLE employees ADD salary int; |
Практическое упражнение № 3
На основе приведенной ниже таблицы customers добавьте два столбца - один столбец с именем contact_name, который является типом данных char(50), и один столбец с именем last_contacted, у которого тип данных date.
1 2 3 4 5 6 7 8 9 |
CREATE TABLE customers ( customer_id int NOT NULL, customer_name char(50) NOT NULL, address char(50), city char(50), state char(25), zip_code char(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) ); |
Решение для упражнения № 3
Следующий SQL оператор ALTER TABLE добавит столбцы contact_name и last_contacted в таблицу customers.
1 2 3 |
ALTER TABLE customers ADD (contact_name char(50), last_contacted date); |
Практическое упражнение № 4
На основании приведенной ниже таблицы employees измените столбец employee_name на тип данных char(75).
1 2 3 4 5 6 |
CREATE TABLE employees ( employee_number int NOT NULL, employee_name char(50) NOT NULL, department_id int, CONSTRAINT employees_pk PRIMARY KEY (employee_number) ); |
Решение для упражнения № 4
Следующий SQL оператор ALTER TABLE изменит тип данных для столбца employee_name на char(75).
1 2 |
ALTER TABLE employees MODIFY employee_name char(75); |
Практическое упражнение № 5
На основе приведенной ниже таблицы customer измените столбец customer_name, чтобы он не допускал значений NULL, и измените столбец state на тип данных char(2).
1 2 3 4 5 6 7 8 9 |
CREATE TABLE customers ( customer_id int NOT NULL, customer_name char(50), address char(50), city char(50), state char(25), zip_code char(10), CONSTRAINT customers_pk PRIMARY KEY (customer_id) ); |
Решение для упражнения № 5
Следующий SQL оператор ALTER TABLE изменит столбцы customer_name и state соответственно в таблице customers.
1 2 3 |
ALTER TABLE customers MODIFY (customer_name char(50) NOT NULL, state char(2)); |
Практическое упражнение № 6
На основе приведенной ниже таблицы employees удалите столбец salary.
1 2 3 4 5 6 7 |
CREATE TABLE employees ( employee_number int NOT NULL, employee_name char(50) NOT NULL, department_id int, salary int, CONSTRAINT employees_pk PRIMARY KEY (employee_number) ); |
Решение для упражнения № 6
Следующий SQL оператор ALTER TABLE удалит столбец salary из таблицы employees.
1 2 |
ALTER TABLE employees DROP COLUMN salary; |
Практическое упражнение № 7
На основании приведенной ниже таблицы departments переименуйте столбец department_name в имя_депта.
1 2 3 4 5 |
CREATE TABLE departments ( department_id int NOT NULL, department_name char(50) NOT NULL, CONSTRAINT departments_pk PRIMARY KEY (department_id) ); |
Решение для упражнения №
Следующий SQL оператор ALTER TABLE переименует столбец department_name в dept_name в таблице departments.
1 2 |
ALTER TABLE departments RENAME COLUMN department_name to dept_name; |
Узнайте как использовать оператор ALTER TABLE в распространенных БД: