복붙노트

[SQL] SQL Server의 기존 테이블에 기본 값으로 열을 추가

SQL

SQL Server의 기존 테이블에 기본 값으로 열을 추가

어떻게 SQL 서버 2000의 기존 테이블에 기본 값을 가진 열 / 2005 SQL 서버를 추가 할 수 있습니까?

해결법

  1. ==============================

    1.

    ALTER TABLE {TABLENAME} 
    ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
    CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
    WITH VALUES
    
    ALTER TABLE SomeTable
            ADD SomeCol Bit NULL --Or NOT NULL.
     CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
        DEFAULT (0)--Optional Default-Constraint.
    WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
    

    선택적 제약 조건 이름 : 당신이 CONSTRAINT D_SomeTable_SomeCol을 떠날 경우, SQL 서버가 자동 생성됩니다 같은 재미있는 이름을 가진 기본-Contraint : DF__SomeTa__SomeC__4FB7FEF6

    옵션 문으로는-값 : 당신의 열이 널 때 WITH 값에만 필요 당신은 기록을 기존에 사용되는 기본값을 원한다. 당신의 열이 NULL이 아닌 경우, 자동으로 기본값을 사용합니다 기존의 모든 레코드를 들어, 여부 값 여부를 지정합니다.

    어떻게 삽입 작업을 불이행-제약 조건 : 당신이 SomeTable에 레코드를 삽입하고 SomeCol의 값을 지정하지 않으면 디폴트로 0이됩니다. 당신이 레코드를 삽입하고 NULL로 SomeCol의 값을 지정 (당신의 열이 널 (NULL)을 허용 할) 경우, 다음 기본-제약은 사용되지 않습니다 및 NULL은 값으로 삽입됩니다.

    주의 사항은 아래 모든 사람의 훌륭한 피드백을 기반으로했다. 특별히 감사함: 자신의 댓글에 대한 @Yatrix, @WalterStabosz, @YahooSerious 및 @StackMan.

  2. ==============================

    2.

    ALTER TABLE Protocols
    ADD ProtocolTypeID int NOT NULL DEFAULT(1)
    GO
    

    NOT NULL 제약 조건을 위반되지 않도록 DEFAULT의 포함은 기본 값이 기존 행의 열을 채 웁니다.

  3. ==============================

    3.null 인 열을 추가 할 때, 값이 특정 디폴트 값이 존재하는 행에 적용되도록한다 :

    null 인 열을 추가 할 때, 값이 특정 디폴트 값이 존재하는 행에 적용되도록한다 :

    ALTER TABLE table
    ADD column BIT     -- Demonstration with NULL-able column added
    CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES
    
  4. ==============================

    4.

    ALTER TABLE <table name> 
    ADD <new column name> <data type> NOT NULL
    GO
    ALTER TABLE <table name> 
    ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
    GO
    
  5. ==============================

    5.

    ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'
    
  6. ==============================

    6.당신이 추가 컬럼이 NOT NULL 제약 조건이있는 경우 아직 DEFAULT 제약 조건 (값)이없는, 조심하십시오. 테이블이 그 안에 모든 행이있는 경우 ALTER TABLE 문은이 경우에 실패합니다. 이 솔루션은 어느 새 열에서 NOT NULL 제약 조건을 제거하거나 이에 대한 DEFAULT 제약 조건을 제공하는 것입니다.

    당신이 추가 컬럼이 NOT NULL 제약 조건이있는 경우 아직 DEFAULT 제약 조건 (값)이없는, 조심하십시오. 테이블이 그 안에 모든 행이있는 경우 ALTER TABLE 문은이 경우에 실패합니다. 이 솔루션은 어느 새 열에서 NOT NULL 제약 조건을 제거하거나 이에 대한 DEFAULT 제약 조건을 제공하는 것입니다.

  7. ==============================

    7.두 줄 만에 가장 기본적인 버전

    두 줄 만에 가장 기본적인 버전

    ALTER TABLE MyTable
    ADD MyNewColumn INT NOT NULL DEFAULT 0
    
  8. ==============================

    8.사용하다:

    사용하다:

    -- Add a column with a default DateTime  
    -- to capture when each record is added.
    
    ALTER TABLE myTableName  
    ADD RecordAddedDate SMALLDATETIME NULL DEFAULT (GETDATE())  
    GO 
    
  9. ==============================

    9.여러 열을 추가 할 경우에 당신은 그것을 예를 들어,이 방법을 수행 할 수 있습니다 :

    여러 열을 추가 할 경우에 당신은 그것을 예를 들어,이 방법을 수행 할 수 있습니다 :

    ALTER TABLE YourTable
        ADD Column1 INT NOT NULL DEFAULT 0,
            Column2 INT NOT NULL DEFAULT 1,
            Column3 VARCHAR(50) DEFAULT 'Hello'
    GO
    
  10. ==============================

    10.사용하다:

    사용하다:

    ALTER TABLE {TABLENAME} 
    ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
    CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
    

    참조 : ALTER TABLE (Transact-SQL)를 참조하십시오 (MSDN)

  11. ==============================

    11.다음과 같은 방법으로 T-SQL과 함께 일을 할 수 있습니다.

    다음과 같은 방법으로 T-SQL과 함께 일을 할 수 있습니다.

     ALTER TABLE {TABLENAME}
     ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
     CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
    

    당신은 테이블에 기본 값을 설정, 디자인 메뉴에서 마우스 오른쪽 버튼을 클릭 테이블이 또한 SQL Server Management Studio를 사용할 수 있습니다뿐만 아니라.

    당신이 데이터베이스의 모든 테이블에 (그렇지 않은 존재 않을 경우) 동일한 열을 추가 할 경우 또한, 다음 사용

     USE AdventureWorks;
     EXEC sp_msforeachtable
    'PRINT ''ALTER TABLE ? ADD Date_Created DATETIME DEFAULT GETDATE();''' ;
    
  12. ==============================

    12.기본 값으로 기존 데이터베이스 테이블에 열을 추가하려면, 우리는 사용할 수 있습니다 :

    기본 값으로 기존 데이터베이스 테이블에 열을 추가하려면, 우리는 사용할 수 있습니다 :

    ALTER TABLE [dbo.table_name]
        ADD [Column_Name] BIT NOT NULL
    Default ( 0 )
    

    여기에 기본 값으로 기존 데이터베이스 테이블에 열을 추가하는 또 다른 방법이다.

    기본 값으로 열을 추가하기위한 훨씬 더 철저한 SQL 스크립트는 열이 또한 추가 제약 조건을 체크인하고 존재하는 경우이를 삭제하기 전에 존재하는 경우 검사를 포함하여 아래에 있습니다. 또한이 스크립트는 이름 제약 우리는 좋은 명명 규칙이 (I DF_ 등) 수없는 SQL이 우리에게 무작위로 생성 된 번호가 이름의 제약을 줄 것이다 경우; 그래서 그것의 좋은 너무 제약 조건의 이름을 할 수 있습니다.

    -------------------------------------------------------------------------
    -- Drop COLUMN
    -- Name of Column: Column_EmployeeName
    -- Name of Table: table_Emplyee
    --------------------------------------------------------------------------
    IF EXISTS (
                SELECT 1
                FROM INFORMATION_SCHEMA.COLUMNS
                WHERE TABLE_NAME = 'table_Emplyee'
                  AND COLUMN_NAME = 'Column_EmployeeName'
               )
        BEGIN
    
            IF EXISTS ( SELECT 1
                        FROM sys.default_constraints
                        WHERE object_id = OBJECT_ID('[dbo].[DF_table_Emplyee_Column_EmployeeName]')
                          AND parent_object_id = OBJECT_ID('[dbo].[table_Emplyee]')
                      )
                BEGIN
                    ------  DROP Contraint
    
                    ALTER TABLE [dbo].[table_Emplyee] DROP CONSTRAINT [DF_table_Emplyee_Column_EmployeeName]
                PRINT '[DF_table_Emplyee_Column_EmployeeName] was dropped'
                END
         --    -----   DROP Column   -----------------------------------------------------------------
            ALTER TABLE [dbo].table_Emplyee
                DROP COLUMN Column_EmployeeName
            PRINT 'Column Column_EmployeeName in images table was dropped'
        END
    
    --------------------------------------------------------------------------
    -- ADD  COLUMN Column_EmployeeName IN table_Emplyee table
    --------------------------------------------------------------------------
    IF NOT EXISTS (
                    SELECT 1
                    FROM INFORMATION_SCHEMA.COLUMNS
                    WHERE TABLE_NAME = 'table_Emplyee'
                      AND COLUMN_NAME = 'Column_EmployeeName'
                   )
        BEGIN
        ----- ADD Column & Contraint
            ALTER TABLE dbo.table_Emplyee
                ADD Column_EmployeeName BIT   NOT NULL
                CONSTRAINT [DF_table_Emplyee_Column_EmployeeName]  DEFAULT (0)
            PRINT 'Column [DF_table_Emplyee_Column_EmployeeName] in table_Emplyee table was Added'
            PRINT 'Contraint [DF_table_Emplyee_Column_EmployeeName] was Added'
         END
    
    GO
    

    다음은 기본 값으로 기존 데이터베이스 테이블에 열을 추가하는 방법은 두 가지입니다.

  13. ==============================

    13.테스트 데이터베이스에 - - SQL 서버 2008 R2, 나는 디자인 모드로 이동하여 디자이너를 사용하여 내 두 개의 열을 추가하고 GUI로 설정을 만든 다음 악명 높은 마우스 오른쪽 버튼으로 클릭하여 옵션 "변경 스크립트를 생성"을 제공합니다 !

    테스트 데이터베이스에 - - SQL 서버 2008 R2, 나는 디자인 모드로 이동하여 디자이너를 사용하여 내 두 개의 열을 추가하고 GUI로 설정을 만든 다음 악명 높은 마우스 오른쪽 버튼으로 클릭하여 옵션 "변경 스크립트를 생성"을 제공합니다 !

    빅뱅 최대, 당신이 그것을 짐작 형식을 바르게 보장 - 투 - 작업 변경 스크립트를 조금 창이 나타납니다. 쉬운 버튼을 누르십시오.

  14. ==============================

    14.양자 택일로, 당신은 명시 적으로 제약 조건의 이름을 할 필요없이 기본을 추가 할 수 있습니다 :

    양자 택일로, 당신은 명시 적으로 제약 조건의 이름을 할 필요없이 기본을 추가 할 수 있습니다 :

    ALTER TABLE [schema].[tablename] ADD  DEFAULT ((0)) FOR [columnname]
    

    당신은 기존의 기본 제약에 문제가있는 경우이 제약은 그 후에는 제거 할 수 있습니다 만들 때 :

    alter table [schema].[tablename] drop constraint [constraintname]
    
  15. ==============================

    15.이것은뿐만 아니라 SSMS GUI에서 수행 할 수 있습니다. 나는 기본 아래 날짜하지만 기본값이 무엇이든, 물론이 될 수를 보여줍니다.

    이것은뿐만 아니라 SSMS GUI에서 수행 할 수 있습니다. 나는 기본 아래 날짜하지만 기본값이 무엇이든, 물론이 될 수를 보여줍니다.

  16. ==============================

    16.

    ALTER TABLE ADD ColumnName {Column_Type} Constraint
    

    MSDN 문서 ALTER TABLE (거래-SQL)는 테이블 변경 구문을 모두 가지고있다.

  17. ==============================

    17.예:

    예:

    ALTER TABLE [Employees] ADD Seniority int not null default 0 GO
    
  18. ==============================

    18.예:

    예:

    ALTER TABLE tes 
    ADD ssd  NUMBER   DEFAULT '0';
    
  19. ==============================

    19.성 학생이있는 테이블을 만들 :

    성 학생이있는 테이블을 만들 :

    CREATE TABLE STUDENT (STUDENT_ID INT NOT NULL)
    

    그것은 하나의 열을 추가합니다 :

    ALTER TABLE STUDENT 
    ADD STUDENT_NAME INT NOT NULL DEFAULT(0)
    
    SELECT * 
    FROM STUDENT
    

    테이블이 작성되고, 열은 기본값으로 기존의 테이블에 추가된다.

  20. ==============================

    20.이 시도

    이 시도

    ALTER TABLE Product
    ADD ProductID INT NOT NULL DEFAULT(1)
    GO
    
  21. ==============================

    21.SQL 서버 + 테이블 변경 + 추가를 열 + 기본 값 고유 식별자

    SQL 서버 + 테이블 변경 + 추가를 열 + 기본 값 고유 식별자

    ALTER TABLE Product 
    ADD ReferenceID uniqueidentifier not null 
    default (cast(cast(0 as binary) as uniqueidentifier))
    
  22. ==============================

    22.

    IF NOT EXISTS (
        SELECT * FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_NAME ='TABLENAME' AND COLUMN_NAME = 'COLUMNNAME'
    )
    BEGIN
        ALTER TABLE TABLENAME ADD COLUMNNAME Nvarchar(MAX) Not Null default
    END
    
  23. ==============================

    23.이 답변을 많이 가지고 있지만, 나는이 확장 방법을 추가 할 필요성을 느낀다. 이것은 훨씬 더 긴 것 같다,하지만 당신은 활성 데이터베이스에 수백만 개의 행이있는 테이블에 NOT NULL 필드를 추가하는 경우는 매우 유용합니다.

    이 답변을 많이 가지고 있지만, 나는이 확장 방법을 추가 할 필요성을 느낀다. 이것은 훨씬 더 긴 것 같다,하지만 당신은 활성 데이터베이스에 수백만 개의 행이있는 테이블에 NOT NULL 필드를 추가하는 경우는 매우 유용합니다.

    ALTER TABLE {schemaName}.{tableName}
        ADD {columnName} {datatype} NULL
        CONSTRAINT {constraintName} DEFAULT {DefaultValue}
    
    UPDATE {schemaName}.{tableName}
        SET {columnName} = {DefaultValue}
        WHERE {columName} IS NULL
    
    ALTER TABLE {schemaName}.{tableName}
        ALTER COLUMN {columnName} {datatype} NOT NULL
    

    이것이 할 것입니다 것은 기본값으로 모든 필드를 업데이트, null 허용 필드로 열을 추가하고 기본 값 (또는 좀 더 의미있는 값을 지정할 수 있습니다), 그리고 마지막으로는 NULL NOT으로 열을 변경합니다.

    당신이 대규모 테이블을 업데이트하고 모든 단일 행에 기록하는 새로운 null이 아닌 필드를 추가하고 열을 추가하고 모든 값을 기록으로 본인이 전체 테이블을 잠글 경우이 그 이유이다.

    빠르게 자체로 많은 동작 널 열을 추가 할이 방법은 다음 NOT NULL 상태를 설정하기 전에 데이터를 채운다.

    나는 하나 개의 문장에서 전체 일을하는 4~8분에 대한 우리의보다 적극적인 테이블 중 하나를 잠글 것을 발견했습니다 꽤 자주 과정을 살해했다. 이 방법은 각 부분은 일반적으로 몇 초 밖에 소요 최소한의 잠금을 발생합니다.

    당신은 행 수십억의 영역에 테이블이있는 경우 또한, 업데이트과 같이 가치가 배치 될 수있다 :

    WHILE 1=1
    BEGIN
        UPDATE TOP (1000000) {schemaName}.{tableName}
            SET {columnName} = {DefaultValue}
            WHERE {columName} IS NULL
    
        IF @@ROWCOUNT < 1000000
            BREAK;
    END
    
  24. ==============================

    24.

    --Adding Value with Default Value
    ALTER TABLE TestTable
    ADD ThirdCol INT NOT NULL DEFAULT(0)
    GO
    
  25. ==============================

    25.테이블에 새 열을 추가합니다 :

    테이블에 새 열을 추가합니다 :

    ALTER TABLE [table]
    ADD Column1 Datatype
    

    예를 들어,

    ALTER TABLE [test]
    ADD ID Int
    

    사용자는 자동으로 다음 증가하고 싶어하는 경우 :

    ALTER TABLE [test]
    ADD ID Int IDENTITY(1,1) NOT NULL
    
  26. ==============================

    26.이것은 SQL 서버를위한 것입니다

    이것은 SQL 서버를위한 것입니다

    ALTER TABLE TableName
    ADD ColumnName (type) -- NULL OR NOT NULL
    DEFAULT (default value)
    WITH VALUES
    

    예:

    ALTER TABLE Activities
    ADD status int NOT NULL DEFAULT (0)
    WITH VALUES
    

    당신이 다음 제약 조건을 추가 할 경우 :

    ALTER TABLE Table_1
    ADD row3 int NOT NULL
    CONSTRAINT CONSTRAINT_NAME DEFAULT (0)
    WITH VALUES
    
  27. ==============================

    27.이것은 아래의 코드에 의해 수행 할 수 있습니다.

    이것은 아래의 코드에 의해 수행 할 수 있습니다.

    CREATE TABLE TestTable
        (FirstCol INT NOT NULL)
        GO
        ------------------------------
        -- Option 1
        ------------------------------
        -- Adding New Column
        ALTER TABLE TestTable
        ADD SecondCol INT
        GO
        -- Updating it with Default
        UPDATE TestTable
        SET SecondCol = 0
        GO
        -- Alter
        ALTER TABLE TestTable
        ALTER COLUMN SecondCol INT NOT NULL
        GO
    
  28. ==============================

    28.쿼리 아래에보십시오 :

    쿼리 아래에보십시오 :

    ALTER TABLE MyTable
    ADD MyNewColumn DataType DEFAULT DefaultValue
    

    이 테이블에 새 열을 추가합니다.

  29. ==============================

    29.

    ALTER TABLE tbl_table ADD int_column int NOT NULL DEFAULT(0)
    

    이 쿼리에서 당신은 기본값 0 데이터 타입 정수의 열을 추가 할 수 있습니다.

  30. ==============================

    30.글쎄, 난 지금 내 이전의 대답에 약간의 수정을해야합니다. 나는 NOT이있는 경우 답변 하나도 언급되지 나타났습니다. 나는 그것의 새로운 솔루션을 제공하기 위하여려고하고 그래서 나는 테이블을 변경하는 몇 가지 문제를 직면하고있다.

    글쎄, 난 지금 내 이전의 대답에 약간의 수정을해야합니다. 나는 NOT이있는 경우 답변 하나도 언급되지 나타났습니다. 나는 그것의 새로운 솔루션을 제공하기 위하여려고하고 그래서 나는 테이블을 변경하는 몇 가지 문제를 직면하고있다.

    IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.columns WHERE table_name = 'TaskSheet' AND column_name = 'IsBilledToClient')
    BEGIN
    ALTER TABLE dbo.TaskSheet ADD
     IsBilledToClient bit NOT NULL DEFAULT ((1))
    END
    GO
    

    여기 TaskSheet는 특정 테이블의 이름이고 IsBilledToClient는 기본 값을 삽입하고 1하고자하는 새로운 열입니다. 기존의 행의 값이 될 것이다 어떤 새로운 열의 수단 그러므로 하나가 자동으로 설정 될 것이다. 내가 사용 BIT를 가지고있는 것처럼 당신이 열 유형의와 관련하여 원하는대로 내가 디폴트 값 1에 넣어 수 있도록하지만, 변경할 수 있습니다.

    내가 문제를 직면 때문에, 위의 시스템을 제안한다. 그래서 문제는 무엇인가? 당신은 SQL 서버 쿼리 빌더에서 오류가 발생합니다 당신이 아래의 코드 부분 만 실행하면 다음 테이블 테이블에 존재하는 IsBilledToClient 열 않을 경우 문제이다. 그것은 처음으로 다음 존재하지 않는 경우 실행할 때 오류가 없을 것입니다.

    ALTER TABLE {TABLENAME}
    ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
    CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
    [WITH VALUES]
    
  31. from https://stackoverflow.com/questions/92082/add-a-column-with-a-default-value-to-an-existing-table-in-sql-server by cc-by-sa and MIT license