분류 전체보기 154

디비 이야기 23. 트랜젝션

1. 트랜젝션이란?= 데이터의 DML과 관련된 논리적 작업 && 동시성 제어를 위한 개념이다 2. 트랜젝션의 특징 1) 데이터 무결성이 보장된 상태에서 DML 작업을 완수위한 기본작업2) 관계형 데이터베이스 시스템은 데이터 처리시 트랜젝션을 통하여 정상종료(동기), 비정장종료(비동기)에 대해 데이터의 신뢰성과 일관성을 보장해준다 3) 실무에서 데이터를 SELECT로 조회하고 DML로 실행하여 종료하는 과정을 트랜젝션이라고 한다4) 마지막으로 COMMIT(완료) || ROLLBACK(철회)로 처리한다 3. 트랜젝션 특징 용어 1) 원자성 : 트랜젝션 처리가 끝나지 않았을 경우, 전혀 이루어지지 않은 것과 같아야한다-> 아무일도 없어야한다 (ROLLBACK으로 되돌린다)EX) 계좌 이체시 오류가 발생했을시 ..

DB 이야기 2020.03.11

디비이야기 21. MERGE문

1. MERGE INTO = 조건을 비교하여 IF NOT이면 INSERT / IF IS이면 UPDATE를 실행시킨다 문법 : MERGE INTO table_name alias USING (table | view | subquery) alias -- 하나의 테이블만 이용한다면 DUAL 활용 ON (join condition) -- WHERE절에 조건 쓰듯이 WHEN MATCHED THEN -- on 이하의 조건에 해당하는 데이터가 있는 경우 (조건식) UPDATE SET col1 = val1[, ...] -- UPDATE 실행 WHEN NOT MATCHED THEN -- on 이하의 조건에 해당하는 데이터가 없는 경우 INSERT (column lists) VALUES (values); -- INSERT ..

DB 이야기 2020.03.11

디비 이야기 19. 인덱스

1. 인덱스란? = 빠른 검색을 위해 사용함 / 쿼리 처리속도를 향상시킴 = 가장 많이 사용하는 검색 트리는 B-TREE다. 주의) 인덱스를 사용하려면 추가 공간이 필요하며 데이터 변경이 자주 일어나면 성능 저하가 될 수 있음 2. 인덱스 특징 1) 데이터 베이스 시스템이 인덱스를 유지보수하여 사용자가 직접 조작하지 않아도 된다 2) 빠르게 찾아 디스크 엑세스 횟수를 줄인다 3) 언제든지 생성/삭제가 가능하여 다른 인덱스에 영향을 주지 않는다 4) DB튜닝의 큰 효과를 볼 수 있음 -> 과다사용은 금지 5) DB에 차지하는 공간이 많아서 TABLE SACAN보다 속도가 느려질 수 있다 3. 인덱스 생성 문법 : CREATE INDEX 인덱스명 on 테이블명(컬럼명) 4. 인덱스 사용 조건 = WHERE ..

DB 이야기 2020.03.10

디비 이야기 18. 뷰

1. 뷰 란? = 가상테이블로 실제 데이터가 없지만 존재하는 테이블을 바라보는 거울과 같은 존재다 보안을 위해 실제 테이블 보호하며 사용자가 테이블을 직접 조작은 불가능하다. -> 허용된 자료만 제한적으로 보여주기 위해 작성 사용자가 필요한 데이터를 부분만 선택하여 만들어 놓은 데이터의 집합 2. 뷰 특징 1) 데이터 가공을 통해 테이블 처럼 내용을 보여줄 수 있다 (가상 테이블) -> 자주 쓰거나 복잡한 SQL을 미리 만들 수 있다 -> 임시적인 작업을 위한 용도로 사용 2) 2개 이상의 물리적 테이블을 조인한 것을 하나의 뷰로 볼 수 있다. 3) 기본 테이블과 비슷하게 조작이 된다 4) 독자적인 인덱스를 가질 수 없다 5) 필요한 데이터만 골라서 처리가능 6) 논리적 독립성 보장 [장점과 단점] 1)..

DB 이야기 2020.03.08

