TIL(2020.11.18)

Awesome·2020년 11월 18일
0

TIL

목록 보기
41/46

데이터베이스 기초 강의

한국산업기술대학교 데이터베이스 강의 내용 정리

현랑님 노션 : 11장 백업 및 복구
환일님 블로그 : 12장 이중화, 사용자 관리 및 보안

10장. 집계함수, 프로시저, 트리거

1. 집계 및 내장함수

max, min은 메모리에 모든 데이터를 올려놓고 구해야 하므로 비용이 크다. 꼭 필요한 경우에만 사용하는 것이 퍼포먼스 측면에서 좋다.

Mysql 시스템 기준 현재 날짜와 시간

TIP.

  • WITH ROLLUP (AFTER GROUP BY) : 부분합을 보여줌
  • GROUPING (AFTER SELECT) : 부분합으로 인한 NULL 인지 원래 데이터가 NULL 이었는지 구분해줌(0 : 원래 NULL, 1 : WITH ROLLUP 의 NULL)
  • join 할 때, 키의 이름이 서로 같은 경우에는 using 을 쓸 수 있다.
SELECT	a.*, b.col
FROM	table1 as a
JOIN	table2 as b USING(same_col)
  • sub query 에서 where id > ANY(sub_query) : sub query 결과 중 어떤 값이든 크기만 하면
    • where id > ALL(sub_query) : 반드시 모든 값보다 큰
  • WHERE EXISTS (sub_query) : 존재 여부 파악. IN 보다 빠름(IN은 모든 행을 다 탐색하는 반면 EXISTS 는 True/False 에 확인되면 바로 종료)
    • inner query 결과값이 많으면 EXISTS / 적으면 IN 이 빠름(subquery 랑 같이 쓰이는 경우)
    • 그 이유는 query 실행 순서 상, sub query 가 primary query 보다 우선적으로 실행되기 때문임

Table 관련

-- TABLE COLUMN CHANGE
ALTER TABLE {TABLE_NAME}
MODIFY {COLUMN_NAME} {OPTIONS : DATA TYPE, NULLABLE, UNIQUE, DEFAULT)
ADD CONSTRAINT {RULE_NAME} CHECK(RULE)
CHANGE {OLD_COLUMN_NAME} {NEW_COLUMN_NAME} {OPTIONS : DATA TYPE, NULLABLE, UNIQUE, DEFAULT}
;
-- RENAME TABLE NAME
RENAME TABLE {OLD_NAME} TO {NEW_NAME};

-- DUPLICATE TABLE
CREATE TABLE {NEW_TABLE_NAME} AS SELECT * FROM {FROM_TABLE};

-- REMOVE TABLE
DROP TABLE {TABLE_NAME};

-- DUPLICATE ONLY TABLE STRUCTURE(NOT DATA)
CREATE TABLE {TABLE_NAME} LIKE {FROM TABLE};
-- INSERT DATA FROM ORIGINAL TABLE
INSERT INTO {TABLE_NAME} SELECT * FROM {FROM_TABLE} WHERE {CONDITIONS};

-- REMOVE ALL DATA
TRUNCATE {TABLE_NAME}; # DELETE FROM {TABLE_NAME}

2. 프로시저

프로그래밍 언어의 함수와 같은 역할
input과 output 변수 타입 지정

3. 트리거

항상 어떠한 패턴이 발생하면 어딘가에 영향을 주기 위한 코드

profile
keep calm and carry on

0개의 댓글