이 내용은 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. 커서란?

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



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


저번 강좌에 소개해드렸던 데이터베이스 생성에는 문제가 없으셨나요?? ^^;;


이번 강좌는 바로 DDL 1탄 테이블 생성입니다.


DDL은.. Data Definition Language 의 약자로서.. 

 1. 데이터베이스 객체 생성(CREATE)

 2. 데이터베이스 객체 수정(ALTER)

 3. 데이터베이스 객체 삭제(DROP)

 4. 데이터베이스 이름 변경(RENAME)

 5. 테이블 초기화(TRUNCATE)



이렇게 5가지로 구분이 됩니다.


이 중에서 우리가 이번에 살펴봐야 할 부분은.. 생성 부분중에서 테이블입니다.


SQL Server에서 테이블은 뭘까요?? 쉽게 생각하시면 엑셀로 생각하시면 됩니다.



이번에 새로 출시된 Microsoft Office 2010 입니다. 2007과 거의 흡사하게 디자인이 되었으며.. 많은 기능들이 추가되었습니다 ^^


1.png


열이라는 속성을 가지고 있으며

행이라는 데이터를 가지고 있습니다.


물론 각 시트들은 하나하나의 테이블이 되겠죠!


바로 이런 것이 테이블입니다.


자~! 바로 실전으로 들어갑시다~~!


SSMS 접속 => 데이터베이스 => Table 우클릭 => New Table


2.png



New Table을 클릭하시면 아래와 같은 화면이 나옵니다.


제가 입력한 항목에 맞게 순서대로 입력해봅시다 ^^


3.png

Column Name: 컬럼 명을 기술합니다. 한글도 가능하지만 되도록 영문을 쓰며, 특수문자 사용을 하지 않는 것이 좋습니다.

Data Type: 데이터 타입은 정말 여러가지가 있습니다. 일단 저희가 이번에 다루는 데이터 타입은

int, varchar, datetime 이 3가지 입니다.


int: 약 -21억 ~ 21억 까지의 숫자를 저장할 수 있는 4바이트 정수입니다.

    (추가로 알아두면 좋은 데이터 타입: smallint: 약 -3만2천 ~ 3만2천, tinyint: 0~255)


varchar: 가변 길이의 문자열을 저장 괄호안의 숫자로 넣을 수 있는 숫자를 조절할 수 있습니다. 

            숫자는 바이트이지만.. 한글은 2바이트이기 때문에.. varchar(10)으로 지정하게 되면, 영문/숫자 10자 또는

            한글은 최대 5자가 들어갈 수 있습니다.

    (추가로 알아두면 좋은 데이터 타입: nvarchar: 가변 길이 유니코드형 데이터 저장, char: 고정 길이 문자열 저장, nchar: 고정 길이 유니코드형 데이터 저장)


datetime: 2011-05-11 05:11:11.997 처럼... 밀리세컨드까지 저장할 수 있는 데이터 타입입니다.



데이터 형식에 대해서 자세한 내용은 아래 링크 참고하시기 바랍니다.

데이터 형식(Transact-SQL)

http://msdn.microsoft.com/ko-kr/library/ms187752.aspx



자! 입력이 다 끝나셨으면.. 오른쪽 상단에 있는 저장 또는 (Ctrl+S)를 클릭해서 테이블명 Member라고 입력하고 확인을 누릅시다.

4.png



아직 INSERT 를 배우진 않았지만.. 쿼리를 이용해서 데이터를 입력하고.. 내용을 확인해보도록 하겠습니다.



좌측 상단의 New Query 를 클릭하고! 아래의 쿼리를 입력해봅시다~!


use TEST

go


insert into Member values(1,'hong', '홍길동', 30, '2011-05-01')

insert into Member values(2, 'lee', '이순신', 29 , '2011-05-02')

insert into Member values(3, 'shin', '신사임당', 21, '2011-05-03')

insert into Member values(4, 'lim', '임꺽정', 39, '2011-05-04')

go


select * from Member

go


아래 처럼 원하는 결과가 잘 나오시나요?? ^^;;

5.png



아까 엑셀에서 봤던 모습과 흡사합니다.


이렇게 테이블을 생성하고 테스트 데이터를 넣어보고, 조회를 해봤습니다. ^^



테이블 생성은 Query 로 안될까요?? 물론 됩니다~~!!


아주 간단하게 아래 처럼 작성할 수 있습니다.


CREATE TABLE MemberQuery

(

MemberIDX INT

, MemberID VARCHAR(10)

, MemberName VARCHAR(20)

, MemberAge INT

, CreateDate DATETIME

)


사실 테이블 생성 쿼리는 훨~~~~~씬 더욱 복잡합니다.

하지만 여러분의 레벨에 맞게 아주 기본 적인 내용만 담아서 생성한 것입니다. ^^


이번 강좌는 여기서 마치도록 하겠습니다. ^^


감사합니다.


작성일: 2011-05-21


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

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. 커서란?