데이터를 넣고 수정하고 삭제하는, 즉 데이터를 담고 있는 객체가 테이블이다.
테이블은 DBMS상에서 가장 기본적인 객체로 행과 열로 구성된 2차원 형태의 객체로 사용한다. EX) 엑셀 표
테이블은 데이터가 저장되는 가장 기본이되는 단위이다.
1. 테이블 생성
※ [ ]은 생략 부분이므로 써도 되고 안써도 된다. 쓰지 않을 때는 디폴트 값이 적용된다.
※ 아래의 빨간글자를 테이블의 용도에 맞게 임의로 지정해주면 된다.
※ 참고로 실제로 만들 때 [ ]는 쓰지 않는다.
CREATE TABLE [스키마.]테이블명(
컬럼명 데이터타입 [NULL, NOT NULL]
컬럼명 데이터타입 --- ⓐ [NULL, NOT NULL] --- ⓑ
컬럼명 데이터타입 [DEFAULT 값] --- ⓒ
...
)[TABLESPACE 테이블스페이스명];
▼ 테이블을 생성할 때, 데이터 타입과 제약조건을 정의하고 생성하기에 아래와 같은 기능을 파악해보자.
문자 데이터 타입 --- ⓐ
오라클에서 제공하는 문자형은 다음과 같다.
데이터 타입 | 설명 |
CHAR( 크기[ BYTE | CHAR ]) | 고정길이 문자, 최대 2Kbyte, 디폴트 1byte |
VARCHAR2( 크기[ BYTE | CHAR ]) | 가변길이 문자, 최대 4Kbyte, 디폴트 1byte |
NCHAR(크기) | 고정길이 유니코드 문자, 최대 2Kbyte, 디폴트 1byte |
NVARCHAR2(크기) | 가변길이 문자, 최대 4Kbyte, 디폴트 1byte |
LONG | 최대 2GB 크기의 가변길이 문자형 |
- 고정길이 CHAR(5) 선언 후 5개 중 3개의 데이터를 입력한다고 하자 그럼 2개의 빈 공간이 남는다. 빈 공간을 쓰지고 않고 가지고 있어 저장공간의 비효율성을 띈다. 주민등록번호처럼 한국에서 통일된 길이가 아니라면 쓰지 않는 것을 추천한다.
- 반대로 가변길이는 5개 중 3개의 데이터를 써도 남은 2개의 빈 공간은 사라지게 된다. 저장공간 효율성이 올라간다.
- LONG은 너무 크기 때문에 잘 사용되지 않는다.
제약조건 --- ⓑ
오라클에서 제공하는 제약조건은 다음과 같다.
① NOT NULL --- 컬럼을 정의할 때, 반드시 값이 있어야 한다.
컬럼명 데이터타입 NOT NULL
② UNIQUE --- 컬럼에 값이 유일해야 한다. 즉 중복 값을 허용하지 않는다.
컬럼명 데이터타입 UNIQUE
(또는)
CONSTRAINTS 제약조건명 UNIQUE(컬럼명, ...)
③ PRIMARY
컬럼명 데이터타입 PRIMARY KEY제약조건명 UNIQUE(컬럼명, ...)
(또는)
CONSTRAINTS 제약조건명 PRIMARY KEY(컬럼명, ...)
④ FOREIGN --- 반드시 참조 테이블이 먼저 생성 되어야 하며, 참조키가 참조 테이블의 기본키로 만들어야한다.
CONSTRAINTS 외래키명 FOREIGN KEY(컬럼명, ...) REFERENCES 참조 테이블(참조 테이블 컬럼명,...)
⑤ CHECK
CONSTRAINTS 체크명 CHECK(컬럼명 BETWEEN 최소값 AND 최대값) --- 사이값의 조건을 정의 할 수 있다.
CONSTRAINTS 체크명 CHECK(컬럼명 IN( '값1', '값2')) --- 두 값만 정의 할 수 있다.
DEFAULT --- ⓒ
DEFAULT 값은 컬럼을 생성한 다음 값은 넣지 않고 값을 생성하면 DEFAULT의 값이 자동으로 채워진다.
컬럼명 데이터타입 DEFAULT 생성초기값,
2. 테이블 삭제
DROP TABLE [스키마.]테이블명 [CASCADE CONSTRAINTS];
3. 테이블 변경
① 컬럼명 변경:
ALTER TABLE [스키마.]테이블명 RENAME COLUMN 변경전컬럼명 TO 변경후컬럼명;
② 컬럼 타입 변경:
ALTER TABLE [스키마.]테이블명 MODIFY 컬럼명 데이터타입;
③ 컬럼 추가:
ALTER TABLE [스키마.]테이블명 ADD 컬럼명 데이터타입;
④ 컬럼 삭제:
ALTER TABLE [스키마.]테이블명 DROP COLUMN 컬럼명;
⑤ 제약조건 추가:
ALTER TABLE [스키마.]테이블명 ADD CONSTRAINTS 제약조건명 PRIMARY KEY(컬럼명);
⑥ 제약조건 삭제:
ALTER TABLE [스키마.]테이블명 DROP CONSTRAINTS 제약조건명;
4. 테이블 복사
CREATE TABLE [스키마.]테이블명 AS SELECT 컬럼1, 컬럼2, ... FROM 복사할 테이블명;
'프로그래밍 언어 > SQL' 카테고리의 다른 글
2.3 뷰(VIEW) (0) | 2019.09.26 |
---|---|
1. SQL이란? (0) | 2019.09.25 |
2.1 데이터베이스 객체 (0) | 2019.09.25 |