##본 포스팅은 "SQL 첫걸음 - 아사이 아츠시" 책을 보고 요약한 것입니다.
데이터베이스 캑체
데이터베이스 객체란 테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것을 일컫는 말이다.
여기서 말하는 '객체'라는 용어는 데이터베이스 객체를 의미한다.
객체는 데이터베이스 내에 실체를 가지는 어떤 것을 말한다.
객체는 이름을 가지며, 데이터베이스 내에서 객체를 작성할 때는 이름이 겹치지않도록 한다.
[객체 명명 규칙]
- 기존 이름이나 예약어와 중복하지 않는다
- 숫자로 시작할 수 없다
- _이외의 기호는 사용할 수 없다
- 한글을 사용할 때는 더블쿼트로 둘러싼다
- 시스템이 허용하는 길이를 초과하지 않는다
객체의 이름은 '어떤 데이터가 저장되어 있는지 파악하는 기준'이 되는 경우가 많으므로 의미없는 번호 등으로 이름을 붙이지 않도록 한다.
* 이름은 객체의 종류와는 관계없다.
스키마
데이터베이스 객체는 스키마라는 그릇 안에 만들어지며, MySQL에서는 CREATE DATABASE라는 명령어로 작성한다.
테이블과 스키마는 무엇인가를 담는 그릇 역할을 할 수 있다는 점에서 똑같지만,
테이블 안에는 열을 정의할 수 있고 스키마 안에는 테이블을 정의할 수 있다.
각각의 그릇 안에서는 중복하지 않도록 이름을 정하며, 이것을 '네임스페이스'라고 부른다.
테이블 작성/삭제/변경
DDL은 모두 같은 문법을 사용한다.
CREATE로 작성, DROP으로 삭제, ALTER로 변경할 수가 있다.
1. 테이블 작성
CREATE TABLE 테이블명 (
열 정의1,
열 정의2,
...
);
열명은 자료형/기본값/제약 순으로 추가한다.
열명 자료형 [DEFAULT 기본값] [NULL/NOT NULL]
2. 테이블 작성
DROP TABLE 테이블명
- 데이터 행 삭제
테이블 정의는 그대로 둔 채 데이터만 삭제할 때는 DELETE 명령을 사용하지만, DELETE 명령은 행 단위로 여러가지 내부처리가 일어나므로 삭제할 행이 많으면 처리속도가 상당히 늦어진다.
이런 경우에는 아래 명령어를 사용하여 빠른 속도로 모든 행을 삭제한다.
TRUNCATE TABLE 테이블명
3. 테이블 변경
테이블을 작성한 뒤에도 열 구성은 얼마든지 변경할 수 있다.
이 때 테이블 변경은 아래 명령어로 이루어진다.
ALTER TABLE 테이블명 변경명령
[변경명령]에는 아래 명령어들을 사용할 수 있다.
- 열 추가
ADD 열정의
- 열 변경
MODIFY 열 정의
*속성 변경에 따라 데이터 역시 변환되며, 자료형이 변경되면 테이블에 들어간 데이터의 자료형 역시 바뀐다
- 열 이름 변경
CHANGE [기존열이름] [바꿀열 정의]
- 열 삭제
DROP 열명
열 속성의 최대길이를 연장할 수도 있고, 열을 추가할 수도 있다.
제약
1. 테이블 작성시 제약 정의
NOT NULL, UNIQUE와 같은 것들은 열에 대해 정의하는 제약이며, '열 제약'이라고 부른다.
또한 PRIMARY KEY와 같은 한개의 제약으로 복수의 열에 제약을 설명하는 경우를 '테이블 제약'이라고 부른다.
제약에 이름을 붙이면 나중에 관리하기가 쉬우니, 가능한 한 이름을 붙이도록 한다.
제약 이름은 CONSTRAINT 키워드를 사용한다.
> CONSTRAINT pkey_sample PRIMARY KEY (no, sub_no)
제약을 추가하거나 수정할 때, 삭제할 때는
MODIFY, DROP, ADD 등을 사용한다.
*참고로 기본키를 구성하는 열은 복수라도 상관없다.