디비 이야기 17. 서브쿼리

1. 서브쿼리란? = 이중 SELECT 문으로 2번 이상 써야할 SELECT문을 한번에 출력되게 도와준다 2. 문법 : SELECT * FROM 테이블명 // 메인쿼리 WHERE 조건식 연산자 (SELECT * FROM 테이블명 WHERE 조건식) // 서브쿼리 3. 서브쿼리 특징 1) 서브쿼리는 ( )를 사용한다 2) 단일행 또는 다중행 연산자 사용 3) 여러번 중첩해서 사용가능하다 * 단일행 연산자로 서브쿼리 작성 EX) SELECT * FROM 테이블명 A WHERE A.salry = (SELECT * FROM 테이블명 WHERE 조건식); -> salry에 서브쿼리 결과를 대입한다 * 다중행 연산자 1) IN(=) : 같은값이 있으면 출력 NOT IN 2) EXIST : 존재하는 값만 출력한다 3..

DB 이야기 2020.03.08

디비 이야기 16. 집합연산자

1. 집합산자란? = 조인 기법 외에도 테이블에서 데이터를 조회하는 방법 / 여러 SELECT 문을 연결해서 만든다 . [특징] 1) 첫번쨰 테이블을 기준으로 데이터가 현시된다 2) 중복된 행은 하나의 행으로 만든다(UNION ALL은 제외) 2. 문법 SELECT * FROM 테이블명1 집합연산자 SELECT * FROM 테이블명2 -> 각 테이블의 칼럼 갯수가 같아야한다! 3. 종류 1) 합집합 : UNION || UNION ALL -> UNION은 두 테이블의 중복된 내용을 제외하고 표시한다 UNION ALL은 중복에 상관없이 표시한다 주의) 각 SELECT 절의 표시해야할 컬럼 수와 데이터 타입이 같아야 한다! => 하지만, 공백('' - string)이나 0(int, bigdeciamal 등)으..

DB 이야기 2020.03.08

디비이야기 15. 조인

1. 조인이란? = 테이블간 연결 또는 결합하여 원하는 데이터를 출력한다. -> 일반적으로 사용하는 SQL 문장이 JOIN이며, 관계형 DB의 핵심이다. 이유 : 조인이 필요한 이유는 정규형에서 시작한다. (데이터 무결성) [특징] 1) PK, FK의 연관관계가 없이 논리적인 값들만으로도 JOIN 성립가능 -> 컬럼값이 서로 같지 않아도 데이터 타입과 길이가 같으면 조인 조건으로 사용가능하다! 2) FROM 절에 여러 테이블이 나열되어도 단 2개의 테이블로만 조인이 일어난다 EX) A,B,C,D 테이블을 조인할 경우 옵티마이저는 (A JOIN B) JOIN C) JOIN D 순으로 A를 주축으로 조인된다 3) DBMS처럼 한 테이블에 모든 데이터를 모아놓고 원하는 데이터를 조회하는 형식이다 -> 그렇기에..

DB 이야기 2020.03.08

디비 이야기 14. ERD와 이상, 정규화

1. ERD란? = 객체(E)-관계(R) 다이아그램(D)으로 테이블처럼 데이터를 담고 있는 도식이다 A 정보 중복현상 방지(원인 1 해결) 3) 제 3 정규화 = 최종정규화 5. 정규화 장,단점 장점) - 정규화 정도가 높은지 낮은지로 판정 1) 높을시 = 유연한 데이터 구축 / 데이터의 정확성을 놓인다 2) 낮을시 = 물리적 접근이 단순하고 / 데어터 결합처리가 감소한다 6. 비정규화 = 정규화는 데이터 중복성을 줄이기 위해 사용하는데 조인같은 결합함수와 사용시 부하가 발생되어 정규화 이후 비정규화를 진수행한다 7. 반정규화 = 정규화된 모델을 성능향상과 개발,운영의 단순화를 위해 중복,분리,통합 등을 수행한다 * 정규화된 모델 -> 조회성능향상 -> 데이블, 칼럼, 관계 중복성 방지! 8. 성능 데이..