Search

이 내용은 2011년 6월 현재 SQL2011(코드명 Denali) Beta를 기준으로 작성 되었으며 SQL2011(코드명 Denali) 공식버전(RTM) 발표까지 꾸준히 업데이트 예정입니다.
아울러, 현재 Beta버전이지만 강좌를 따라해 보시는데 아무 문제 없으실거에요. 도움 되시길 바랍니다.
==================================================================================================

안녕하세요. 이스트럭(강동운) 입니다.


이번 강좌에서는 저번 강좌에서 추가한 Member 테이블을 가지고 컬럼을 추가, 삭제, 컬럼명을 변경하는 법에 대해서 알아보도록 하겠습니다.


물론 추가로 테이블명도 변경을 해보도록 하겠습니다.



전에 말씀드렸다 싶이.. 데이터베이스 객체를 수정(ALTER) 하거나 삭제(DROP)하는 작업이기 때문에 DDL에 속하게 됩니다.

물론 이름변경(RENAME)도 DDL에 속합니다.




일단 강좌에 들어가기 앞서 NULL에 대해서 잠깐 얘기해볼까 합니다.


테이블의 컬럼에는 NULL 이 가능? 불가능? 할 수 있습니다.


그럼 데이터베이스에서 말하는 이 NULL이라는 값은 뭘까요??


NULL의 정의를 정리해봤습니다.


1. 알 수 없는 값

2. 사용할 수 없는 값

3. 적용할 수 없는 값

4. 0과 공백('') 과는 다른 값

5. 산술식과 비교하거나 연산을 하면 무조건 NULL


그냥 알 수 없는 값으로 아는 것이 좋을 것 같습니다 ^^;

이전 강좌에서의 테이블 생성 시 끝의 컬럼을 기억하십니까??
1.png
바로 이 값이 체크를 하게 되면  NULL 허용, 체크를 하지 않으면 NULL 불가! 가 되는 것이죠


MemberIDX 컬럼을 NULL 불가로 바꾼다면... 체크를 없애고 저장을 하시면 됩니다만..
쿼리를 이용하게 되면 아래 처럼 입력하셔야 합니다.

ALTER TABLE Member
ALTER COLUMN MemberIDX INT NOT NULL
GO

주의:이 작업은 모든 데이터 행을 수정하기 때문에 데이터가 많은 경우 무척 위험한 행동이 될 수 있습니다.
하지만 저희는 테스트로 해보는 것이기 떄문에 이런 문제는 걱정 안하셔도 됩니다 ^^;


이제 컬럼을 한번 추가해볼까요??
최종 수정일이라는 LastUpdateDate 라는 컬럼을.. DATETIME 형으로 추가해보도록 하겠습니다.

ALTER TABLE Member
ADD LastUpdateDate DATETIME
GO
SELECT * FROM Member
GO
2.png

빨간 부분이 추가가 된 것을 확인할 수 있었습니다.


혹시 기본 값을 지정할 순 없을까요?? 바로 디폴트 값을 이용하면 됩니다.
TotalLoginCount 라는 int 타입을 추가하고 기본 값으로 0을 줘봅시다.

ALTER TABLE Member
ADD TotalLoginCount INT  DEFAULT 0 NOT NULL
GO
3.png


TotalLoginCount가 0으로 초기화 되면서 추가된 것을 볼 수 있습니다. ^^


이제 컬럼명을 바꿔 볼까요?? ^^;; TotalLoginCount 컬럼명을.. TotalLoginCnt 로 변경해 봅시다.
sp_rename 'Member.TotalLoginCount','TotalLoginCnt','COLUMN'
--// sp_rename '테이블명.컬럼명','컬럼명','COLUMN'
GO
SELECT * FROM member
4.png


컬럼명이 성공적으로 변경 된 것을 보실 수 있습니다.
sp_rename에 관련해서는.. 아래 링크를 참고해보시기 바랍니다. ^^


이제 컬럼명을 삭제해보도록 하겠습니다. MemberAge 라는 컬럼을 삭제해보도록 하겠습니다.
ALTER TABLE member
DROP COLUMN MemberAge
GO
SELECT * FROM member
5.png

이렇게 컬럼이 삭제된 것을 볼 수 있습니다.


