Как изменить тип данных в 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 изменить тип поля
Надо сделать поле чтобы можно записывать в него числа типа 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,390 4 4 золотых знака 25 25 серебряных знаков 64 64 бронзовых знака
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
ALTER TABLE оператор MySQL
В этом учебном пособии вы узнаете, как использовать 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.
Например:
SQL-Ex blog

Запросы SQL для изменения типа данных столбца
Добавил Sergey Moiseenko on Суббота, 23 апреля. 2022
- SQL Server 2019
- MySQL Server
- PostgreSQL
SQL-запрос для изменения типа столбца в базе данных SQL Server
Мы можем использовать оператор ALTER TABLE ALTER COLUMN для изменения типа столбца в таблице. Использует следующий синтаксис:
ALTER TABLE [tbl_name] ALTER COLUMN [col_name] [DATA_TYPE]
- tbl_name: задает имя таблицы.
- col_name: задает имя столбца, тип которого мы хотим изменить. col_name должно быть указано после ключевых слов ALTER COLUMN.
- DATA_TYPE: задает новый тип данных и длину столбца.
CREATE TABLE [dbo].[tblstudent]
(
[id] [INT] IDENTITY(1, 1) NOT NULL,
[student_code] [VARCHAR](20) NOT NULL,
[student_firstname] [VARCHAR](250) NOT NULL,
[student_lastname] [VARCHAR](10) NOT NULL,
[address] [VARCHAR](max) NULL,
[city_code] [VARCHAR](20) NOT NULL,
[school_code] [VARCHAR](20) NULL,
[admissiondate] [DATETIME] NULL,
CONSTRAINT [PK_ID] PRIMARY KEY CLUSTERED ( [id] ASC )
)
Предположим, что вы хотите изменить тип данных [address] с varchar(max) на nvarchar(1500). Выполните следующий запрос для изменения типа столбца.
Alter table tblstudent alter column address nvarchar(1500)
Проверим изменения с помощью следующего скрипта.
use StudentDB
go
select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,DATA_TYPE, CHARACTER_MAXIMUM_LENGTH from INFORMATION_SCHEMA.COLUMNS
where table_name='tblStudent'

Видно, что тип данных столбца изменился.
- При уменьшении размера столбца SQL Server проверит данные в таблице и, если данные превышают новую длину, вернет предупреждение и прервет выполнение оператора.
- При изменении типа данных nvarchar на varchar, если столбец содержит строку Юникод, то SQL Server возвращает ошибку и прерывает оператор.
- В отличие от MySQL изменение типа данных нескольких столбцов не допускается.
- Вы не можете добавить
а. ограничение NOT NULL, если столбец содержит NULL-значения;
б. ограничение UNIQUE, если в столбце имеются дубликаты.
Запрос SQL для изменения типа столбца в MySQL
Для изменения типа данных столбца мы можем использовать оператор ALTER TABLE MODIFY COLUMN. Синтаксис изменения типа данных столбца имеет следующий вид:
ALTER TABLE [tbl_name] MODIFY COLUMN [col_name_1] [DATA_TYPE],
MODIFY [col_name_2] [data_type],
MODIFY [col_name_3] [data_type]
- Tbl_name: задает имя таблицы, содержащая столбец, который мы хотим изменить.
- Col_name: задает имя столбца, тип которого мы хотим изменить. Col_name должно быть указано после ключевых слов MODIFY COLUMN. Мы можем изменить тип данных нескольких столбцов. При изменении типа данных нескольких столбцов, столбцы разделяются запятой (,).
- Datatype: задает новый тип данных и длину столбца. Тип данных должен указываться после имени столбца.
create table tblactor
(
actor_id int,
first_name varchar(500),
first_name varchar(500),
address varchar(500),
CityID int,
lastupdate datetime
)
Рассмотрим несколько примеров.
Пример 1: Запрос для изменения типа данных одного столбца
Мы хотим изменить тип столбца address с varchar(500) на тип данных TEXT. Выполните следующий запрос для изменения типа данных.
mysql> ALTER TABLE tblActor MODIFY address TEXT
Для проверки изменений выполните следующий запрос:

