* DDL (Data Definetion Language)
-데이터의 논리적 물리적 구조를 정의하는 언어
-DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용
-CREATE (생 성) ALTER(수 정) Truncate(잘 라 내 기) Dorp (삭 제)
* 테이블 생성
-데이터 베이스를 사용하기 위해서는 테이블을 먼저 생성해야 한다.
-테이블 생성은 CREATE TABLE 문 사용
-테이블 변경은 ALTER TABLE 문 사용
-생성 된 테이블 삭제할 때는 Drop Table 문을 사용
*CREATE Table
- 새로운 테이블을 생성한다.
- 테이블을 생성할 때 기본키, 외래 키, 제약사항 등을 설정할 수 있다.
CREATE TABLE EMP( --생성되는 테이블명
EMPNO NUMBER PRIMARY KEY, --EMPNO 칼럼을 기본키로 지정한다.
ENAME VARCHAR2(20), -- 컬럼명들 ENAME EMPNO SAL
SAL NUMBER(6) -- 데이터 타입 지정, NUMBER는 숫자 VARCHAR2는가변길이문자를의미
)
CREATE TABLE 테이블명 (
(속성명 데이터_타입 [DEFAULT 기본값][NOT NULL],
[,PRIMARY KEY(기본키_속성명)]
[,UNIQUE(대체키_속성명)]
[,FOREIGN KEY(외래키_속성명)]
REFERENCES 참조테이블(기본키_속성명)]
[,CONSTRAINT 제약조건명][CHECK (조건식)]
);
-- 대괄호로 묶은 명령어는 생략이 가능하다는 의미
테이블을 생성해봅시다.
CREATE TABLE DEPT(
DEPTNO NUMBER PRIMARY KEY,
DEPT VARCHAR2(10)
);
--DEPT 테이블 생성
INSERT INTO DEPT values(1000,'영업');
INSERT INTO DEPT values(2000,'생산');
INSERT INTO DEPT values(3000,'개발');
--DEPT 임시로 값을 넣어준다.
1 행 이(가) 삽입되었습니다.
1 행 이(가) 삽입되었습니다.
1 행 이(가) 삽입되었습니다.
*조건을 주자! 조건은?
-EMPNO를 PRIMARY KEY 로 설정
-NAME은 NULL값이 오지 못하게 설정
-DEPTNO는 외래키로 DEPT 테이블의 DEPTNO를 참조
CREATE TABLE emp (
empno NUMBER,
NAME VARCHAR2(10) not null,
dept VARCHAR2(10),
deptno NUMBER,
primary key(empno),
foreign key(deptno) references dept(deptno)
);
*다른 테이블을 이용한 테이블 정의
- 기존 테이블의 정보를 이용해 새로운 테이블을 정의할 수 있다.
- 기존 테이블에서 추출되는 속성의 데이터 타입과 길이는 신규 테이블에 그대로 적용된다.
- 기존 테이블의 제약 조건은 신규 테이블에 적용되지 않는다.
CREATE TABLE 신규테이블명 AS SELECT 속성명[,속성명] FROM 기존 테이블 명;
*테이블을 만들어보자!!
CREATE TABLE NAME AS SELECT EMPNO, NAME FROM EMP;
* ALTER 명령
-테이블에 대한 정의를 변경하는 명령문
-칼럼을 추가하거나 삭제, 칼럼 이름이나 테이블 이름을 바꿀 수 있다.
ALTER TABLE 테이블명 ADD 속성명 데이터타입
ALTER TABLE 테이블명 MODIFY 속성명 데이터타입
ALTER TABLE 테이블명 DROP COLUMN 속성명
ALTER TABLE 테이블명 RENAME TO 새로운 테이블명
ALTER TABLE 테이블명 RENAME COLUMN 기존 컬럼명 TO 새로운 컬럼명
예제를 순서대로 진행해보세요!
ALTER TABLE emp RENAME TO emp2;
--emp테이블의 이름을 emp2로 변경
ALTER TABLE emp2 ADD birthday DATE DEFAULT sysdate
--emp테이블에 DATE 타입의 컬럼 birthday를 생성해보자 기본값은 오늘날짜
ALTER TABLE emp2 RENAME COLUMN birthday TO birth;
--birthday컬럼의 이름을 birth로 변경해보자
ALTER TABLE emp2 MODIFY NAME VARCHAR(20);
-- name컬럼의 데이터타입을 varchar(20)으로 변경
ALTER TABLE emp2 DROP COLUMN birth;
--birth컬럼을 삭제
*DROP 명령
-테이블 자체를 삭제하는 명령어
-테이블 자체가 모두 지워지며 해당 테이블에 생성되어 있는 인덱스도 함께 삭제
DROP TABLE 테이블명 [CASCADE | RESTRICTED]
CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거한다.
RESTRICTED : 다른 개체가 제거할 요소를 참조 중일 때는 제거를 취소한다.
DROP TABLE EMP2;
--emp2테이블을 drop 삭제
Truncate table EMP2;
Truncate - 테이블의 모든 로우를 제거하는
*Global Temporary Table(임시 테이블) 생성
-데이터 베이스에 저장할 목적이 아닌 임시 작업용 데이터를 저장하기 위해 사용
-데이터는 영구적이지 않고 임시로 사용됨
-트랜잭션이 끝나거나 세션이 끝나는 시점에 사라진다.
-저장 목적이 아닌 테스트가 목적인 작업에 사용
CREATE GLOBAL TEMPORARY TABLE 테이블명 (
컬럼명 데이터 타입
)
ON COMMIT [DELETE | PRESERVE] ROWS;
COMMIT 한 후에
다시 조회 시 아무 행도 출력 안됨!!.
*가상 칼럼
- 11g부터 추가된 기능
- 데이터 베이스에 저장되지 않는다. -> 실행 중에 계산됨
- 가상 칼럼에 update 할 수 없다.
CREATE TABLE 테이블명 (
가상컬럼명 데이터타입 GENERATED ALWAYS AS 표현식
);
'데이터베이스' 카테고리의 다른 글
Oracle - DML 명령어 (0) | 2020.09.14 |
---|---|
Oracle - data Dictionary(데이터 사전) (0) | 2020.09.14 |
Oracle - Database(데이터 베이스) 개념 (0) | 2020.09.14 |
oracle-제약 조건 관리해보자! (0) | 2020.09.04 |
oracle- Constraint(제약 조건) 사용해보자! (0) | 2020.09.04 |