Переименование столбцов (ядро СУБД)
Столбец таблицы в SQL Server можно переименовать с помощью SQL Server Management Studio или Transact-SQL.
ограничения
Переименование столбца таблицы не приводит к автоматическому переименованию ссылок на этот столбец. Необходимо вручную изменить все объекты, которые ссылаются на переименованный столбец. Например, если переименован столбец таблицы и на этот столбец имеется ссылка в триггере, то необходимо изменить триггер, указав новое имя столбца. Используйте sys.sql_expression_dependencies , чтобы составить список зависимостей для объекта перед его переименованием.
Переименование столбца не обновляет метаданные для любых объектов, которые SELECT всех столбцов (с помощью * ) из этой таблицы не обновляются. Например, если переименовать столбец таблицы и этот столбец ссылается на представление или функцию, не привязанную к схеме, все столбцы (используя), * метаданные представления или функции продолжают отражать исходное имя столбца. Обновите метаданные с помощью sp_refreshsqlmodule или sp_refreshview.
Разрешения
Необходимо разрешение ALTER на объект.
Использование SQL Server Management Studio
Переименование столбца в обозревателе объектов
- В обозревателе объектов подключитесь к экземпляру ядра СУБД.
- В обозревателе объектовщелкните правой кнопкой мыши таблицу, в которой нужно переименовать столбцы, и выберите пункт Переименовать.
- Введите новое имя столбца.
Переименование столбца с помощью конструктора таблиц
- В обозревателе объектовщелкните правой кнопкой мыши таблицу, в которой нужно переименовать столбцы, и выберите пункт Конструирование.
- В разделе Имя столбцавыберите имя, которое нужно изменить, и введите новое.
- В меню Файл выберите пункт Сохранить имя таблицы.
Вы также можете изменить имя столбца на вкладке «Свойства столбца». Выберите столбец, имя которого нужно изменить и введите новое значение для имени.
Использование Transact-SQL
Переименование столбца
В следующем примере выполняется переименование столбца ErrorTime в таблице dbo.ErrorLog базы данных AdventureWorksLT на столбец ErrorDateTime .
EXEC sp_rename 'dbo.ErrorLog.ErrorTime', 'ErrorDateTime', 'COLUMN';
Обратите внимание на предупреждение о выходе и убедитесь, что другие объекты или запросы не были нарушены:
Caution: Changing any part of an object name could break scripts and stored procedures.
Дополнительные сведения см. в sp_rename (Transact-SQL).
Следующие шаги
- Изменение столбцов
- sys.sql_expression_dependencies (Transact-SQL)
- sp_rename (Transact-SQL)
Переименование столбцов и вычисления в результирующем наборе
Если же явно не указать имя для выражения, то будет использован способ именования по умолчанию, который зависит от используемой СУБД. Так в MS Access будут использованы имена типа выражение1 и т.д., а выходной столбец в MS SQL Server вообще не будет иметь заголовка.
Предикаты (часть 2)
Предикат LIKE
- Символ подчеркивания (_), который можно использовать вместо любого единичного символа в проверяемом значении.
- Символ процента (%), который заменяет набор любых символов (число символов в наборе может быть от 0 и более) в проверяемом значении.
Шаблон | Описание |
‘abc%’ | Любые строки, которые начинаются с букв «abc». |
‘abc_’ | Строки длиной строго 4 символа, причем первыми символами строки должны быть «abc». |
‘%z’ | Любая последовательность символов, которая обязательно заканчивается символом «z». |
‘%Rostov%’ | Любая последовательность символов, содержащая слово «Rostov» в любом месте строки. |
name | class | launched |
Haruna | Kongo | 1916 |
Hiei | Kongo | 1914 |
Kirishima | Kongo | 1915 |
Kongo | Kongo | 1913 |
Musashi | Yamato | 1942 |
Yamato | Yamato | 1941 |
Если искомая строка содержит трафаретный символ, то следует задать управляющий символ в предложении ESCAPE. Этот управляющий символ должен использоваться в шаблоне перед трафаретным символом, сообщая о том, что трафаретный символ следует трактовать как обычный символ. Например, если в некотором поле следует отыскать все значения, содержащие символ «_», то шаблон ‘%_%’ приведет к тому, что будут возвращены все записи из таблицы. В данном случае шаблон следует записать следующим образом:
Для проверки значения на соответствие строке «25%» можно воспользоваться таким предикатом:
- Если либо проверяемое значение, либо образец, либо управляющий символ равен NULL, истинностное значение равно UNKNOWN.
- В противном случае, если проверяемое значение и образец имеют нулевую длину, истинностное значение равно TRUE.
- В противном случае, если проверяемое значение соответствует шаблону, то предикат LIKE равен TRUE.
- Если не соблюдается ни одно из перечисленных выше условий, предикат LIKE равен FALSE.
Использование значения NULL в условиях поиска
Предикат
IS [NOT] NULL
позволяет проверить отсутствие (наличие) значения в полях таблицы. Использование в этих случаях обычных предикатов сравнения может привести к неверным результатам, т.к. сравнение со значением NULL дает результат UNKNOWN (неизвестно).
Как переименовать столбец в sql
Тут используется запрос ALTER . Для переименования столбца он будет выглядеть следующим образом:
-- в таблице "cars" -- изменить колонку "quantity": -- поменять имя с "quantity" на "amount" ALTER TABLE cars RENAME COLUMN quantity TO amount;
Переименование столбцов таблицы и ограничений
Чтобы переименовать столбцы таблицы, используйте предложение RENAME COLUMN инструкции ALTER TABLE .
Чтобы переименовать любое существующее ограничение для таблицы, используйте предложение RENAME CONSTRAINT инструкции ALTER TABLE .
При переименовании столбца таблицы новое имя не должно конфликтовать с именем любого существующего столбца в таблице. С предложением RENAME COLUMN не допускается включать никаких других предложений.
В примерах на рисунке используется таблица marketing с первичным ключом mktg_pk, определенным в столбце id.
CONSTRAINT mktg_pk PRIMARY KEY(team_id));
В примере a столбец id таблицы marketing переименовывается в mktg_id . В примере b mktg_pk переименовывается в new_mktg_pk .
При переименовании любого существующего ограничения для таблицы новое имя не должно конфликтовать с именами всех существующих ограничений. Для переименования создаваемых системой имен ограничений можно использовать предложение RENAME CONSTRAINT .
Далее: Проверка последовательностей