DDL (Data Definition Language)
한번 선언하면 끝, 트랜잭션 대상x 롤백이 안된다.
-테이블 생성
CREATE TABLE [테이블 이름] (
컬럼명1 데이터형,
컬럼명2 데이터형,
컬럼명3 데이터형
}
데이터형(자료형)
-문자형 : CHAR(size) , VARCHAR2(size)
=>CHAR 형은 고정형, VARCHAR2 형은 가변형
-숫자형 : NUMBER, NUMBER(w), NUMBER(w, d)
-날짜형 : DATE, TIMESTAMP
=> 디테일은 TIMESTAMP
-대용량 : (이미지, 파일) : LOB, BLOB
테이블 복사
CREATE TABLE emp01
AS SELECT * FROM employees; (기존 데이터 내용 포함)
테이블 구조 복사
CREATE TABLE emp02
AS SELECT * FROM employees where 1=0;
테이블 구조 수정
-컬럼추가
-> ALTER TABLE emp02
ADD(job VARCHAR2(50));
*컬럼 수정
-> ALTER TABLE emp02
MODIFY(job VARCHAR2(100));
*컬럼 삭제
-ALTER TABLE emp02
DROP COLUMN job;
*테이블 삭제
-> DROP TABLE emp02 PURGE;
*테이블 데이터 삭제
-> TRUNCATE TABLE emp01; => DDL(트랜잭션 적용 불가능)
-> DELETE FROM emp01; => DML(트랜잭션 적용 가능)
*테이블 이름 변경
-> RENAME emp01 TO emp00;
DML (Data Manipulation Language)
데이터 조작어, INSERT, UPDATE, DELETE, SELECT
INSERT
->INSERT INTO dept01 VALUES(300, 'Developer', 100, 10);
->INSERT INTO dept01(department_id, department_name) VALUES(600, 'Developer2');
UPDATE
->UPDATE 테이블명 SET 컬럼명 = 수정값, 컬럼명2= 수정값..
WHERE 수정대상 ( WHERE로 수정대상을 지정안하면 모든값이 바뀐다..)
->UPDATE dept01 SET department_name = 'IT Service'
WHERE department_id = 300;
emp01 테이블에서 salary 3000 이상 대상자에게 salary에 10% 임금인상
-> UPDATE emp01 SET SALARY = SALARY*1.1 WHERE SALARY >= 3000;
DELETE
-> DELETE FROM 테이블명 WHERE 삭제대상 (WHERE로 삭제대상 반드시 지정)
dept01 테이블에서 부서이름 'IT Service' 값을 가진 로우 삭제
->DELETE FROM dept01 WHERE DEPARTMENT_NAME = 'IT Service';
'Database' 카테고리의 다른 글
[Oracle] DB JOIN (0) | 2020.08.15 |
---|---|
[Oracle] 오라클 DB 제약조건 설정 (0) | 2020.08.14 |
[Oracle] DB 문자함수, 숫자함수, 날짜함수, 변환함수 (0) | 2020.08.12 |
[Oracle] GROUP BY절, HAVING절 (0) | 2020.08.11 |
[Oracle] 집합 UNION, MINUS, INTERSECT (0) | 2020.08.10 |