😺Data Base/😻 SQLD

[SQL] SQL 종류 - DDL / Data Type

디카페인라떼 2022. 10. 31. 23:27

본 강의를 수강 후 정리한 글입니다 .

https://www.youtube.com/playlist?list=PLlCujDgOz8x6nDWtRr5AlHWB9Xp-Lxf-z 

 

01. SQL 기본

#SQL기본 #SQLD #SQLP 이론적인 내용이 지루하다고 생각할 수도 있습니다. 하지만 SQL을 현장에서 능숙하게 활용할 수 있기 위해서는 기본적인 지식에 대한 기초를 튼튼하게 다져야 할 필요가 있습니

www.youtube.com


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 ]; - 옵션