1. 데이터베이스 객체
데이터베이스 객체
- 테이블, 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것
- 객체 : 데이터베이스 내에 실체를 가지는 어떤 것
(테이블=객체, SQL명령!=객체)
- 명명규칙
- 기존 이름이나 예약어와 중복하지 않는다
- 숫자로 시작할 수 없다
- 언더스코어(_) 이외의 기호는 사용할 수 없다
- 한글을 사용할 때는 백쿼트로 둘러싼다
스키마
데이터베이스 객체는 스키마라는 그릇 안에 만들어진다.
-> 객체의 이름이 같아도 스키마가 서로 다르면 상관없다.
DDL
- 데이터베이스를 정의하는 명령
- 스키마 내의 객체를 관리할 때 사용
- CREATE + 객체 : 객체 작성
- DROP + 객체 : 객체 삭제
- ALTER + 객체 : 객체 변경
2. TABLE 작성, 삭제, 변경
1) TABLE 생성
CREATE TABLE test (
no INTEGER NOT NULL,
a VARCHAR(30),
b DATE
);
- 열명 : 열에 붙이는 이름
- 자료형 : INTEGER, VARCHAR 등
- 기본값 : DEFAULT (생략 가능)
- NULL 허용여부
- NULL 명시적 지정 or 생략 : NULL 허용
- NOT NULL : NULL 불가
2) TABLE 삭제
DROP TABLE test;
실수로 TABLE을 삭제하지 않도록 DROP TABLE은 신중히!
cf)
DROP TABLE : 테이블 삭제
DELETE : 행 삭제 (WHERE 안 붙이면 모든 행 삭제)
TRUNCATE TABLE : 모든 행 삭제
3) TABLE 변경
열 추가, 삭제, 변경
열 추가
ALTER TABLE test ADD newcol INTEGER DEFAULT 100;
- 기존 데이터행 존재하면 추가한 열의 값이 모두 NULL
- 기본값이 지정되어 있으면 기본값으로 데이터 저장
- NOT NULL 제약을 붙인 열을 추가하고 싶다면 먼저 NOT NULL로 제약을 건 뒤에 NULL 이외의 값으로 기본값 지정
- (주의) 열 추가시 INSERT 명령 사용하는 곳 체크
열 속성 변경
ALTER TABLE test MODIFY newcol VARCHAR(20);
- MODIFY로 열 이름은 변경할 수 없지만, 자료형이나 기본값, NOT NULL 제약 등의 속성은 변경할 수 있다
- 기존 데이터행 존재하면, 열 속성 변경에 따라 데이터도 변환됨
- 처리과정에서 에러 발생하면 ALTER TABLE 명령 실행되지 않음
열 이름 변경
ALTER TABLE test CHANGE newcol c VARCHAR(20);
- CHANGE는 열 이름 뿐 아니라 열 속성도 변경 가능
열 삭제
ALTER TABLE test DROP c;
3. 제약
테이블에 제약을 설정함으로써 저장될 데이터를 제한할 수 있다.
1) 제약이란
제약은 테이블에 설정하는 것이다.
CREATE TABLE로 테이블을 작성할 때 제약을 같이 정의한다.
또한 ALTER TABLE로 제약을 지정하거나 변경할 수 있다.
열 제약
열에 대해 제약
CREATE TABLE test (
a VARCHAR(30),
b INTEGER NOT NULL UNIQUE
);
테이블 제약
한 개의 제약으로 복수의 열에 제약
CREATE TABLE test (
no INTEGER NOT NULL,
sub_no INTEGER NOT NULL,
PRIMARY KEY (no, sub_no)
);
CONSTRAINT : 제약에 이름 붙이기
CREATE TABLE test (
no INTEGER NOT NULL,
sub_no INTEGER NOT NULL,
CONSTRAINT pkey_sample PRIMARY KEY (no, sub_no)
);
2) 제약 추가
기존 테이블에도 나중에 제약을 추가할 수 있다.
열 제약 추가
ALTER TABLE test MODIFY c VARCHAR(20) NOT NULL;
- ALTER TABLE로 열 정의 변경
- 기존 테이블에 제약을 위반하는 데이터가 있는지 검사
- 예시의 경우, 만약 c열에 NULL값이 존재한다면 ALTER TABLE 명령 에러 발생
테이블 제약 추가
ALTER TABLE test ADD CONSTRAINT pkey_sample PRIMARY KEY(a);
- ALTER TABLE의 ADD로 추가
- 기존 테이블에 제약을 위반하는 데이터가 있는지 검사
3) 제약 삭제
테이블 제약은 나중에 삭제할 수도 있다.
열 제약 삭제
ALTER TABLE test MODIFY c VARCHAR(20);
테이블 제약 삭제
ALTER TABLE test DROP CONSTRAINT pkey_sample;
- ALTER TABLE의 DROP으로 삭제
- 삭제시 제약명 지정
- 단, 기본키의 경우 굳이 제약명 지정안해도 삭제 가능
ALTER TABLE test DROP PRIMARY KEY;
4) 기본키
- 검색키 : 검색할 때의 키워드
(대량의 데이터에서 원하는 데이터를 찾아낼 때 키가 되는 요소를 지정해 검색)
- 기본키 : 테이블의 행 한 개를 특정할 수 있는 검색키
- 기본키 제약(=유일성 제약)
- 열을 기본키로 지정해 유일한 값을 가지도록
- 이때 지정된 열은 NOT NULL 제약 필수
- 복수의 열을 기본키로 지정할 수도 있다
참고
인덱스(index)란?