[SQL] SQL Server의 기존 테이블에 기본 값으로 열을 추가
SQLSQL Server의 기존 테이블에 기본 값으로 열을 추가
어떻게 SQL 서버 2000의 기존 테이블에 기본 값을 가진 열 / 2005 SQL 서버를 추가 할 수 있습니까?
해결법
-
==============================
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.
ALTER TABLE Protocols ADD ProtocolTypeID int NOT NULL DEFAULT(1) GO
NOT NULL 제약 조건을 위반되지 않도록 DEFAULT의 포함은 기본 값이 기존 행의 열을 채 웁니다.
-
==============================
3.null 인 열을 추가 할 때, 값이 특정 디폴트 값이 존재하는 행에 적용되도록한다 :
null 인 열을 추가 할 때, 값이 특정 디폴트 값이 존재하는 행에 적용되도록한다 :
ALTER TABLE table ADD column BIT -- Demonstration with NULL-able column added CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES
-
==============================
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.
ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'
-
==============================
6.당신이 추가 컬럼이 NOT NULL 제약 조건이있는 경우 아직 DEFAULT 제약 조건 (값)이없는, 조심하십시오. 테이블이 그 안에 모든 행이있는 경우 ALTER TABLE 문은이 경우에 실패합니다. 이 솔루션은 어느 새 열에서 NOT NULL 제약 조건을 제거하거나 이에 대한 DEFAULT 제약 조건을 제공하는 것입니다.
당신이 추가 컬럼이 NOT NULL 제약 조건이있는 경우 아직 DEFAULT 제약 조건 (값)이없는, 조심하십시오. 테이블이 그 안에 모든 행이있는 경우 ALTER TABLE 문은이 경우에 실패합니다. 이 솔루션은 어느 새 열에서 NOT NULL 제약 조건을 제거하거나 이에 대한 DEFAULT 제약 조건을 제공하는 것입니다.
-
==============================
7.두 줄 만에 가장 기본적인 버전
두 줄 만에 가장 기본적인 버전
ALTER TABLE MyTable ADD MyNewColumn INT NOT NULL DEFAULT 0
-
==============================
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.여러 열을 추가 할 경우에 당신은 그것을 예를 들어,이 방법을 수행 할 수 있습니다 :
여러 열을 추가 할 경우에 당신은 그것을 예를 들어,이 방법을 수행 할 수 있습니다 :
ALTER TABLE YourTable ADD Column1 INT NOT NULL DEFAULT 0, Column2 INT NOT NULL DEFAULT 1, Column3 VARCHAR(50) DEFAULT 'Hello' GO
-
==============================
10.사용하다:
사용하다:
ALTER TABLE {TABLENAME} ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
참조 : ALTER TABLE (Transact-SQL)를 참조하십시오 (MSDN)
-
==============================
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.기본 값으로 기존 데이터베이스 테이블에 열을 추가하려면, 우리는 사용할 수 있습니다 :
기본 값으로 기존 데이터베이스 테이블에 열을 추가하려면, 우리는 사용할 수 있습니다 :
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.테스트 데이터베이스에 - - SQL 서버 2008 R2, 나는 디자인 모드로 이동하여 디자이너를 사용하여 내 두 개의 열을 추가하고 GUI로 설정을 만든 다음 악명 높은 마우스 오른쪽 버튼으로 클릭하여 옵션 "변경 스크립트를 생성"을 제공합니다 !
테스트 데이터베이스에 - - SQL 서버 2008 R2, 나는 디자인 모드로 이동하여 디자이너를 사용하여 내 두 개의 열을 추가하고 GUI로 설정을 만든 다음 악명 높은 마우스 오른쪽 버튼으로 클릭하여 옵션 "변경 스크립트를 생성"을 제공합니다 !
빅뱅 최대, 당신이 그것을 짐작 형식을 바르게 보장 - 투 - 작업 변경 스크립트를 조금 창이 나타납니다. 쉬운 버튼을 누르십시오.
-
==============================
14.양자 택일로, 당신은 명시 적으로 제약 조건의 이름을 할 필요없이 기본을 추가 할 수 있습니다 :
양자 택일로, 당신은 명시 적으로 제약 조건의 이름을 할 필요없이 기본을 추가 할 수 있습니다 :
ALTER TABLE [schema].[tablename] ADD DEFAULT ((0)) FOR [columnname]
당신은 기존의 기본 제약에 문제가있는 경우이 제약은 그 후에는 제거 할 수 있습니다 만들 때 :
alter table [schema].[tablename] drop constraint [constraintname]
-
==============================
15.이것은뿐만 아니라 SSMS GUI에서 수행 할 수 있습니다. 나는 기본 아래 날짜하지만 기본값이 무엇이든, 물론이 될 수를 보여줍니다.
이것은뿐만 아니라 SSMS GUI에서 수행 할 수 있습니다. 나는 기본 아래 날짜하지만 기본값이 무엇이든, 물론이 될 수를 보여줍니다.
-
==============================
16.
ALTER TABLE ADD ColumnName {Column_Type} Constraint
MSDN 문서 ALTER TABLE (거래-SQL)는 테이블 변경 구문을 모두 가지고있다.
-
==============================
17.예:
예:
ALTER TABLE [Employees] ADD Seniority int not null default 0 GO
-
==============================
18.예:
예:
ALTER TABLE tes ADD ssd NUMBER DEFAULT '0';
-
==============================
19.성 학생이있는 테이블을 만들 :
성 학생이있는 테이블을 만들 :
CREATE TABLE STUDENT (STUDENT_ID INT NOT NULL)
그것은 하나의 열을 추가합니다 :
ALTER TABLE STUDENT ADD STUDENT_NAME INT NOT NULL DEFAULT(0) SELECT * FROM STUDENT
테이블이 작성되고, 열은 기본값으로 기존의 테이블에 추가된다.
-
==============================
20.이 시도
이 시도
ALTER TABLE Product ADD ProductID INT NOT NULL DEFAULT(1) GO
-
==============================
21.SQL 서버 + 테이블 변경 + 추가를 열 + 기본 값 고유 식별자
SQL 서버 + 테이블 변경 + 추가를 열 + 기본 값 고유 식별자
ALTER TABLE Product ADD ReferenceID uniqueidentifier not null default (cast(cast(0 as binary) as uniqueidentifier))
-
==============================
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.이 답변을 많이 가지고 있지만, 나는이 확장 방법을 추가 할 필요성을 느낀다. 이것은 훨씬 더 긴 것 같다,하지만 당신은 활성 데이터베이스에 수백만 개의 행이있는 테이블에 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.
--Adding Value with Default Value ALTER TABLE TestTable ADD ThirdCol INT NOT NULL DEFAULT(0) GO
-
==============================
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.이것은 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.이것은 아래의 코드에 의해 수행 할 수 있습니다.
이것은 아래의 코드에 의해 수행 할 수 있습니다.
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.쿼리 아래에보십시오 :
쿼리 아래에보십시오 :
ALTER TABLE MyTable ADD MyNewColumn DataType DEFAULT DefaultValue
이 테이블에 새 열을 추가합니다.
-
==============================
29.
ALTER TABLE tbl_table ADD int_column int NOT NULL DEFAULT(0)
이 쿼리에서 당신은 기본값 0 데이터 타입 정수의 열을 추가 할 수 있습니다.
-
==============================
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]
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
'SQL' 카테고리의 다른 글
[SQL] 은 IN 값 목록 BY ORDER (0) | 2020.03.14 |
---|---|
[SQL] 어떻게 INNER은 SQL Server에 가입하여 삭제하는 방법? (0) | 2020.03.14 |
[SQL] PostgreSQL을의 경우 절에 별칭 컬럼을 사용하여 (0) | 2020.03.14 |
[SQL] 1052 : 필드 목록에서 열 'ID는'모호 (0) | 2020.03.14 |
[SQL] 엔티티 LINQ는 방법 '선택 System.String ToString () 메소드를 인식하지 않고,이 방법은 저장 식으로 변환 될 수 없다 (0) | 2020.03.14 |