Nice programing

SQL Server 2008 열 이름 바꾸기

nicepro 2020. 10. 2. 23:16
반응형

SQL Server 2008 열 이름 바꾸기


SQL Server 2008과 Navicat을 사용하고 있습니다. SQL을 사용하여 테이블의 열 이름을 변경해야합니다.

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

이 진술은 작동하지 않습니다.


사용하다 sp_rename

EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'

참조 : SQL SERVER – 열 이름 또는 테이블 이름을 바꾸는 방법

설명서 : sp_rename (Transact-SQL)

귀하의 경우에는 다음과 같습니다.

EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'

값을 묶을 때는 작은 따옴표를 사용해야합니다.


또는 SQLMicrosoft SQL Server Management Studio에서이 작업을 수행 할 수 있습니다. 다음은 GUI를 사용하는 몇 가지 빠른 방법입니다.

첫 번째 방법

열을 천천히 두 번 클릭합니다. 열 이름은 편집 가능한 텍스트 상자가됩니다.


두 번째 방법

열을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 이름 바꾸기를 선택합니다.

예를 들면 :

열 이름을 바꾸려면


세 번째 방법

이 방법은 한 번에 여러 열의 이름을 변경해야 할 때 선호됩니다.

  1. 이름 변경이 필요한 열이 포함 된 테이블을 마우스 오른쪽 버튼으로 클릭합니다.
  2. 디자인을 클릭 합니다.
  3. 테이블 디자인 패널에서 변경하려는 열 이름의 텍스트 상자를 클릭하고 편집합니다.

예를 들면 : MSSMS 테이블 디자인 예

참고 : OP는 특별히 SQL 솔루션을 요청했으며 이것이 다른 사람들에게 도움이 될 것이라고 생각했습니다. :)


시험:

EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'

테이블의 스키마도 지정해야합니다. 그렇지 않으면 다음 오류가 발생할 수 있습니다.

Msg 15248, 수준 11, 상태 1, 프로 시저 sp_rename, 줄 238 @objname 매개 변수가 모호하거나 요청 된 @objtype (COLUMN)이 잘못되었습니다.

배포 스크립트 인 경우 추가 보안을 추가하는 것이 좋습니다.

IF EXISTS (
        SELECT 1
        FROM sys.columns
        WHERE
            name = 'OldColumnName' AND
            object_name(object_id) = 'TableName'
    ) AND
    NOT EXISTS (
        SELECT 1
        FROM sys.columns
        WHERE
            name = 'NewColumnName' AND
            object_name(object_id) = 'TableName'
    )
    EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';

이미 내장 된 함수를 사용하는 것이 좋은 제안이지만 다른 방법은 다음과 같습니다.

  1. 동일한 데이터 유형과 새 이름으로 새 열을 만듭니다.
  2. UPDATE / INSERT 문을 실행하여 모든 데이터를 새 열에 복사합니다.
  3. 이전 열을 삭제하십시오.

The benefit behind using the sp_rename is that it takes care of all the relations associated with it.

From the documentation:

sp_rename automatically renames the associated index whenever a PRIMARY KEY or UNIQUE constraint is renamed. If a renamed index is tied to a PRIMARY KEY constraint, the PRIMARY KEY constraint is also automatically renamed by sp_rename. sp_rename can be used to rename primary and secondary XML indexes.


You can use sp_rename to rename a column.

USE YourDatabase;  
GO  
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';  
GO  

The first parameter is the object to be modified, the second parameter is the new name that will be given to the object, and the third parameter COLUMN informs the server that the rename is for the column, and can also be used to rename tables, index and alias data type.


Since I often come here and then wondering how to use the brackets, this answer might be useful for those like me.

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • The OldColumnName must not be in []. It will not work.
  • Don't put NewColumnName into [], it will result into [[NewColumnName]].

Sql Server management studio has some system defined Stored Procedures(SP)
One of which is used to rename a column.The SP is sp_rename

Syntax: sp_rename '[table_name].old_column_name', 'new_column_name'
For further help refer this article: sp_rename by Microsoft Docs

참고 : 이 SP를 실행하면 SQL 서버는 ' 주의 : 개체 이름의 일부를 변경하면 스크립트와 저장 프로 시저가 손상 될 수 있습니다. '라는주의 메시지가 표시됩니다 . 이는 열을 포함하는 고유 한 sp를 작성한 경우에만 중요합니다. 테이블에서 변경하려고합니다.


@Taher의 개선 된 버전

DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @OldColumnName AS VARCHAR(128)
DECLARE @NewColumnName AS VARCHAR(128)
DECLARE @ParamValue AS VARCHAR(1000)

SET @SchemaName = 'dbo'
SET @TableName = 'tableName'
SET @OldColumnName = 'OldColumnName'
SET @NewColumnName = 'NewColumnName'
SET @ParamValue = @SchemaName + '.' + @TableName + '.' + @OldColumnName

IF EXISTS
(
    SELECT 1 FROM sys.columns WHERE name = @OldColumnName AND OBJECT_NAME(object_id) = @TableName
)
AND NOT EXISTS
(
    SELECT 1 FROM sys.columns WHERE name = @NewColumnName AND OBJECT_NAME(object_id) = @TableName
)
BEGIN
    EXEC sp_rename @ParamValue, @NewColumnName, 'COLUMN';
END

또는 SQL Management Studio의 열을 두 번 천천히 클릭하고 UI를 통해 이름을 바꿀 수 있습니다.

참고 URL : https://stackoverflow.com/questions/16296622/rename-column-sql-server-2008

반응형