반응형

[참고 : http://www.sqler.com/bSQL2011/382121]



*DDL : Data Definition Language

 DML : Data Manipulation Language

 DCL : Data Control Language

 TCL : Transaction COntrol Language




[DDL : Data Definition Language]


데이터 정의어 라고한다.

데이터 구조를 정의하는데 사용되는 명령어들로 구조를 생성,변경,삭제,이름바꾸기 에 사용한다.

CREATE            DB 객체 생성
DROP              DB 객체 삭제
ALTER              기존에 존재하는 DB 객체를 다시 정의
RENAME          DB의 컬럼명을 변경
TRUNCATE        테이블을 최초 생성된 초기화 생태로 변경 (ROLLBACK 불가능)

[DML : Data Manipulation Language]

데이터 조작어라고 한다.

DB 테이블에 있는 데이터를 변형하거나, DB의 데이터를 조회나 검색하는 명령어.

INSERT        DB객체 데이터 입력
DELETE        DB객체 데이터 삭제
UPDATE        DB 객체의 데이터 수정
SELECT        DB객체로부터 데이터 검색


[ DCL : Data Control Language]

데이터 제어어라고 한다.

DB에 접근하고 객체들을 사용하도록 권한을 주며, 회수하는 명령어

GRANT           DB 객체에 권한을 부여
REVOKE          이미 부여된 DB 객체의 권한을 취소

[TCL : Transaction Control Language]

트랜잭션 제어어

논리적 작업 단위를 묶어서 DML에 의해 조작된 결과를 작업단쥐별로 제어하는 명령어

COMMIT         변경사항을 저장
ROLLBACK       변경사항을 취소




지난 번에 테이블을 만들 때, NULL에 체크를 했다.

그렇다면 NULL을 허용하지 않도록 바꿔보자.


ALTER TABLE Member
ALTER COLUMN MemberIDX INT NOT NULL
GO

주의:이 작업은 모든 데이터 행을 수정하기 때문에 데이터가 많은 경우 무척 위험한 행동이 될 수 있습니다.

연습일때는 괜찮지만 왠만하면 사용하지 않는게 좋다.
그럼 이제 NULL로 바뀐것을 볼 수 있을것이다.

그럼이제 TotalLoginCount라는 int 타입을 추가하고 기본값으로 0을 줘보자

ALTER TABLE member
ADD TotalLoginCount INT DEFAULT 0 NOT NULL
GO

라고하면 TotalLoginCount가 0으로 초기화되면서 추가된다.

그럼 이번에는 Column 이름을 바꿔보도록 하자.

sp_rename 

위 주소를 참고하도록 하자.

sp_rename

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'   
    [ , [ @objtype = ] 'object_type' ]

이렇게 되어있다.

sp_rename 'Member.TotalLoginCount','TotalLoginCnt','COLUMN'

와 비교해서 보도록 하면

[바꿀곳의 이름]  [ 바꿀 이름] [그게 뭐냐(COLUMN)]

이라고 할 수 있겠다.



그 다음에 컬럼명을 삭제해 보도록 하자

ALTER TABLE member
DROP COLUMN MemberAge

이라고하면 MemberAge는 삭제된다.

에러내용을 한국어로 보기 / 영어로 보기
SET language KOREAN/    SET lagnuage ENGLISH


이번에는 TotalLoginCnt를 제거해 보도록 하자

ALTER TABLE member
DROP COLUMN TotalLoginCnt

하지만 오류가 발생할 것이다.
개체 'DF__Member__TotalLog__48CFD27E'은(는) 열 'TotalLoginCnt'에 종속되어 있습니다.

저번에 TotalLoginCnt를 생성할 당시에
DEFAULT값을 주었습니다. 이 DEFAULT가 제약조건에 포함되기 때문에 먼저 삭제해야 삭제가 가능합니다.

ALTER TABLE member
DROP CONSTRAINT DF__Member__TotalLog__48CFD27E
GO

라고 하면됩니다. 이때 DF__Member__TotalLog__48CFD27E 는 오류 뜨는걸 참고하셔서 바꾸면됩니다.

즉, 한번에

ALTER TABLE Member
DROP CONSTRAINT DF~~~~~
Go
ALTER TABLE MEMBER
DROP COLUMN TotalLoginCnt
GO
Select* From Member
GO


라고하면 됩니다.





*추가사항

테이블 이름 변경
sp_name '테이블이름', '새테이블 이름'

Column 이름 변경
sp_rename '테이블.column이름', 'new column'

column 타입변경
ALTER TABLE 컬럼이름
ALTER COLUMN 컬럼명 타입

column 추가하기
ALTER TABLE 컬럼
ADD 컬럼이름 컬럼타입 NULL/NOT NULL









반응형

+ Recent posts