본 강의를 수강 후 정리한 글입니다 .
https://www.youtube.com/playlist?list=PLlCujDgOz8x6nDWtRr5AlHWB9Xp-Lxf-z
Object의 종류
실제로는 종류가 훨씬 많지만 짧게만 정리
- Table : Data를 저장
- Index : 테이블의 data에 대한 빠른 검색을 위한 수단
- View : 테이블의 data에접근하기 위한 SELECT문을 저장
- Synonym : Object에 대해 다른 이름을 제공
- Sequence : Key 값을 생성하기 위한 용도
Data Types
- 문자
- CHAR[(n)] : 고정 길이 / 최대 2000 바이트 / 길이 지정 생략 시 1바이트만 저장
- VARCHAR(n) : 가변 길이 / 최대 4000 바이트 / 길이 지정 생략 불가능
- NCHAR[(n)] : 고정 길이의 유니코드 / 최대 2000 바이트 / 길이 지정 생략 시 1바이트만 저장
- NVARCHAR(n) : 가변 길이의 유니코드 / 최대 4000 바이트 / 길이 지정 생략 불가능
- LONG : 가변 길이 / 최대 2 GB
- 숫자
- NUMBER[(p,s)] : 가변 길이 (p = 전체 자릿수, s = 소수점 이하 자릿수 / 생략가능) / 최대 21바이트
- BINARY_FLOAT : 32 bit 부동 소수점 수 / 4 바이트
- BINARY_DOUBLE : 64 bit 부동 소수점 수 / 8 바이트
- 날짜 및 시간
- DATE : 고정길이 날짜 및 시간 / 7바이트, NLS_DATE_FORMAT
- TIMESTAMP : Millisecond 까지 표현 / 7~11 바이트, NLS_TIMESTAMP_FORMAT
- TIMESTAMP WITH TIMEZONE
- TIMESTAMP WITH LOCAL TIMEZONE
- INTERVAL YEAR TO MONTH
- INTERVAL DAY TO SECOND ..등등이 있음
- LOB (Large Object Type)
- CLOB : 큰 문자 데이터 저장, LONG의 확장 / 최대 4GB
- NCLOB : NATIONAL CHARACTER SET / 최대 4GB
- BLOB : 오디오, 사진, 비디오 Binary 형태로 저장 / 최대 4GB
- BFILE : 외부 운영체제 파일 시스템에 저장
SQL의 종류 - DDL
정의
- Data Definition Language : 데이터 정의어 ( CARTD 생각하기! )
- 데이터베이스를 정의하는 언어. 데이터를 생성하거나 수정, 삭제 등 데이터의 전체 골격을 결정하는 역할의 언어
- ROLLBACK 할 수 없음!
1. CREATE
- 데이터베이스, 테이블 등을 생성 / DB에 각종 오브젝트를 생성
CREATE TABLE table_name(
컬럼이름(필) 데이터타입(필) 제약 조건,
col_2 datatype [NULL | NOTNULL],
...
col_n datatype [NULL | NOTNULL]);
- CTAS
CREATE TABLE my_table
AS (SELECT * FROM base_table );
👉 my_table과 base_table은 구조가 서로 같다
CREATE TABLE empSALES
AS ( SELECT * FROM emp
WHERE job = 'SALESMAN');
👉empSALES 는 emp 테이블과 구조가 같고, job = SALESMAN 인 데이터가 입력됨.
👉테이블을 먼저 만든 후 데이터를 입력하는 것보다 훨씬 빠르다 (INSERT보다 빠름)/ROLLBACK은 되지 않는다.
CREATE TABLE emp2
AS ( SELECT * FROM emp
WHERE 1 = 2);
👉테이블은 만들되, 데이터는 입력 안함. 같은 구조를 갖는 테이블만 생성됨
ALTER
- 테이블의 구조를 수정 / 오브젝트를 변경
- 칼럼 추가
ALTER TABLE 테이블명
ADD ( 컬럼이름(필) 데이터타입(필) 기본값/NULL여부,
col_2 column-definition,
...
col_3 column-definition);
👉테이블에 데이터가 많이 있는 경우에도 칼럼을 추가하는 것은 시간이 걸리지 않는다.
- 칼럼 Data Type 변경
ALTER TABLE 테이블명
MODIFY ( 컬럼이름(필) 데이터타입(필) 기본값/NULL여부,
col_2 column-definition,
...
col_3 column-definition);
- 칼럼 제거
ALTER TABLE 테이블명
DROP (col_1, col_2, ...);
Or
ALTER TABLE 테이블명
DROP COLUMN col_1, col_2, ...;
👉구문 상 약간의 차이가 있음.
👉테이블에 데이터가 많을 수록 시간이 많이 소요된다.
RENAME
- 오브젝트의 이름을 바꿈
TRUNCATE
- 테이블을 초기화 / 테이블 내의 모든 행 (row)을 없앰
TRUNCATE TABLE
[schema_name].테이블명
[ PRESERVE MATERIALIZED VIEW LOG
| PURGE MATERIALIZED VIEW LOG ]
[ DROP STORAGE | REUSE STORAGE ] ;
👉테이블이 가진 데이터의 양과 상관없이 통째로 없애는 선에서 자주 사용됨
HWM를 reset하는 것으로 시간이 걸리지 않는다. (그냥 바로 없앰)
DROP
- 데이터베이스, 테이블을 삭제 / 오브젝트를 제거
DROP TABLE [schema_name].테이블명
[ CASCADE CONSTRAINTS ] - 옵션 : 제약 관계에 상관없이 DROP 하는 것
[ PURGE ]; - 옵션
'😺Data Base > 😻 SQLD' 카테고리의 다른 글
[SQL] SQL 종류 - DML / TCL / DCL / TRANSACTION (0) | 2022.11.02 |
---|---|
[SQL] 제약조건 / VIEW / SEQUENCE / SYNONYM / INDEX (0) | 2022.11.01 |
[SQL] JOIN (0) | 2022.09.20 |
[DB] Transaction - 동시성 문제 (0) | 2022.09.20 |
[DB] Transaction - Atomicity 원자성 이해하기 (0) | 2022.09.19 |