Как изменить тип данных в mysql
Если таблица уже была ранее создана, и ее необходимо изменить, то для этого применяется команда ALTER TABLE . Ее сокращенный формальный синтаксис:
ALTER TABLE название_таблицы
Вообще данная команда поддерживает гораздо больше опций и возможностей. Все их можно посмотреть в документации. Рассмотрим лишь основные сценарии, с которыми мы можем столкнуться.
Добавление нового столбца
Добавим в таблицу Customers новый столбец Address:
ALTER TABLE Customers ADD Address VARCHAR(50) NULL;
В данном случае столбец Address имеет тип VARCHAR и для него определен атрибут NULL.
Удаление столбца
Удалим столбец Address из таблицы Customers:
ALTER TABLE Customers DROP COLUMN Address;
Изменение значения по умолчанию
Установим в таблице Customers для столбца Age значение по умолчанию 22:
ALTER TABLE Customers ALTER COLUMN Age SET DEFAULT 22;
Изменение типа столбца
Изменим в таблице Customers тип данных у столбца FirstName на CHAR(100) и установим для него атрибут NULL :
ALTER TABLE Customers MODIFY COLUMN FirstName CHAR(100) NULL;
Добавление и удаление внешнего ключа
Пусть изначально в базе данных будут добавлены две таблицы, никак не связанные:
CREATE TABLE Customers ( Id INT PRIMARY KEY AUTO_INCREMENT, Age INT, FirstName VARCHAR(20) NOT NULL, LastName VARCHAR(20) NOT NULL ); CREATE TABLE Orders ( Id INT PRIMARY KEY AUTO_INCREMENT, CustomerId INT, CreatedAt Date );
Добавим ограничение внешнего ключа к столбцу CustomerId таблицы Orders:
ALTER TABLE Orders ADD FOREIGN KEY(CustomerId) REFERENCES Customers(Id);
При добавлении ограничений мы можем указать для них имя, используя оператор CONSTRAINT , после которого указывается имя ограничения:
ALTER TABLE Orders ADD CONSTRAINT orders_customers_fk FOREIGN KEY(CustomerId) REFERENCES Customers(Id);
В данном случае ограничение внешнего ключа называется orders_customers_fk. Затем по этому имени мы можем удалить ограничение:
ALTER TABLE Orders DROP FOREIGN KEY orders_customers_fk;
Добавление и удаление первичного ключа
Добавим в таблицу Products первичный ключ:
CREATE TABLE Products ( Id INT, Model VARCHAR(20) ); ALTER TABLE Products ADD PRIMARY KEY (Id);
Теперь удалим первичный ключ:
ALTER TABLE Products DROP PRIMARY KEY;
Изменить столбец в MySQL
Управляя базой данных, администратору базы данных необходимо изменить структуру таблиц, чтобы оставаться в курсе последних событий. В этой статье мы изучим некоторые различные типы задач, которые мы можем выполнять с помощью предоставленной MySQL команды ALTER. Итак, приступим.
Команда ALTER изменяет или изменяет структуру таблицы. Например,
- Добавление столбца
- Удаление столбца
- Переименование столбца
- Модификация колонки
В этой статье мы попробуем примеры команд ALTER для добавления, удаления, переименования и изменения столбцов таблицы в MySQL.
Добавить столбец
Мы можем добавить столбец в уже существующую таблицу, используя следующий синтаксис команды ALTER.
ALTER TABLE имя_таблицы ADD имя_столбца datatype;
В этом синтаксисе не забудьте заменить имя_таблицы и имя_столбца на имя, которое вы хотите дать.
Мы также можем указать положение вновь созданного столбца, используя предложения FIRST и AFTER и ссылаясь на уже существующий столбец в таблице. Например
ALTER TABLE имя_таблицы ADD имя_столбца datatype [FIRST | AFTER] имя_существующего_столбца;
Если мы хотим добавить столбец перед существующим столбцом, мы можем использовать предложение FIRST. Точно так же, если мы хотим добавить столбец после существующего столбца, мы можем использовать предложение AFTER.
Мы также можем добавить несколько столбцов, используя тот же синтаксис столбцов ALTER TABLE и ADD. Например
ALTER TABLE имя_таблицы ADD имя_столбца1 datatype [FIRST | AFTER] имя_существующего_столбца ADD имя_столбца2 datatype [FIRST | AFTER] имя_существующего_столбца;
Отбросить/удалить столбец
Удалить столбец в MySQL очень просто. Мы можем удалить существующий столбец в таблице, используя команду ALTER TABLE и DROP. Синтаксис для удаления столбца:
ALTER TABLE имя_таблицы DROP имя_столбца;
Вот как просто удалить столбец таблицы в MySQL.
Переименовать столбец
Мы можем переименовать столбец, используя предложение CHANGE вместе с командой ALTER TABLE. В котором мы сначала предоставляем существующее имя столбца, а затем новое имя вместе с типом данных, за которым следует предложение CHANGE. Чтобы изменить имя столбца, выполните следующую команду
ALTER TABLE имя_таблицы CHANGE COLUMN предыдущее_имя_столбца новое_имя_столбца тип данных;
Если мы можем изменить имя столбца, мы можем изменить имя таблицы и использовать предложение RENAME с командой ALTER TABLE. Синтаксис для переименования таблицы:
ALTER TABLE имя_таблицы RENAME TO новое_имя_таблицы;
Изменить столбец
Предположим, мы хотим изменить определение столбца или тип данных столбца в MySQL. Предложение MODIFY нам пригодится, чтобы помочь в этом случае. Мы можем использовать предложение MODIFY для изменения типа данных столбца. Как это
ALTER TABLE имя_таблицы MODIFY имя_столбца new_data_type;
Совет
Вот совет по использованию команды ALTER.
Установить значение по умолчанию для столбца
Если мы хотим предоставить или установить какое-либо значение по умолчанию для столбца таблицы. МЫ можем сделать это, выполнив следующую команду
ALTER TABLE имя_таблицы ALTER имя_столбца SET DEFAULT значение;
В этом синтаксисе не забудьте заменить имя_таблицы, имя_столбца и значение в соответствии с вашими требованиями.
Если мы можем установить значения по умолчанию для столбца. Должен быть способ сбросить или отбросить значения столбца по умолчанию.
Удалить значение столбца по умолчанию
Что ж, MySQL предоставляет предложение DROP DEFAULT, а также команду ALTER TABLE, чтобы удалить значения столбца по умолчанию.
ALTER TABLE имя_таблицы ALTER имя_столбца DROP DEFAULT;
Итак, это некоторые из различных способов управления и изменения таблицы в MySQL.
Резюме
В этой статье описаны различные способы использования команды ALTER для выполнения различных операций. В этой статье мы научились добавлять, удалять, переименовывать таблицу и столбцы, изменять определение столбца, устанавливать и отменять значения по умолчанию для столбца с помощью команды ALTER TABLE в MySQL. Если эта статья помогла вам лучше понять команду ALTER в MySQL, и вы хотите узнать больше о концепциях MySQL.
Как изменить тип данных в mysql
Оператор ALTER TABLE обеспечивает возможность изменять структуру существующей таблицы. Например, можно добавлять или удалять столбцы, создавать или уничтожать индексы или переименовывать столбцы либо саму таблицу. Можно также изменять комментарий для таблицы и ее тип. See section 6.5.3 Синтаксис оператора CREATE TABLE .
Если оператор ALTER TABLE используется для изменения определения типа столбца, но DESCRIBE tbl_name показывает, что столбец не изменился, то, возможно, MySQL игнорирует данную модификацию по одной из причин, описанных в разделе section 6.5.3.1 Молчаливые изменения определений столбцов. Например, при попытке изменить столбец VARCHAR на CHAR MySQL будет продолжать использовать VARCHAR , если данная таблица содержит другие столбцы с переменной длиной.
Оператор ALTER TABLE во время работы создает временную копию исходной таблицы. Требуемое изменение выполняется на копии, затем исходная таблица удаляется, а новая переименовывается. Так делается для того, чтобы в новую таблицу автоматически попадали все обновления кроме неудавшихся. Во время выполнения ALTER TABLE исходная таблица доступна для чтения другими клиентами. Операции обновления и записи в этой таблице приостанавливаются, пока не будет готова новая таблица.
Следует отметить, что при использовании любой другой опции для ALTER TABLE кроме RENAME , MySQL всегда будет создавать временную таблицу, даже если данные, строго говоря, и не нуждаются в копировании (например, при изменении имени столбца). Мы планируем исправить это в будущем, однако, поскольку ALTER TABLE выполняется не так часто, мы (разработчики MySQL) не считаем эту задачу первоочередной. Для таблиц MyISAM можно увеличить скорость воссоздания индексной части (что является наиболее медленной частью в процессе восстановления таблицы) путем установки переменной myisam_sort_buffer_size достаточно большого значения.
- Для использования оператора ALTER TABLE необходимы привилегии ALTER , INSERT и CREATE для данной таблицы.
- Опция IGNORE является расширением MySQL по отношению к ANSI SQL92. Она управляет работой ALTER TABLE при наличии дубликатов уникальных ключей в новой таблице. Если опция IGNORE не задана, то для данной копии процесс прерывается и происходит откат назад. Если IGNORE указывается, тогда для строк с дубликатами уникальных ключей только первая строка используется, а остальные удаляются.
- Можно запустить несколько выражений ADD , ALTER , DROP и CHANGE в одной команде ALTER TABLE . Это является расширением MySQL по отношению к ANSI SQL92, где допускается только одно выражение из упомянутых в одной команде ALTER TABLE .
- Опции CHANGE col_name , DROP col_name и DROP INDEX также являются расширениями MySQL по отношению к ANSI SQL92.
- Опция MODIFY представляет собой расширение Oracle для команды ALTER TABLE .
- Необязательное слово COLUMN представляет собой «белый шум» и может быть опущено.
- При использовании ALTER TABLE имя_таблицы RENAME TO новое_имя без каких-либо других опций MySQL просто переименовывает файлы, соответствующие заданной таблице. В этом случае нет необходимости создавать временную таблицу. See section 6.5.5 Синтаксис оператора RENAME TABL E.
- В выражении create_definition для ADD и CHANGE используется тот же синтаксис, что и для CREATE TABLE . Следует учитывать, что этот синтаксис включает имя столбца, а не просто его тип. See section 6.5.3 Синтаксис оператора CREATE TABLE .
- Столбец можно переименовывать, используя выражение CHANGE имя_столбца create_definition . Чтобы сделать это, необходимо указать старое и новое имена столбца и его тип в настоящее время. Например, чтобы переименовать столбец INTEGER из a в b , можно сделать следующее:
mysql> ALTER TABLE t1 CHANGE a b INTEGER;
При изменении типа столбца, но не его имени синтаксис выражения CHANGE все равно требует указания обоих имен столбца, даже если они одинаковы. Например:
mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;
Однако начиная с версии MySQL 3.22.16a можно также использовать выражение MODIFY для изменения типа столбца без переименовывания его:
mysql> ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
Ниже приводятся примеры, показывающие некоторые случаи употребления команды ALTER TABLE . Пример начинается с таблицы t1 , которая создается следующим образом:
mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10));
Для того чтобы переименовать таблицу из t1 в t2 :
mysql> ALTER TABLE t1 RENAME t2;
Для того чтобы изменить тип столбца с INTEGER на TINYINT NOT NULL (оставляя имя прежним) и изменить тип столбца b с CHAR(10) на CHAR(20) с переименованием его с b на c :
mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
Для того чтобы добавить новый столбец TIMESTAMP с именем d :
mysql> ALTER TABLE t2 ADD d TIMESTAMP;
Для того чтобы добавить индекс к столбцу d и сделать столбец a первичным ключом:
mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
Для того чтобы удалить столбец c :
mysql> ALTER TABLE t2 DROP COLUMN c;
Для того чтобы добавить новый числовой столбец AUTO_INCREMENT с именем c :
mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c);
Заметьте, что столбец c индексируется, так как столбцы AUTO_INCREMENT должны быть индексированы, кроме того, столбец c объявляется как NOT NULL , поскольку индексированные столбцы не могут быть NULL .
При добавлении столбца AUTO_INCREMENT значения этого столбца автоматически заполняются последовательными номерами (при добавлении записей). Первый номер последовательности можно установить путем выполнения команды SET INSERT_ID=# перед ALTER TABLE или использования табличной опции AUTO_INCREMENT = # . See section 5.5.6 Синтаксис команды SET .
Если столбец AUTO_INCREMENT для таблиц MyISAM , не изменяется, то номер последовательности остается прежним. При удалении столбца AUTO_INCREMENT и последующем добавлении другого столбца AUTO_INCREMENT номера будут начинаться снова с 1 .
Как в mysql изменить тип поля
Надо сделать поле чтобы можно записывать в него числа типа 65.5 , а сейчас можно только целые числа писать.
Отслеживать
11.9k 5 5 золотых знаков 28 28 серебряных знаков 40 40 бронзовых знаков
задан 1 дек 2017 в 10:10
1 1 1 серебряный знак 2 2 бронзовых знака
Добавте в вопрос, как определено поле на данный момент.
1 дек 2017 в 10:30
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
ALTER TABLE `table` CHANGE COLUMN `column_name` `column_name` FLOAT;
table — имя вашей таблицы
column_name — имя вашего поля
Отслеживать
ответ дан 1 дек 2017 в 10:18
Viktor Tomilov Viktor Tomilov
8,315 4 4 золотых знака 25 25 серебряных знаков 63 63 бронзовых знака
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.