SQL 문 | 설명 |
---|---|
Create Table | - 새로운 테이블을 생성한다. |
- 테이블을 생성할 때 기본키, 외래키, 제약사항 등을 설정할 수 있다. | |
Alter Table | - 생성된 테이블을 변경한다. |
- 컬럼을 추가하거나 변경, 삭제할 수 있다. | |
- 기본키를 설정하거나, 외래키를 설정할 수 있다. | |
Drop Table | - 해당 테이블을 삭제한다. |
- 테이블의 데이터 구조뿐만 아니라 저장된 데이터도 모두 삭제된다. |
테이블을 생성하는 방법은 여러 가지가 있다.
먼저 아주 간단한 테이블 생성 방법을 확인해보자.
[1] Create Table EMP
(
[2] empno number(10) [4]primary key
[2] ename (3) varchar2(20)
[2] sal number(6)
);
Create Table 문 | 설명 |
---|---|
[1] Create Table | - "Create Table EMP" 는 "EMP" 테이블을 생성하라는 의미이다. |
- "( )" 사이에 컬럼을 쓰고 마지막은 세미콜론으로 끝난다. | |
[2] 컬럼 정보 | - 테이블에 생성되는 컬럼 이름과 데이터 타입을 입력한다. |
- 컬럼 이름은 영문, 한글, 숫자 모두 가능하다. | |
[3] 데이터 타입 | - number 는 컬럼의 데이터 타입을 숫자형 타입으로, varchar2는 가변 길이 문자열로 지정할 때 사용한다. |
- char 는 컬럼의 데이터 타입을 고정된 크기의 문자로 지정할 때, date 는 날짜형 타입으로 지정할 때 사용한다. | |
[4] 기본키 | - 기본키를 지정할 때 컬럼 옆에 primary key 를 입력한다. |
DESC [테이블 명];
Create Table EMP (
empno number(10),
ename varchar2(20),
sal number(10,2) default 0, [-> 기본값을 0으로 지정한다.]
deptno varchar2(4) not null,
createdate date default sysdate, [-> 기본값을 sysdate - 오늘 날짜 시분초 로 지정한다.]
constraint emppk primary key(empno)
);
위 예에서, "constraint"를 사용하여 기본키(empno)와 기본키의 이름(emppk)을 지정할 수 있다.
만약 위의 예에서 두 개의 컬럼으로 기본키를 지정하고자 한다면 "constraint emppk primary key(empno, ename)"으로 지정하면 된다.
sal 컬럼은 number(10,2)로 지정했다.
이것은 소수점 둘째 자리까지 저장하게 된다.
Oracle 데이터베이스에서 "sysdate"는 오늘의 날짜를 조회한다.
이를 default 옵션을 사용해서 오늘 날짜를 기본값으로 지정할 수 있다.
Create Table DEPT(
deptno varchar2(4) primary key,
deptname varchar2(20)
);
Create Table EMP(
empno number(10),
ename varchar2(20),
sal number(10,2) default 0,
deptno varchar2(4) not null,
createdate date default sysdate,
constraint emppk primary key(empno)
cnostraint deptfk foreign key (deptno) references dept (deptno)
);
외래키(foreign key)를 지정하려면, 먼저 마스터 테이블이 생성되어야 한다.
즉, 사원과 부서 테이블에서는 부서가 마스터 테이블이 된다.
즉, 사원 테이블이 부서 테이블의 deptno를 참조해야 하는 것이다.
그리고 EMP 테이블을 생성할 때 constraint 를 사용하여 외래키 이름인 "deptfk" 를 입력 후 외래키를 생성한다.
constraint deptfk foreign key(deptno) references dept(deptno)
ALTER TABLE EMP RENAME TO NEW_EMP;
-> EMP 테이블을 NEW_EMP 테이블로 변경한다.
ALTER TABLE EMP ADD (age number(2) default 1);
-> EMP 테이블에 age 컬럼을 추가한다.
ALTER TABLE EMP MODIFY (ename varchar2(40) not null);
-> EMP 테이블에 ename 컬럼의 길이를 20에서 40으로 변경하고 NOT NULL 조건을 설정했다.
ALTER TABLE EMP DROP COLUMN age;
-> EMP 테이블에 age 컬럼을 삭제한다.
ALTER TABLE EMP RENAME COLUMN ename to new_ename;
-> EMP 테이블에 ename 컬럼명을 new_ename으로 변경한다.
DROP TABLE EMP;
-> EMP 테이블의 데이터와 테이블의 구조를 모두 삭제한다.
DROP TABLE EMP CASCADE CONSTRAINT;
-> 참조된 제약사항까지도 모두 삭제한다.
특징 |
---|
참조한 테이블이 변경되면 뷰도 변경된다. |
뷰의 검색은 참조한 테이블과 동일하게 할 수 있지만, 뷰에 대한 입력, 수정, 삭제에는 제약이 있다. |
특정 컬럼만 조회시켜서 보안성을 향상시킨다. |
한번 생성된 뷰는 변경할 수 없고 변경을 원하면 삭제 후 재생성해야 한다. |
ALTER 문을 사용해서 뷰를 변경할 수 없다. |
CREATE VIEW T_EMP AS SELECT * FROM EMP;
-> EMP 테이블을 조회해서 그 결과로 T_EMP 라는 뷰(View)를 생성한다.
SELECT * FROM T_EMP;
-> 뷰를 조회한다.
DROP VIEW T_EMP;
-> 뷰를 삭제한다.
장점 | 단점 |
---|---|
특정 컬럼만 조회할 수 있기 때문에 보안 기능이 있다. | 뷰는 독자적인 인덱스를 만들 수 없다. |
데이터 관리가 간단하다. | 삽입, 수정, 삭제 연산이 제약된다. |
SELECT 문이 간단해진다. | 데이터 구조를 변경할 수는 없다. |
하나의 테이블에 여러 개의 뷰를 생성할 수 있다. |