
Alter Table в SQL - Как добавить столбец или переименовать столбец в SQL
Вы создали свою базу данных и свои таблицы, и после всей этой работы вы заметили, что вам нужно добавить или переименовать столбец. Что ж, вы можете использовать для этого оператор ALTER TABLE.
Просто имейте в виду, что при этом нужно быть очень осторожным. Если в вашей таблице много строк, это может вызвать проблемы с производительностью вашей базы данных.
Примечание. Если приведенный здесь синтаксис не работает, обратитесь к документации по своей СУБД. Большинство вещей работает одинаково, но есть некоторые различия для различных СУБД.
Как добавить новую колонку с помощью ALTER TABLE
Чтобы добавить новый столбец, вам сначала нужно выбрать таблицу с помощью ALTER TABLE имя_таблицы, а затем написать имя нового столбца и его тип данны вместе с операторомо ADD. В совокупности код выглядит так:
ALTER TABLE table_name
ADD column_name datatype;
Например у нас есть база данных пользователей, как показано ниже:
id | name | age | state | |
---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com |
2 | Molly | 22 | New Jersey | molly@example.com |
3 | Robert | 19 | New York | robert@example.com |
Настал момент, когда нам нужно сохранить номера документов, удостоверяющих личность наших пользователей, поэтому нам нужно добавить для этого новый столбец.
Чтобы добавить новый столбец в нашу таблицу пользователей, нам нужно выбрать таблицу с ALTER TABLE users, а затем указать имя нового столбца и его тип данных с помощью оператора ADD id_number TEXT. Все вместе выглядит так:
ALTER TABLE users
ADD id_number TEXT;
Таблица с новым столбцом будет выглядеть следующим образом:
id | name | age | state | id_number | |
---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL |
2 | Molly | 22 | New Jersey | molly@example.com | NULL |
3 | Robert | 19 | New York | robert@example.com | NULL |
Вам нужно будет использовать оператор UPDATE, чтобы добавить недостающую информацию для уже существующих пользователей, как только она будет предоставлена.
Как создать новый столбец со значением по умолчанию вместо NULL
Вы также можете создать столбец со значением по умолчанию, используя ключевое слово default, за которым следует используемое значение. Тогда пользователи увидят это значение по умолчанию вместо того, чтобы пропущенные значения были заполнены NULL.
Предположим, что скоро у нас появятся международные пользователи, и мы хотим добавить столбец country. Все наши существующие пользователи из США, поэтому мы можем использовать это значение по умолчанию.
ALTER TABLE users
ADD country TEXT default "United States";
Наша таблица будет выглядеть так:
id | name | age | state | id_number | country | |
---|---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL | United States |
2 | Molly | 22 | New Jersey | molly@example.com | NULL | United States |
3 | Robert | 19 | New York | robert@example.com | NULL | United States |
Будьте осторожны при добавлении новых столбцов в таблицы.
Если в вашей таблице уже много строк - например, если у вас уже много пользователей или много хранимых данных, - добавление нового столбца может потребовать значительных ресурсов. Поэтому обращайтесь с этой операцией осторожно.
Как переименовать столбец с помощью ALTER TABLE
Вы можете переименовать столбец с помощью приведенного ниже кода. Вы выбираете таблицу с помощью ALTER TABLE имя_таблицы, а затем указываете, какой столбец переименовать и во что переименовать, с помощью RENAME COLUMN old_name TO new_name.
ALTER TABLE table_name
RENAME COLUMN old_name TO new_name;
Давайте посмотрим на ту же таблицу, которую мы использовали в предыдущем примере:
id | name | age | state | id_number | country | |
---|---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL | United States |
2 | Molly | 22 | New Jersey | molly@example.com | NULL | United States |
3 | Robert | 19 | New York | robert@example.com | NULL | United States |
Чтобы избежать путаницы между столбцами id и id_number, давайте переименуем первый в user_id.
Сначала мы укажем таблицу с помощью ALTER TABLE users, а затем объявим имя столбца, чтобы оно изменилось на то, что мы хотим изменить, с помощью RENAME COLUMN id TO user_id.
ALTER TABLE users
RENAME COLUMN id TO user_id;
После выполения запроса таблица будет выглядеть так:
user_id | name | age | state | id_number | country | |
---|---|---|---|---|---|---|
1 | Paul | 24 | Michigan | paul@example.com | NULL | United States |
2 | Molly | 22 | New Jersey | molly@example.com | NULL | United States |
3 | Robert | 19 | New York | robert@example.com | NULL | United States |
Будьте осторожны при переименовании столбца в таблице.
Когда вы переименовываете столбцы с помощью ALTER TABLE, вы рискуете нарушить зависимости базы данных.
Если вы используете инструмент рефакторинга базы данных для изменения имени столбца вместо использования ALTER TABLE, он будет управлять всеми зависимостями и обновлять их с новым именем столбца.
Если у вас небольшая база данных, возможно, вам не о чем беспокоиться, но об этом важно помнить.
Оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи