MySQL 5.0.45
What is the syntax to alter a table to allow a column to be null, alternately what’s wrong with this:
ALTER mytable MODIFY mycolumn varchar(255) null;
I interpreted the manual as just run the above and it would recreate the column, this time allowing null. The server is telling me I have syntactical errors. I just don’t see them.
frederj
1,4359 silver badges20 bronze badges
asked Oct 17, 2008 at 16:52
1
You want the following:
ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);
Columns are nullable by default. As long as the column is not declared UNIQUE
or NOT NULL
, there shouldn’t be any problems.
answered Oct 17, 2008 at 16:55
Daniel SpiewakDaniel Spiewak
54.1k13 gold badges108 silver badges120 bronze badges
2
Your syntax error is caused by a missing «table» in the query
ALTER TABLE mytable MODIFY mycolumn varchar(255) null;
answered Oct 17, 2008 at 16:58
ConroyPConroyP
40.6k16 gold badges79 silver badges86 bronze badges
4
My solution:
ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL
For example:
ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL;
eeerahul
1,6294 gold badges30 silver badges38 bronze badges
answered Nov 24, 2011 at 9:36
KrishnrohitKrishnrohit
5294 silver badges3 bronze badges
0
My solution is the same as @Krishnrohit:
ALTER TABLE `table` CHANGE `column_current_name` `new_column_name` DATETIME NULL;
I actually had the column set as NOT NULL
but with the above query it was changed to NULL
.
P.S. I know this an old thread but nobody seems to acknowledge that CHANGE
is also correct.
answered Apr 20, 2019 at 20:35
Hmerman6006Hmerman6006
1,3531 gold badge15 silver badges37 bronze badges
Under some circumstances (if you get «ERROR 1064 (42000): You have an error in your SQL syntax;…») you need to do
ALTER TABLE mytable MODIFY mytable.mycolumn varchar(255);
answered Sep 2, 2009 at 16:15
Use:
ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);
answered Aug 12, 2015 at 13:21
1
I am using mysql and need to update a column with a null value. I have tried this many different ways and the best I have gotten is an empty string.
Is there a special syntax to do this?
linuxbuild
15.7k6 gold badges60 silver badges87 bronze badges
asked Oct 6, 2010 at 8:08
3
No special syntax:
CREATE TABLE your_table (some_id int, your_column varchar(100));
INSERT INTO your_table VALUES (1, 'Hello');
UPDATE your_table
SET your_column = NULL
WHERE some_id = 1;
SELECT * FROM your_table WHERE your_column IS NULL;
+---------+-------------+
| some_id | your_column |
+---------+-------------+
| 1 | NULL |
+---------+-------------+
1 row in set (0.00 sec)
answered Oct 6, 2010 at 8:11
Daniel VassalloDaniel Vassallo
334k71 gold badges501 silver badges441 bronze badges
1
NULL
is a special value in SQL. So to null a property, do this:
UPDATE table SET column = NULL;
answered Oct 6, 2010 at 8:11
GumboGumbo
635k107 gold badges772 silver badges839 bronze badges
4
Use IS
instead of =
This will solve your problem
example syntax:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
answered Nov 25, 2016 at 5:03
0
In the above answers, many ways and repetitions have been suggested for the same.
I kept looking for an answer as mentioned is the question but couldn’t find here.
Another way to put the above question «update a column with a null value»
could be «UPDATE ALL THE ROWS IN THE COLUMN TO NULL»
In such a situation following works
update table_name
set field_name = NULL
where field_name is not NULL;
is
as well is not
works in mysql
answered Jul 24, 2018 at 6:39
Nitish Kumar PalNitish Kumar Pal
2,6183 gold badges16 silver badges23 bronze badges
1
Remember to look if your column can be null. You can do that using
mysql> desc my_table;
If your column cannot be null, when you set the value to null it will be the cast value to it.
Here a example
mysql> create table example ( age int not null, name varchar(100) not null );
mysql> insert into example values ( null, "without num" ), ( 2 , null );
mysql> select * from example;
+-----+-------------+
| age | name |
+-----+-------------+
| 0 | without num |
| 2 | |
+-----+-------------+
2 rows in set (0.00 sec)
mysql> select * from example where age is null or name is null;
Empty set (0.00 sec)
answered Apr 8, 2014 at 21:01
Thiago MataThiago Mata
2,69335 silver badges32 bronze badges
For those facing a similar issue, I found that when ‘simulating’ a SET = NULL
query, PHPMyAdmin would throw an error. It’s a red herring.. just run the query and all will be well.
Phiter
14.3k14 gold badges50 silver badges83 bronze badges
answered Feb 19, 2016 at 16:30
1
If you want to set null value using update query set column value to NULL (without quotes)
update tablename set columnname = NULL
However, if you are directly editing field value inside mysql workbench then use (Esc + del) keystroke to insert null value into selected column
answered May 16, 2016 at 9:43
use is
instead of =
Eg: Select * from table_name where column is null
answered Oct 24, 2013 at 9:20
Another possible reason for the empty string, rather than a true null is that the field is an index or is part of an index. This happened to me: using phpMyAdmin, I edited the structure of a field in one of my tables to allow NULLs by checking the «Null» checkbox then hitting the «Save» button. «Table pricing has been altered successfully» was displayed so I assumed that the change happened — it didn’t. After doing an UPDATE to set all of those fields to NULL, they were, instead, set to empty strings, so I took a look at the table structure again and saw that the «Null» column for that field was set to ‘no‘. That’s when I realized that the field was part of the Primary key!
answered Dec 6, 2013 at 0:52
ReverseEMFReverseEMF
4866 silver badges10 bronze badges
if you set NULL for all records try this:
UPDATE `table_name` SET `column_you_want_set_null`= NULL
OR just set NULL for special records use WHERE
UPDATE `table_name` SET `column_you_want_set_null`= NULL WHERE `column_name` = 'column_value'
answered Apr 10, 2020 at 16:47
mamalmamal
1,59116 silver badges13 bronze badges
if you follow
UPDATE table SET name = NULL
then name is «» not NULL IN MYSQL means your query
SELECT * FROM table WHERE name = NULL
not work or disappoint yourself
answered Oct 6, 2010 at 8:27
Steven SpielbergSteven Spielberg
On insert we can use
$arrEntity=$entity->toArray();
foreach ($arrEntity as $key => $value) {
if (trim($entity->$key) == '' && !is_null($entity->$key) && !is_bool($entity->$key)){
unset($entity->$key);
}
}
On update we can use
$fields=array();
foreach ($fields as $key => $value) {
if (trim($value) == '' && !is_null($value) && !is_bool($value)){
$fields[$key] = null;
}
}
answered Sep 24, 2020 at 7:45
To set as NULL on a column you need to have the column to allow NULL first, otherwise you’ll definitely get error.
To adit the column just run this syntax
ALTER TABLE [table_name] CHANGE [column_name] [column_name] VARCHAR(10) NULL DEFAULT NULL
answered Jan 19 at 3:08
1
I suspect the problem here is that quotes were entered as literals in your string value. You can set these columns to null using:
UPDATE table SET col=NULL WHERE length(col)<3;
You should of course first check that these values are indeed «» with something like:
SELECT DISTINCT(col) FROM table WHERE length(col)<3;
Ivan Ferić
4,70511 gold badges37 silver badges47 bronze badges
answered Jan 16, 2013 at 8:08
I am using mysql and need to update a column with a null value. I have tried this many different ways and the best I have gotten is an empty string.
Is there a special syntax to do this?
linuxbuild
15.7k6 gold badges60 silver badges87 bronze badges
asked Oct 6, 2010 at 8:08
3
No special syntax:
CREATE TABLE your_table (some_id int, your_column varchar(100));
INSERT INTO your_table VALUES (1, 'Hello');
UPDATE your_table
SET your_column = NULL
WHERE some_id = 1;
SELECT * FROM your_table WHERE your_column IS NULL;
+---------+-------------+
| some_id | your_column |
+---------+-------------+
| 1 | NULL |
+---------+-------------+
1 row in set (0.00 sec)
answered Oct 6, 2010 at 8:11
Daniel VassalloDaniel Vassallo
334k71 gold badges501 silver badges441 bronze badges
1
NULL
is a special value in SQL. So to null a property, do this:
UPDATE table SET column = NULL;
answered Oct 6, 2010 at 8:11
GumboGumbo
635k107 gold badges772 silver badges839 bronze badges
4
Use IS
instead of =
This will solve your problem
example syntax:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
answered Nov 25, 2016 at 5:03
0
In the above answers, many ways and repetitions have been suggested for the same.
I kept looking for an answer as mentioned is the question but couldn’t find here.
Another way to put the above question «update a column with a null value»
could be «UPDATE ALL THE ROWS IN THE COLUMN TO NULL»
In such a situation following works
update table_name
set field_name = NULL
where field_name is not NULL;
is
as well is not
works in mysql
answered Jul 24, 2018 at 6:39
Nitish Kumar PalNitish Kumar Pal
2,6183 gold badges16 silver badges23 bronze badges
1
Remember to look if your column can be null. You can do that using
mysql> desc my_table;
If your column cannot be null, when you set the value to null it will be the cast value to it.
Here a example
mysql> create table example ( age int not null, name varchar(100) not null );
mysql> insert into example values ( null, "without num" ), ( 2 , null );
mysql> select * from example;
+-----+-------------+
| age | name |
+-----+-------------+
| 0 | without num |
| 2 | |
+-----+-------------+
2 rows in set (0.00 sec)
mysql> select * from example where age is null or name is null;
Empty set (0.00 sec)
answered Apr 8, 2014 at 21:01
Thiago MataThiago Mata
2,69335 silver badges32 bronze badges
For those facing a similar issue, I found that when ‘simulating’ a SET = NULL
query, PHPMyAdmin would throw an error. It’s a red herring.. just run the query and all will be well.
Phiter
14.3k14 gold badges50 silver badges83 bronze badges
answered Feb 19, 2016 at 16:30
1
If you want to set null value using update query set column value to NULL (without quotes)
update tablename set columnname = NULL
However, if you are directly editing field value inside mysql workbench then use (Esc + del) keystroke to insert null value into selected column
answered May 16, 2016 at 9:43
use is
instead of =
Eg: Select * from table_name where column is null
answered Oct 24, 2013 at 9:20
Another possible reason for the empty string, rather than a true null is that the field is an index or is part of an index. This happened to me: using phpMyAdmin, I edited the structure of a field in one of my tables to allow NULLs by checking the «Null» checkbox then hitting the «Save» button. «Table pricing has been altered successfully» was displayed so I assumed that the change happened — it didn’t. After doing an UPDATE to set all of those fields to NULL, they were, instead, set to empty strings, so I took a look at the table structure again and saw that the «Null» column for that field was set to ‘no‘. That’s when I realized that the field was part of the Primary key!
answered Dec 6, 2013 at 0:52
ReverseEMFReverseEMF
4866 silver badges10 bronze badges
if you set NULL for all records try this:
UPDATE `table_name` SET `column_you_want_set_null`= NULL
OR just set NULL for special records use WHERE
UPDATE `table_name` SET `column_you_want_set_null`= NULL WHERE `column_name` = 'column_value'
answered Apr 10, 2020 at 16:47
mamalmamal
1,59116 silver badges13 bronze badges
if you follow
UPDATE table SET name = NULL
then name is «» not NULL IN MYSQL means your query
SELECT * FROM table WHERE name = NULL
not work or disappoint yourself
answered Oct 6, 2010 at 8:27
Steven SpielbergSteven Spielberg
On insert we can use
$arrEntity=$entity->toArray();
foreach ($arrEntity as $key => $value) {
if (trim($entity->$key) == '' && !is_null($entity->$key) && !is_bool($entity->$key)){
unset($entity->$key);
}
}
On update we can use
$fields=array();
foreach ($fields as $key => $value) {
if (trim($value) == '' && !is_null($value) && !is_bool($value)){
$fields[$key] = null;
}
}
answered Sep 24, 2020 at 7:45
To set as NULL on a column you need to have the column to allow NULL first, otherwise you’ll definitely get error.
To adit the column just run this syntax
ALTER TABLE [table_name] CHANGE [column_name] [column_name] VARCHAR(10) NULL DEFAULT NULL
answered Jan 19 at 3:08
1
I suspect the problem here is that quotes were entered as literals in your string value. You can set these columns to null using:
UPDATE table SET col=NULL WHERE length(col)<3;
You should of course first check that these values are indeed «» with something like:
SELECT DISTINCT(col) FROM table WHERE length(col)<3;
Ivan Ferić
4,70511 gold badges37 silver badges47 bronze badges
answered Jan 16, 2013 at 8:08
Fatmarmelad 34 / 10 / 2 Регистрация: 20.02.2016 Сообщений: 1,438 |
||||
1 |
||||
14.09.2019, 14:43. Показов 7164. Ответов 9 Метки нет (Все метки)
Добрый день!
__________________
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
14.09.2019, 14:43 |
9 |
Fatmarmelad 34 / 10 / 2 Регистрация: 20.02.2016 Сообщений: 1,438 |
||||
18.09.2019, 19:31 [ТС] |
3 |
|||
имею следующее
ERROR 1138 (22004): Invalid use of NULL value
0 |
350 / 245 / 76 Регистрация: 18.03.2016 Сообщений: 979 |
|
18.09.2019, 21:50 |
4 |
Fatmarmelad, может в этом столбце есть значения NULL?
0 |
34 / 10 / 2 Регистрация: 20.02.2016 Сообщений: 1,438 |
|
19.09.2019, 19:03 [ТС] |
5 |
может в этом столбце есть значения NULL? да, есть. Получается , они попадают в сроки по умолчанию. Можно как-то сразу строки перевести в not null?
0 |
jester 350 / 245 / 76 Регистрация: 18.03.2016 Сообщений: 979 |
||||
19.09.2019, 20:18 |
6 |
|||
Fatmarmelad, создать новый столбец или обновить этот
1 |
Работает? Не трогай. 135 / 175 / 35 Регистрация: 21.01.2019 Сообщений: 820 |
|
24.09.2019, 06:53 |
7 |
к значению TEXT нельзя применить NOT NULL, только к INT будет работать
0 |
350 / 245 / 76 Регистрация: 18.03.2016 Сообщений: 979 |
|
24.09.2019, 15:36 |
8 |
IPredator, почему?
0 |
166 / 164 / 27 Регистрация: 20.04.2010 Сообщений: 607 |
|
26.09.2019, 08:33 |
9 |
Особенности мускуля.
0 |
350 / 245 / 76 Регистрация: 18.03.2016 Сообщений: 979 |
|
26.09.2019, 10:15 |
10 |
Aneron, но я ставил ограничение на text и на varchar.
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
26.09.2019, 10:15 |
Помогаю со студенческими работами здесь
XML. Как мне добится того, чтоб в списке было 1, NULL, NULL, 4? Не работает код: m_web1.Navigate (‘gidro.htm’,0,0,NULL,NULL); Сервер отправляет объект не null, а клиент принимает null
Записать значение null . «Невозможно преобразовать null в int .» Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 10 |
Введение
ALTER TABLE — один из самых незаменимых инструментов в работе с базами данных SQL. В этой статье мы рассмотрим SQL оператор ALTER TABLE и его применение. Узнаем, как добавить или удалить поля с помощью этого инструмента, и рассмотрим различные примеры его использования. В данной статье мы не будем рассматривать MS SQL и остановимся на синтаксисе наиболее популярной версии — MySQL.
Синтаксис оператора ALTER TABLE выглядит следующим образом:
ALTER TABLE название_таблицы [WITH CHECK | WITH NOCHECK]
{ ADD название_столбца тип_данных_столбца [атрибуты_столбца] |
DROP COLUMN название_столбца |
ALTER COLUMN название_столбца тип_данных_столбца [NULL|NOT NULL] |
ADD [CONSTRAINT] определение_ограничения |
DROP [CONSTRAINT] имя_ограничения}
Из этой записи мы видим, что сценариев применения данной команды достаточно много. Давайте рассмотрим их. В качестве примера мы будем использовать базу данных slcbookshelf, которую мы создавали в статье о первичных и внешних SQL ключах.
use slcbookshelf;
Добавление столбца в таблицу (ADD COLUMN)
Сейчас наша таблица выглядит следующим образом:
mysql> DESC books;
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| book_id | int | NO | | NULL | |
| book_name | varchar(255) | NO | | NULL | |
| book_category | varchar(255) | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
Давайте добавим в нашу таблицу новый столбец, в котором будет отображаться автор каждой книги:
ALTER TABLE books
ADD author NVARCHAR(50) NOT NULL;
Данным запросом мы создали в нашей таблице новый столбец authors с типом NVARCHAR и длиной в 50 символов, который не может принимать пустое значение. Если мы не знаем автора произведения, тогда наша команда будет иметь такой вид:
ALTER TABLE books
ADD author NVARCHAR(50) NOT NULL DEFAULT 'Неизвестен';
Теперь для существующих данных, для которых не заполнен столбец author, значение по умолчанию будет «Неизвестен».
Переименование столбца и таблицы
Переименование столбца (RENAME)
С помощью ALTER TABLE можно переименовать существующий столбец. Для этого выполните команду:
ALTER TABLE books
RENAME COLUMN author TO authors;
Переименование таблицы (RENAME)
При помощи ALTER TABLE можно переименовать таблицу. Выполняем запрос:
ALTER TABLE books
RENAME TO books_selectel;
Удаление столбца (DROP)
Чтобы удалить столбец из таблицы с помощью ALTER TABLE, требуется выполнить следующий запрос:
ALTER TABLE books
DROP COLUMN authors;
Изменение столбца (ALTER COLUMN)
Иногда бывают случаи, когда необходимо изменить уже созданный ранее столбец. Это действие можно выполнить с помощью команды ALTER TABLE. Для изменения существующего столбца необходимо выполнить такой запрос:
ALTER TABLE books
ALTER COLUMN book_category VARCHAR(200);
В данном примере мы изменили максимальное количество символов, которое может использоваться в полях столбца book_category с 255 до 200.
Также с помощью ALTER TABLE можно сделать действие сразу с несколькими столбцами. Чтобы изменить сразу несколько столбцов, вам потребуется использовать эту команду:
ALTER TABLE books
MODIFY book_category VARCHAR(200),
MODIFY book_name VARCHAR(200),
...
;
Таким запросом мы изменили сразу два столбца: book_category и book_name.
Изменение типа столбца
При помощи ALTER TABLE можно изменить тип столбца в таблице SQL. Изменение типа существующего столбца осуществляется при помощи команды:
ALTER TABLE books
ALTER COLUMN book_category NVARCHAR(200);
Выполнив эту команду, мы изменили тип book_category на NVARCHAR(200).
Добавление первичного и внешнего ключей при помощи ALTER TABLE
Вы можете определить существующий столбец в таблице в качестве первичного ключа с помощью команды ALTER TABLE. Запрос, добавляющий в таблицу первичный ключ, будет выглядеть следующим образом:
ALTER TABLE books
ADD PRIMARY KEY (book_id);
Аналогично при помощи ALTER TABLE можно добавить внешний ключ таблицы. Чтобы создать внешний ключ для таблицы MySQL выполните команду:
ALTER TABLE books ADD FOREIGN KEY (author_id) REFERENCES authors(author_id);
В результате выполнения этой команды поле author_id в таблице books будет внешним ключом для аналогичного поля в таблице authors.
Работа с ограничениями
Ограничения — специальные правила, которые применяются к таблице, чтобы ограничить типы данных в таблице. Ограничения очень важны, так как их правильное применение помогает обеспечить целостность данных в таблицах и наладить стабильную работу базы. Давайте рассмотрим одно из таких ограничений — ограничение CHECK. Применяя ограничения CHECK к столбцу таблицы, мы создаем правило, по которому при добавлении данных СУБД будет автоматически проверять их на соответствии заданным правилам.
Создание ограничения
Например, если нам необходимо, чтобы все клиенты в базе данных Customers имели возраст больше 21 года, мы можем установить следующее ограничение:
ALTER TABLE Customers
ADD CHECK (Age > 21);
При применении такого ограничения стоит учитывать, что если в столбце уже существуют данные, не соответствующие ограничению, то команда будет выполнена с ошибкой. Чтобы избежать подобного поведения, вы можете добавить ограничение со значением WITH NOCHECK. Таким образом, текущие значения столбца не вызовут ошибок при выполнении запроса при несоответствии ограничению:
ALTER TABLE Customers WITH NOCHECK
ADD CHECK (Age > 21);
Добавление ограничений с именами
Так как ограничений в таблицах может быть много, добавление имен к ограничениям может в значительной мере упростить будущую работу с таблицей. Создать имя для ограничения можно при помощи оператора CONSTRAINT:
ALTER TABLE Customers
ADD CONSTRAINT Check_Age_Greater_Than_Twenty_One CHECK (Age > 21);
Удаление ограничений
ALTER TABLE можно пользоваться и для удаления ограничений. Для удаления существующих ограничений необходимо выполнить следующую команду:
ALTER TABLE Customers
DROP Check_Age_Greater_Than_Twenty_One;
После выполнения этой команды ограничение перестанет применяться при добавлении новых данных в столбец.
Заключение
В данной статье мы с вами узнали что такое ALTER TABLE, рассмотрели работу с этой командой и научились вносить с ее помощью изменения в таблицы и столбцы, а также рассмотрели несколько примеров использования данной команды, которые сильно упростят будущую работу с базами данных.
В этом учебном пособии вы узнаете, как использовать MySQL оператор ALTER TABLE для добавления столбца, изменения столбца, удаления столбца, переименования столбца или переименования таблицы (с синтаксисом и примерами).
Описание
MySQL оператор ALTER TABLE используется для добавления, изменения или удаления столбцов в таблице. Оператор MySQL ALTER TABLE также используется для переименования таблицы.
Добавить столбец в таблицу
Синтаксис
Синтаксис добавления столбца в таблицу MySQL (с использованием оператора ALTER TABLE):
ALTER TABLE table_name
ADD new_column_name column_definition
[ FIRST | AFTER column_name ];
table_name — имя таблицы для изменения.
new_column_name — имя нового столбца для добавления в таблицу.
column_definition — тип данных и определение столбца (NULL или NOT NULL и т. д.).
FIRST | AFTER column_name — необязательный. Он сообщает MySQL, где в таблице создается столбец. Если этот параметр не указан, то новый столбец будет добавлен в конец таблицы.
Пример
Рассмотрим пример, который показывает, как добавить столбец в таблицу MySQL, используя оператор ALTER TABLE.
Например:
ALTER TABLE contacts ADD last_name varchar(40) NOT NULL AFTER contact_id; |
Этот MySQL пример ALTER TABLE добавит столбец с именем last_name в таблицу contacts. Он будет создан как столбец NOT NULL и появится в таблице после поля contact_id.
Добавить несколько столбцов в таблицу
Синтаксис
Синтаксис добавления нескольких столбцов в таблицу MySQL (с использованием оператора ALTER TABLE):
ALTER TABLE table_name
ADD new_column_name column_definition
[ FIRST | AFTER column_name ],
ADD new_column_name column_definition
[ FIRST | AFTER column_name ],
…
;
table_name — имя таблицы для изменения.
new_column_name — имя нового столбца для добавления в таблицу.
column_definition — тип данных и определение столбца (NULL или NOT NULL и т. д.).
FIRST | AFTER column_name — необязательный. Он сообщает MySQL, где в таблице создается столбец. Если этот параметр не указан, новый столбец будет добавлен в конец таблицы.
Пример
Рассмотрим пример, который показывает, как добавить несколько столбцов в таблицу MySQL, используя оператор ALTER TABLE.
Например:
ALTER TABLE contacts ADD last_name varchar(40) NOT NULL AFTER contact_id, ADD first_name varchar(35) NULL AFTER last_name; |
Этот пример ALTER TABLE добавит в таблицу contacts два столбца — last_name и first_name.
Поле last_name будет создано как столбец varchar (40) NOT NULL и появится в таблице contacts после столбца contact_id. Столбец first_name будет создан как столбец NULL varchar (35) и появится в таблице после столбца last_name.
Изменить столбец в таблице
Синтаксис
Синтаксис для изменения столбца в таблице MySQL (с использованием оператора ALTER TABLE):
ALTER TABLE table_name
MODIFY column_name column_definition
[ FIRST | AFTER column_name ];
table_name — имя таблицы для изменения.
column_name — имя столбца для изменения в таблице.
column_definition — измененный тип данных и определение столбца (NULL или NOT NULL и т. д.).
FIRST | AFTER column_name — необязательный. Он сообщает MySQL, где в таблице помещается столбец, если вы хотите изменить его позицию.
Пример
Рассмотрим пример, который показывает, как изменить столбец в таблице MySQL с помощью оператора ALTER TABLE.
Например:
ALTER TABLE contacts MODIFY last_name varchar(50) NULL; |
Этот пример ALTER TABLE изменит столбец с именем last_name как тип данных varchar (50) и установит для столбца значения NULL.
Изменить несколько столбцов в таблице
Синтаксис
Синтаксис для изменения нескольких столбцов в таблице MySQL (с использованием оператора ALTER TABLE):
ALTER TABLE table_name
MODIFY column_name column_definition
[ FIRST | AFTER column_name ],
MODIFY column_name column_definition
[ FIRST | AFTER column_name ],
…
;
table_name — имя таблицы для изменения.
column_name — имя столбца для изменения в таблице.
column_definition — измененный тип данных и определение столбца (NULL или NOT NULL и т. д.).
FIRST | AFTER column_name — необязательный. Он сообщает MySQL, где в таблице помещается столбец, если вы хотите изменить его позицию.
Пример
Рассмотрим пример, который показывает, как изменить несколько столбцов в таблице MySQL, используя оператор ALTER TABLE.
ALTER TABLE contacts MODIFY last_name varchar(55) NULL AFTER contact_type, MODIFY first_name varchar(30) NOT NULL; |
Этот пример ALTER TABLE будет изменять в таблице contacts два столбца — last_name и first_name.
Поле last_name будет изменено на столбец NULL varchar (55) и появится в таблице после столбца contact_type. Столбец first_name будет изменен на столбец varchar (30) NOT NULL (и не изменит позицию в определении таблицы contacts, так как не указано FIRST | AFTER).
Удаление столбца из таблицы
Синтаксис
Синтаксис для удаления столбца из таблицы в MySQL (с использованием оператора ALTER TABLE):
Например:
ALTER TABLE table_name
DROP COLUMN column_name;
table_name — имя таблицы для изменения.
column_name — имя столбца для удаления из таблицы.
Пример
Рассмотрим пример, который показывает, как удалить столбец из таблицы в MySQL с помощью оператора ALTER TABLE.
Например:
ALTER TABLE contacts DROP COLUMN contact_type; |
Этот пример ALTER TABLE удаляет столбец с именем contact_type из таблицы contacts.
Переименование столбца в таблице
Синтаксис
Синтаксис для переименования столбца в таблице MySQL (с использованием оператора ALTER TABLE):
ALTER TABLE table_name
CHANGE COLUMN old_name new_name
column_definition
[ FIRST | AFTER column_name ];
table_name — имя таблицы для изменения.
old_name — столбец для переименования.
new_name — новое имя столбца.
column_definition — тип данных и определение столбца (NULL или NOT NULL и т. д.). Вы должны указать определение столбца при переименовании столбца, даже если оно не изменится.
FIRST | AFTER column_name — необязательный. Он сообщает MySQL, где в таблице помещается столбец, если вы хотите изменить его позицию.
Пример
Рассмотрим пример, который показывает, как переименовать столбец в таблице MySQL с помощью оператора ALTER TABLE.
Например:
ALTER TABLE contacts CHANGE COLUMN contact_type ctype varchar(20) NOT NULL; |
Этот MySQL пример ALTER TABLE переименует столбец с именем contact_type в ctype. Столбец будет определен как столбец varchar (20) NOT NULL.
Переименовать таблицу
Синтаксис
Синтаксис для переименования таблицы в MySQL:
ALTER TABLE table_name
RENAME TO new_table_name;
table_name — таблица для переименования.
new_table_name — новое имя таблицы для использования.
Пример
Рассмотрим пример, который показывает, как переименовать таблицу в MySQL с помощью оператора ALTER TABLE.
Например:
ALTER TABLE contacts RENAME TO people; |
Этот пример ALTER TABLE переименует таблицу contacts в people.
Узнайте как использовать оператор ALTER TABLE в распространенных БД:
- ALTER TABLE Oracle PL/SQL
- ALTER TABLE SQL Server
- ALTER TABLE PostgreSQL
- ALTER TABLE MariaDB
- ALTER TABLE SQLite