Mysql как изменить not null на null

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

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's user avatar

frederj

1,4359 silver badges20 bronze badges

asked Oct 17, 2008 at 16:52

zmf's user avatar

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 Spiewak's user avatar

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

ConroyP's user avatar

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's user avatar

eeerahul

1,6294 gold badges30 silver badges38 bronze badges

answered Nov 24, 2011 at 9:36

Krishnrohit's user avatar

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

Hmerman6006's user avatar

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

Gerald Senarclens de Grancy's user avatar

Use:
ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);

answered Aug 12, 2015 at 13:21

Jan Nejedly's user avatar

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's user avatar

linuxbuild

15.7k6 gold badges60 silver badges87 bronze badges

asked Oct 6, 2010 at 8:08

jim's user avatar

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 Vassallo's user avatar

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

Gumbo's user avatar

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;

General Failure's user avatar

answered Nov 25, 2016 at 5:03

korubilli krishna chaitanya's user avatar

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 Pal's user avatar

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 Mata's user avatar

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's user avatar

Phiter

14.3k14 gold badges50 silver badges83 bronze badges

answered Feb 19, 2016 at 16:30

Daniel Dunn's user avatar

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

mayank nigam's user avatar

use is instead of =

Eg: Select * from table_name where column is null

James Donnelly's user avatar

answered Oct 24, 2013 at 9:20

Cyber Gangster's user avatar

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

ReverseEMF's user avatar

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

mamal's user avatar

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

Balasaheb Bhise's user avatar

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

Nizam Khir's user avatar

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ć's user avatar

Ivan Ferić

4,70511 gold badges37 silver badges47 bronze badges

answered Jan 16, 2013 at 8:08

Dylan's user avatar

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's user avatar

linuxbuild

15.7k6 gold badges60 silver badges87 bronze badges

asked Oct 6, 2010 at 8:08

jim's user avatar

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 Vassallo's user avatar

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

Gumbo's user avatar

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;

General Failure's user avatar

answered Nov 25, 2016 at 5:03

korubilli krishna chaitanya's user avatar

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 Pal's user avatar

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 Mata's user avatar

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's user avatar

Phiter

14.3k14 gold badges50 silver badges83 bronze badges

answered Feb 19, 2016 at 16:30

Daniel Dunn's user avatar

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

mayank nigam's user avatar

use is instead of =

Eg: Select * from table_name where column is null

James Donnelly's user avatar

answered Oct 24, 2013 at 9:20

Cyber Gangster's user avatar

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

ReverseEMF's user avatar

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

mamal's user avatar

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

Balasaheb Bhise's user avatar

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

Nizam Khir's user avatar

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ć's user avatar

Ivan Ferić

4,70511 gold badges37 silver badges47 bronze badges

answered Jan 16, 2013 at 8:08

Dylan's user avatar

Fatmarmelad

34 / 10 / 2

Регистрация: 20.02.2016

Сообщений: 1,438

1

14.09.2019, 14:43. Показов 7164. Ответов 9

Метки нет (Все метки)


Добрый день!
Как можно столбец с заданным NULL поменять на NOT NULL или наоборот?
Пример ниже не работает

MySQL
1
alter table tv change tvdate tvdate not null;

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



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

имею следующее

MySQL
1
alter table tv modify column summary text NOT NULL;

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

Цитата
Сообщение от jester
Посмотреть сообщение

может в этом столбце есть значения NULL?

да, есть. Получается , они попадают в сроки по умолчанию. Можно как-то сразу строки перевести в not null?



0



jester

350 / 245 / 76

Регистрация: 18.03.2016

Сообщений: 979

19.09.2019, 20:18

6

Fatmarmelad, создать новый столбец или обновить этот
что то типа

SQL
1
2
SET FIELD = " "
WHERE FIELD IS NULL



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

Помогаю со студенческими работами здесь

Вывести 1 если другое поле не null, 0 если null
Всем доброго времени суток.
Никак не могу найти ответ на вопрос в теме.
Грубо говоря нужно…

XML. Как мне добится того, чтоб в списке было 1, NULL, NULL, 4?
Есть следующий кусочек XML файла:
&lt;root&gt;
&lt;row&gt;
&lt;cell&gt;&lt;data&gt;1&lt;/data&gt;&lt;/cell&gt;…

Не работает код: m_web1.Navigate (‘gidro.htm’,0,0,NULL,NULL);
Друзья помогите начинаюшему
значит делаю
m_web1.Navigate (‘с:gidro.htm’,0,0,NULL,NULL);работает…

Сервер отправляет объект не null, а клиент принимает null
Помогите пожалуйста! У меня в клиент-серверном приложении творится что-то странное! Короче с…

Null value in column «user_id» violates not-null constraint save()
Хочу сделать импорт данных из файла Excel. все данные берутся нормально но он выдает ошибку, сам…

Записать значение 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

Понравилась статья? Поделить с друзьями:
  • Mysql storage error 28 from storage engine
  • Ms sql server error 5030
  • Ms sql server error 3041 severity 16 state 1
  • Ms sql error 245
  • Mercedes ошибка 1974