이제 TotalLoginCnt 라는 컬럼을 삭제해보도록 하겠습니다.
일단 에러 내용을 한국어로 보기 위해서..
(SET LANGUAGE 관련 글: http://www.sqler.com/371714)
SET language 한국어
GO
ALTER TABLE Member
DROP COLUMN TotalLoginCnt
GO
6.png

개체 'DF__Member__TotalLog__108B795B'은(는) 열 'TotalLoginCnt'에 종속되어 있습니다.
라는 에러와 함께 삭제가 되지 않습니다. 이 녀석은 뭘까요??

아까 컬럼을 추가했을 당시.. DEFAULT 값을 주었습니다. 이 녀석이 default 제약 조건에 포함이 되어있기 때문에
먼저 삭제를 해야 삭제가 가능합니다.

물론 DEFAULT 제약조건도 자식이기 때문에.. 부모가 없어질려면 자식부터 지워야겠죠~! 고아가 될 순 없으니까요 ^^;;
ALTER TABLE Member
DROP CONSTRAINT DF__Member__TotalLog__108B795B
GO
주의: DF__Member__TotalLog__108B795B 값은 컴퓨터 마다 달라질 수 있습니다.
물론 default 제약조건에 이름을 지정할 수는 있지만.. 우리는 지정하지 않았기 때문에 .. SQL Server 내부적으로 알아서 지정하게 됩니다.


이제 다시 컬럼을 삭제해보면 ..정상적으로 삭제되는 것을 볼 수 있습니다.

7.png


물론 컬럼명 변경하듯이.. 테이블명도 바꿀 수 있겠죠??  제가 알려드린 sp_rename 링크에 소개되어있습니다. 

감사합니다. ^^

작성일: 2011.05.21

[출처] SQLER.COM http://www.sqler.com/382121

SQL2011(코드명 Denali) 시리즈 강좌 리스트
[SQL2011강좌] 1. 코드명 Denali 설치 방법
[SQL2011강좌] 2. SSMS 접속 및 간단한 쿼리 실행
[SQL2011강좌] 3. SQL Server 의 MDF, LDF 그리고 데이터베이스 생성하기
[SQL2011강좌] 4. DDL 1탄: 테이블 생성
[SQL2011강좌] 5. DDL 2탄: 쿼리를 이용한 테이블 컬럼 추가 및 삭제
[SQL2011강좌] 6. Primary key와 Unique 제약조건
[SQL2011강좌] 7. DML 1탄 INSERT
[SQL2011강좌] 8. DML 1탄 INSERT(identity 속성)
[SQL2011강좌] 9. Sequence
[SQL2011강좌] 10. pubs, northwind Database 예제 설치
[SQL2011강좌] 11. SELECT(단일 테이블)
[SQL2011강좌] 12. SELECT(JOIN)
[SQL2011강좌] 13. UPDATE, DELETE 절
[SQL2011강좌] 14. DISTINCT, UNION, UNION ALL 키워드
[SQL2011강좌] 15. ORDER BY, GROUP BY, HAVING
[SQL2011강좌] 16. SubQuery(서브쿼리)
[SQL2011강좌] 17. 뷰에 대한 이해 및 생성, 수정, 삭제
[SQL2011강좌] 18. 저장 프로시저에 대한 이해, 생성, 수정, 삭제
[SQL2011강좌] 19. 인덱스에 대한 이해
[SQL2011강좌] 20. 클러스터드 인덱스와 넌 클러스터드 인덱스
[SQL2011강좌] 21. 트랜잭션에 대한이해
[SQL2011강좌] 22. 트랜잭션의 격리수준 4가지
[SQL2011강좌] 23. 잠금에 대한 이해
[SQL2011강좌] 24. 백업과 복구에 대한 이해(풀백업, 차등백업, 트랜잭션 로그 백업)
[SQL2011강좌] 25. 백업과 복구 전략
[SQL2011강좌] 26. 커서란?



SQL2011(코드명 Denali) 시리즈 동영상 강좌 리스트
[SQL2011 동영상 강좌] 1. 코드명 Denali 설치 방법
[SQL2011 동영상 강좌] 2. SSMS 접속 및 간단한 쿼리 실행
[SQL2011 동영상 강좌] 3. SQL Server 의 MDF, LDF 그리고 데이터베이스 생성하기
[SQL2011 동영상 강좌] 4. DDL 1탄: 테이블 생성
[SQL2011 동영상 강좌] 5. DDL 2탄: 쿼리를 이용한 테이블 컬럼 추가 및 삭제
[SQL2011 동영상 강좌] 6. Primary key와 Unique 제약조건
[SQL2011 동영상 강좌] 7. DML 1탄 INSERT
[SQL2011 동영상 강좌] 8. DML 1탄 INSERT(identity 속성)
[SQL2011 동영상 강좌] 9. Sequence
[SQL2011 동영상 강좌] 10. pubs, northwind Database 예제 설치
[SQL2011 동영상 강좌] 11. SELECT(단일 테이블)
[SQL2011 동영상 강좌] 12. SELECT(JOIN)
[SQL2011 동영상 강좌] 13. UPDATE, DELETE 절
[SQL2011 동영상 강좌] 14. DISTINCT, UNION, UNION ALL 키워드
[SQL2011 동영상 강좌] 15. ORDER BY, GROUP BY, HAVING
[SQL2011 동영상 강좌] 16. SubQuery(서브쿼리)
[SQL2011 동영상 강좌] 17. 뷰에 대한 이해 및 생성, 수정, 삭제
[SQL2011 동영상 강좌] 18. 저장 프로시저에 대한 이해, 생성, 수정, 삭제
[SQL2011 동영상 강좌] 19. 인덱스에 대한 이해
[SQL2011 동영상 강좌] 20. 클러스터드 인덱스와 넌 클러스터드 인덱스
[SQL2011 동영상 강좌] 21. 트랜잭션에 대한이해
[SQL2011 동영상 강좌] 22. 트랜잭션의 격리수준 4가지
[SQL2011 동영상 강좌] 23. 잠금에 대한 이해
[SQL2011 동영상 강좌] 24. 백업과 복구에 대한 이해(풀백업, 차등백업, 트랜잭션 로그 백업)
[SQL2011 동영상 강좌] 25. 백업과 복구 전략
[SQL2011 동영상 강좌] 26. 커서란?