1. 테이블
(1) 테이블 생성
① PRIMARY KEY, UNIQUE, CHECK, FOREIGN KEY 선언 위치는 대상 컬럼 선언하는 곳에 같이 추가할 수도 있고, 모든 컬럼 정의 마지막에 따로 추가할 수도 있음
- 대상 컬럼 선언하는 곳에 같이 추가할 경우 제약 조건명을 명시하지 않고 추가했기 때문에 시스템이 제약 조건명을 자동 할당
- 모든 컬럼 정의 마지막에 따로 추가할 경우 제약 조건명을 명시했기 때문에 명시한 해당 제약 조건명으로 설정할 수 있음
- 만약 대상 컬럼이 1개가 아니라, 2개 이상인 경우 모든 컬럼 정의 마지막에 따로 정의해서 추가해야 함
② INDEX(CLUSTERED, NONCLUSTERED)는 모든 컬럼 정의 마지막에 따로 추가해야 함
- 대상 컬럼이 1개인 경우에도 무조건 모든 컬럼 정의 마지막에 따로 추가해야 함
③ 제약 조건명을 명시하지 않고 추가할 경우 시스템이 제약 조건명을 자동 할당하게 되는데, 이 경우보다는 관리에 효율성을 위해 제약 조건명을 명시하는 편이 좋음.
④ 시스템이 제약 조건명을 자동 할당했는지 아니면 생성시 설정한 제약 조건명으로 설정했는지 아래 쿼리로 확인할 수 있음
- is_system_named 컬럼 값이 1이면 시스템 자동 할당, 0이면 설정한 제약 조건명
(2) 테이블 제약 조건
- NOT NULL : 해당 컬럼은 NULL 값을 저장할 수 없게 됩니다.
- UNIQUE : 해당 컬럼은 서로 다른 값을 가져야만 합니다.
- PRIMARY KEY : 해당 컬럼은 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 됩니다.
- FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만듭니다.
- DEFAULT : 해당 컬럼의 기본값을 설정합니다.
- CHECK : 컬럼 또는 컬럼들에 들어갈 수 있는 값을 제한합니다.
자세한 사항은 '[MSSQL] 제약조건 관련 쿼리' 포스트 참조
(3) 테이블 조회
(4) 특정 테이블 컬럼 조회
(5) 테이블명 변경
(6) 테이블 삭제
2. 테이블 컬럼
Info
<컬럼 속성>
- COLLATE, <NULL|NOT NULL>, IDENTITY(시드값, 증분값) 설정이 포함됨
- 만약 컬럼 속성에 포함된 설정 값을 변경할 경우 아래와 같은 순서로 나열해서 변경하면 됨
- 만약 데이터정렬 값이 해당 데이터베이스에 설정된 데이터정렬 값과 동일한 경우 따로 명시하지 않아도 됨
(1) 컬럼 추가
① 새로운 컬럼을 추가하고, 그 컬럼에 identity 추가
- 기존 컬럼을 IDENTITY열로 수정하는 것은 안됨(테이블을 삭제하고, 다시 만들어야 함)
② NULL 허용.비허용
③ DEFAULT 설정
- 신규로 컬럼을 추가할 때 DEFAULT 값을 함께 설정할 수 있지만, 이 방법으로 추가된 DEFAULT 제약조건명은 시스템에서 임의로 생성하므로 관리가 되지 않음.
- 신규 컬럼을 추가한 후에 DEFAULT 제약조건명을 직접 지정하여 추가하는 것이 관리 차원에서 좋음
④ 데이터정렬 설정
(2) 컬럼 변경
① 컬럼명 변경
② 컬럼 데이터타입 변경
③ NOT NULL 설정 또는 제거
④ 컬럼 Collation(데이터정렬) 변경
- Collation을 변경할 컬럼이 인덱스가 설정되어 있으면, 해당 컬럼은 Collation을 변경할 수 없으므로, Collation을 변경하기 위해서는 인덱스 제거 -> Collation을 변경 -> 인덱스 재설정의 순서로 Collation을 변경해야 함
⑤ 컬럼 DEFAULT 값 변경
- 기존 default 값을 변경하고자 한다면, 기존 default 제약 조건을 삭제하고, 새로운 제약 조건을 추가
(3) 컬럼 삭제
3. 인덱스
(1) 추가
① PRIMARY KEY, UNIQUE
② 클러스터 인덱스(중복 허용)
③ 클러스터 인덱스(중복 불가)
④ 넌 클러스터 인덱스(중복 허용)
⑤ 넌 클러스터 인덱스(중복 불가)
(2) 삭제
① PRIMARY KEY, UNIQUE
② 인덱스
(3) 수정
- 기존 인덱스를 변경하고자 한다면, 기존 인덱스를 삭제하고, 새로운 인덱스를 추가
① PRIMARY KEY, UNIQUE
② 인덱스
(4) 확인