mysql> describe tblactor
Как можно увидеть, тип данных столбца address был изменен на TEXT.
Пример 2: SQL-запрос для изменения типа данных нескольких столбцов
Мы можем изменить тип данных нескольких столбцов в таблице. В нашем примере мы хотим изменить тип столбцов first_name и last_name. Новым типом данных столбцов становится TINYTEXT.
mysql> ALTER TABLE tblActor MODIFY first_name TINYTEXT, modify last_name TINYTEXT;
Выполните следующий запрос, чтобы проверить изменения:

mysql> describe tblActor
Как видно, тип данных столбцов first_name и last_name изменился на TINYTEXT.
Пример 3: Переименование столбца в MySQL
Чтобы переименовать столбцы, мы должны использовать оператор ALTER TABLE CHANGE COLUMN. Предположим, что вы хотите переименовать столбец CityID в CityCode; вы должны выполнить следующий запрос.
mysql> ALTER TABLE tblActor CHANGE COLUMN CityID CityCode int
Выполните команду describe, чтобы увидеть изменения структуры таблицы.

Видно, что имя столбца изменилось.
Запрос SQL для изменения типа столбца в базе данных PostgreSQL
Мы можем использовать оператор ALTER TABLE ALTER COLUMN для изменения типа данных столбца. Синтаксис изменения типа данных столбца:
ALTER TABLE [tbl_name] ALTER COLUMN [col_name_1] TYPE [data_type],
ALTER COLUMN [col_name_2] TYPE [data_type],
ALTER COLUMN [col_name_3] TYPE [data_type]
- Tbl_name: задает имя таблицы, содержащая столбец, который вы хотите изменить.
- Col_name: задает имя столбца, тип которого мы хотим изменить. Col_name должно быть указано после ключевых слов ALTER COLUMN. Мы можем изменить тип данных нескольких столбцов.
- Data_type: задает новый тип данных и длину столбца. Тип данных должен быть указан после ключевого слова TYPE.
create table tblmovies
(
movie_id int,
Movie_Title varchar(500),
Movie_director TEXT,
Movie_Producer TEXT,
duraion int,
Certificate varchar(5),
rent numeric(10,2)
)
Теперь рассмотрим несколько примеров.
Пример 1: Запрос SQL для изменения типа данных одного столбца
Мы хотим изменить тип столбца movie_id с типа данных int4 на int8. Для изменения типа данных выполните следующий запрос.
ALTER TABLE tblmovies ALTER COLUMN movie_id TYPE BIGINT
Для проверки изменений выполните следующий запрос:
SELECT
table_catalog,
table_name,
column_name,
udt_name,
character_maximum_length
FROM
information_schema.columns
WHERE
table_name = 'tblmovies';

Как видно, тип данных столбца movie_id стал int8.
Пример 2: Запрос SQL для изменения типа данных нескольких столбцов
Мы можем изменить тип данных сразу нескольких столбцов таблицы. В нашем примере мы хотим изменить тип столбцов movie_title и movie_producer. Новым типом данных для столбца movie_title становится TEXT, а для movie_producer — varchar(2000).
ALTER TABLE tblmovies ALTER COLUMN movie_title TYPE text, ALTER COLUMN movie_producer TYPE varchar(2000);
Выполните следующий запрос для проверки изменений:
SELECT
table_catalog,
table_name,
column_name,
udt_name,
character_maximum_length
FROM
information_schema.columns
WHERE
table_name = 'tblmovies';

Как видно, типом данных столбца movie_title является TEXT, а movie_producer — varchar(2000).
Обратные ссылки
Нет обратных ссылок
Комментарии
Показывать комментарии Как список | Древовидной структурой
Автор не разрешил комментировать эту запись