Как поменять тип данных в столбце sql
Перейти к содержимому

Как поменять тип данных в столбце sql

  • автор:

Как поменять тип данных в столбце sql

Модификация типа данных столбца

MS SQL Server
В MS SQL Server для изменения типа данных столбцов используется предложение ALTER COLUMN инструкции ALTER TABLE.

ALTER TABLE <table_name> ALTER COLUMN <col_name> <new_col_type> [ NULL | NOT NULL ]

В аргументе column_name содержит имя столбца, подлежащего изменению. Аргумент new_col_type содержит описание нового типа данных для изменяемого столбца.

Ниже приведены критерии для аргумента new_col_type изменяемого столбца:

  • Предыдущие типы данных должны быть неявно преобразуемыми в новый тип данных.
  • Аргумент new_col_type не может принадлежать к типу timestamp.
  • Если изменяемый столбец является столбцом идентификаторов, то новый тип данных должен поддерживать свойство идентификатора.

Тип данных столбцов text, ntext и image может быть изменен только следующими способами:

  • text на varchar(max), nvarchar(max) или xml
  • ntext на varchar(max), nvarchar(max) или xml
  • image в varbinary(max)

MySQL Server
В СУБД MySQL описание столбца меняется с помощью предложений CHANGE или MODIFY в операторе ALTER TABLE.

ALTER TABLE <table_name> MODIFY <col_definition>
ALTER TABLE <table_name> CHANGE <old_col_name> <col_definition>

В выражении col_definition для MODIFY и CHANGE используется тот же синтаксис, что и для CREATE TABLE. Следует учитывать, что этот синтаксис включает имя столбца, а не просто его тип.

Операция CHANGE, в отличие от операции MODIFY, не только меняет тип данных, но и переименовывает столбец. Поэтому при ее использовании сначала указывается имя столбца, который будет меняться, а затем дается полностью новое объявление столбца, включая опять же его имя.

Увеличить размерность столбцов name и lastname в таблице tbl_clients с 45 символов до 60

Как изменить тип данных столбца в базе данных SQL без потери данных

У меня есть база данных SQL Server, и я только что понял, что могу изменить тип одного из столбцов с int в bool .

Как я могу это сделать, не потеряв данные, которые уже введены в эту таблицу?

задан 27 фев ’11, 18:02

Вы пробовали создать новый битовый столбец, скопировать значения из старого столбца в новый, удалить старый и переименовать новый? Все это в транзакции, конечно же, для отката при возникновении проблем. — Radu Caprescu

Вы говорите: «Я только что понял, что могу изменить тип одного из столбцов с int на bool». Не существует логического типа данных. Хотя есть немного. Вы спрашиваете, как являетесь может это сделать (как уже говорилось в двух ответах). Или ваш вопрос «Я только что понял, что это возможно — Каким образом SQL Server сделай это?» — Martin Smith

11 ответы

Вы можете легко сделать это с помощью следующей команды. Любое значение 0 будет преобразовано в 0 (BIT = false), все остальное будет преобразовано в 1 (BIT = true).

Другой вариант — создать новый столбец типа BIT , заполните его из старого столбца, а когда закончите, отбросьте старый столбец и переименуйте новый в старое имя. Таким образом, если что-то во время преобразования пойдет не так, вы всегда сможете вернуться, поскольку все данные у вас останутся.

Другими словами: NULL остатки NULL , 0 становится False , ненулевые значения (1, -1, 1999, -987 . ) становятся True . — Альваро Гонсалес

И никогда не делайте таких изменений в графическом интерфейсе. Всегда используйте такой сценарий. Графический интерфейс отбросит и воссоздает таблицу, что отнимает гораздо больше времени. Если стол большой и на производстве, это может быть катастрофой. Кроме того, для всех изменений таблиц должен быть сценарий, который находится в системе управления версиями, как и весь другой код. — HLGEM

Я бы добавил, убедитесь, что у вас есть текущая резервная копия базы данных, прежде чем вносить какие-либо структурные изменения в таблицу с данными. И не запускайте подобное изменение в производственной среде в часы пиковой нагрузки, если таблица часто используется или имеет большой размер. — HLGEM

Примечание: если есть размер столбцов, просто укажите размер.

ответ дан 15 апр.

Если это действительное изменение.

вы можете изменить свойство.

Инструменты -> Параметры -> Дизайнеры -> Дизайнеры таблиц и баз данных -> Снимите флажок -> Запретить сохранение изменений, которые потребовали повторного создания таблицы.

Теперь вы можете легко изменить имя столбца без воссоздания таблицы или потери записей ur.

ответ дан 10 апр.

Ни при каких обстоятельствах не следует вносить изменения в таблицы с помощью графического интерфейса. Он полностью воссоздает таблицу, а не использует ее, и это вызовет проблему, если вы снимете этот флажок, а таблица будет большой. Далее у вас должны быть все изменения таблиц в скрипте в системе управления версиями. — HLGEM

Присмотритесь к этой опции повнимательнее — она ​​отключает защиту, которая не даст графическому интерфейсу сбросить таблицу. Ты не будешь появиться чтобы потерять данные, потому что графический интерфейс воссоздает таблицу, но на сервере она будет копировать / отбрасывать. Итак, если в таблице много данных, это вызовет очень большую операцию. Как и я think (не положительно), что это происходит в одной транзакции, поэтому вы можете заполнить журнал транзакций. — ДжМарш

Думаю, я хотел бы добавить небольшое пояснение к своему предыдущему комментарию. Если вы просто делаете это на своей машине разработки, у вас, вероятно, все в порядке. Но я бы не советовал использовать этот метод в производственной базе данных, особенно если он критически важен. — ДжМарш

Как изменить тип данных столбца в SQL Server?

Я пытаюсь изменить столбец из varchar(50) до nvarchar(200) . Что такое команда SQL для изменения этой таблицы?

7 ответов

редактировать Как отмечалось, NULL/NOT NULL должен был быть указан, см. Роб!—5—> как хорошо.

Не забывайте принимать значение null.

используйте инструкцию Alter table.

синтаксис для изменения столбца в существующей таблице в SQL Server (Transact-SQL):

этот SQL Server ALTER TABLE пример изменит столбец с именем last_name быть типом данных VARCHAR(75) и заставить столбец не допускает значения null.

пока вы увеличиваете размер вашего varchar, вы в порядке. Согласно Alter Table ссылки:

снижение точности или масштаба столбца может привести к усечению данных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *