일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 기초
- 명령어
- 핸드폰 번호 가리기
- 연습
- 구조체정의
- 테이블
- 제곱근
- 자바스크립트
- programmers
- 프론트엔드
- 정의어
- 면접질문
- 콜라츠추측
- 콜라츠
- 데이터베이스
- SQRT
- 프로그래머스
- 코딩테스트
- 개발자
- 행렬덧셈
- 취업
- db
- 호이스팅
- isInteger
- 추가
- javascript
- git충돌
- 구조체사용
- js
- 취준
- Today
- Total
흥미진진한 개발
[SQL] 데이터베이스 CREATE문 / 테이블 정의, 스키마 정의, 도메인 정의, 인덱스 정의, 뷰 정의 본문
안녕하세요 흥미진진입니다~
오늘은 SQL 정의어(DDL) 중에서 CREATE문을 알아보는 시간을 가져보려고 합니다!
CREATE 명령어는 테이블, 스키마, 도메인, 인덱스, 뷰 등을 정의하기 위해 사용하는 명령문입니다.
① 테이블 정의
CREATE TABLE 테이블이름
({속성이름 데이터타입 [NOT NULL],}
[PRIMARY KEY(속성이름),]
[UNIQUE(속성이름),]
[FOREIGN KEY(속성이름) REFERENCES 참조테이블(속성이름)]
[ON DELETE CASCADE | SET NULL | SET DEFAULT | NO ACTION]
[ON UPDATE CASCADE | SET NULL | SET DEFAULT | NO ACTION],
[CONSTRAINT 제약조건이름 CHECK(속성이름=범위값)]
);
뭐가 많이 길죠? 하나하나 문장을 분석해보겠습니다.
우선 이 구문에서 표현된 {}는 반복, []는 생략 가능, |는 선택을 의미합니다.
CREATE TABLE 테이블이름
=> '테이블이름' 테이블을 만들겠다는 의미입니다.
{속성이름 데이터타입 [NOT NULL]}
=> 테이블을 구성할 속성을 지정할 때 사용합니다. 이때 {}가 반복의 의미이므로 속성 수만큼 반복합니다.
NOT NULL은 특정 속성값에 NULL이 없도록 지정할 때 사용하고, 생략 가능합니다.
PRIMARY KEY(속성이름)
=> 테이블에서 기본키 속성을 지정할 때 사용합니다.
UNIQUE(속성이름)
=> 특정 속성값에 중복이 없도록 할 때 사용합니다.
FOREIGN KEY(속성이름) REFERENCES 참조테이블(속성이름)
=> 외래키를 지정할 때 사용합니다.
CONSTRAINT 제약조건이름 CHECK(속성이름=범위값)
=> 특정 속성에 대해 속성값의 범위를 지정할 때 사용합니다.
② 스키마 정의
CREATE SCHEMA 스키마이름 AUTHORIZATION 사용자;
테이블 정의 명령어에 비해서 매우 간결하죠?
해석하자면, '사용자'에게 스키마를 정의하고 사용할 수 있도록 '스키마이름' 스키마를 만든 것입니다.
③ 도메인 정의
CREATE DOMAIN 도메인이름 데이터타입
[DEFAULT 기본값]
[CONSTRAINT 제약조건이름 CHECK(VALUE IN(범위값))];
한 속성값의 범위를 지정하기 위한 도메인을 생성하는 구문입니다.
④인덱스 정의
CREATE [UNIQUE] INDEX 인덱스이름
ON 테이블이름(속성이름 [ASC | DESC])
[CLUSTER];
인덱스를 활용하면 데이터베이스 내의 자료를 효율적으로 검색할 수 있습니다.
이 구문도 해석을 해보자면
UNIQUE
=> 인덱스의 중복을 허용하지 않을 때 사용합니다. 생략 시 중복이 허용됩니다.
ON 테이블이름(속성이름 [ASC | DESC])
=> '테이블이름' 테이블의 속성으로 인덱스를 만듭니다.
ASC는 오름차순으로 인덱스로 사용될 속성값을 정렬하고, DESC는 내림차순으로 정렬합니다.
CLUSTER
=> 인접된 튜플들을 물리적인 그룹으로 묶어 저장할 때 사용합니다.
⑤뷰 정의
CREATE VIEW 뷰이름
AS SELECT 필드명
FROM 테이블이름
[WHERE 조건];
'테이블이름' 테이블의 '필드명' 속성들을 '뷰이름' 뷰로 묶어 생성하는 것입니다.
지금까지 여러 CREATE문을 알아봤는데요, 도움이 되셨다면 좋겠습니다!
'Database' 카테고리의 다른 글
[SQL] 데이터베이스 ALTER문 / 테이블 속성 추가, 변경, 삭제 (1) | 2021.07.15 |
---|---|
MySQL WHERE문 (0) | 2021.04.25 |