본문 바로가기

DBMS

(22)
[DBMS] 14 JOIN(2) ​ ※ 내부 조인 복습 - EMPLOYEES 테이블에서 HIREDATE가 2003~2005년 까지인 사람 검색 - HIRE_DATE, FIRST_NAME, DEPARTMENT_NAME SELECT HIRE_DATE, FIRST_NAME, DEPARTMENT_NAME FROM EMPLOYEES E JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID AND HIRE_DATE BETWEEN TO_DATE('2003-01', 'YYYY-MM') AND TO_DATE('2006-01', 'YYYY-MM'); ​ ​ ● 내츄럴 조인(NATURAL JOIN) 1. USING() - 중복되는 컬럼이 생길 시 맨 앞으로 출력하여 중복 컬럼을 한 개만 출력한다..
[DBMS] 13 JOIN(1) ​ ​ ● JOIN - 여러 테이블에 흩어져 있는 정보 중 사용자가 필요한 정보만 가져와서 가상의 테이블처럼 만들고 결과를 보여주는 것 - 조회 테이블이 너무 많이 쪼개져 있으면 느리기 때문에 입력, 수정, 삭제의 성능을 향상시키기 위해서 사용한다. ​ ​ ● 내부 조인(INNER JOIN) - INNER 생략 가능 - 조건이 일치하는 값이 두 테이블에 모두 존재할 때 조회 - [테이블명A] INNER JOIN [테이블명B] ON 조건식 - [테이블명A] JOIN [테이블명B] ON 조건식 ​ 1) 등가 조인 - ON절에 등호가 있을 때 2) 비등가 조인 - ON절에 등호가 없을 때 ​ ※ ON과 WHERE - ON절의 조건은 JOIN이 되면서 실행되고, WHERE절의 조건은 JOIN이 모..
[DBMS] 12 ● 옵티마이저(OPTIMIZER) - SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로(최저비용)를 생성해주는 DBMS 내부의 핵심 엔진 - 사용자가 쿼리문(SQL)으로 결과를 요청하면, 이를 생성하는 데 필요한 처리경로는 DBMS에 내장된 옵티마이저가 자동으로 생성한다. - 옵티마이저가 생성한 SQL 처리경로를 실행 계획(Execution Plan)이라고 한다. ※ COST : 예상 수행 시간, 쿼리를 수행하는 데 소요되는 일량 또는 시간 ※ CARDINALITY : 실행 결과의 건수 ​ ​ ● 옵티마이저의 SQL 최적화 과정 - 사용자가 작성한 쿼리 수행을 위해, 실행될 만한 실행 계획을 찾는다. - 데이터 딕셔너리에 미리 수집해 놓은 오브젝트 통계 및 시스템 통계 정보를 이용해 각 실행 계획의..
[DBMS] 11 ● GROUP BY - ~별(예 : 포지션 별 평균 키) - SELECT [컬럼명] FROM [테이블명] WHERE [조건식] GROUP BY [컬럼명] HAVING [조건식] ※ WHERE 절에서 조건을 처리할 수 있다면 반드시 WHERE 절에서 먼저 처리해준다. ​ ​(ex) 1. PLAYER 테이블에서 포지션 검색(NULL 제외) SELECT "POSITION" FROM PLAYER WHERE "POSITION" IS NOT NULL GROUP BY "POSITION"; ​ 2. PLAYER 테이블에서 몸무게가 80 이상인 선수들의 평균 키가 180 이상인 포지션 검색 SELECT "POSITION" FROM PLAYER WHERE WEIGHT >= 80 GROUP BY "POSITION" HAVI..
[DBMS] 10 ● 집계함수 - NULL은 포함하지 않는다. - WHERE 절에서는 사용할 수 없다. - 여러 개의 값을 하나로 집계하여 나타낸다. ​ ​ ​● 집계함수 종류 - AVG() : 평균 - MAX() : 최대값 - MIN() : 최소값 - SUM() : 총 합 - COUNT() : 개수 ​ (ex) 1. PLAYER 테이블에서 HEIGHT의 평균, 최대값, 최소값, 총 합, 개수 검색(평균은 소수점 두번째 자리까지 반올림 하기) SELECT ROUND(AVG(HEIGHT), 2), MAX(HEIGHT), MIN(HEIGHT), SUM(HEIGHT), COUNT(HEIGHT) FROM PLAYER; ​ 2. PLAYER 테이블에서 HEIGHT 개수 검색(NULL 포함해서 COUNT 하기) SELECT COUN..
[DBMS] 09 NULL ​ ● NULL - 정의되지 않은 값 - 빈 값 대신 미정 값을 부여할 때 사용(PK는 불가능, FK는 가능) ​ ​ ​● NOT NULL 제약조건 ALTER TABLE 테이블명 MODIFY 컬럼명 NOT NULL; ​ ​ ​● 제약조건 삭제 ALTER TABLE 테이블명 MODIFY 컬럼명 NOT NULL; (ex) TBL_CAR 테이블에서 BRAND 컬럼의 제약조건을 삭제한다. ALTER TABLE TBL_CAR MODIFY BRAND NOT NULL; ​● 조건식 1. 컬럼명 IS NULL : 컬럼 값이 NULL이면 참 (ex) PLAYER 테이블에서 POSITION이 NULL이면 '미정'으로 결과 출력 SELECT NVL("POSITION", '미정') FROM PLAYER WHERE "..
[DBMS] 08 ​● 정규화 - 삽입/수정/삭제의 이상현상을 제거 - 데이터의 중복 최소화 - 대부분 3차 정규화까지만 진행 ​ ​ ​● 1차 정규화(1NF) - 하나의 컬럼에 값이 1개씩만 있어야 한다. - 반복적인 컬럼 값이 나타나는 경우 ​ (ex) 1. 반복적인 컬럼 값(검색이 힘들다) ​ 2. 정규화 진행 ​ ​ ​● 2차 정규화(2NF) - 테이블의 모든 컬럼이 서로 관계가 있어야 한다. - 모든 컬럼이 서로 관계가 없는 경우 ​ (ex) 1. 서로 관계가 없는 컬럼 ​ 2. 정규화 진행 ​ ​ ​● 3차 정규화(3NF) ​ (ex) 1. 중복 데이터 발생 가능 - 우편번호로 시, 구, 동을 알 수 있다. - 중복된 데이터가 생길 가능성이 있다. ​ 2. 정규화 진행 ​ ​ ※ 데이터베이스에서 정규화가 필요한..
[DBMS] 07 ● TCL(Transaction Control Language) : DML을 위한 명령 ​ ​● 트랜젝션 - 하나의 작업 단위 ​ ​● COMMIT - 모든 작업을 확정하는 명령어 ​ ​● ROLLBACK - 이전 COMMIT 지점으로 이동 - 'T' 버튼을 클릭하여 ROLLBACK을 Auto/None 모드로 전환할 수 있다. ​ ​● AS(ALIAS) : 별칭 - SELECT절 : AS 뒤에 별칭 작성, 한 칸 띄우고 작성(AS 생략 가능) - FROM절 : 한 칸 띄우고 작성 - 공백이 있는 경우 "" 안에 컬럼명 작성 ​ ​● CONCATENATION(연결) : || ​ ​● LIKE : 포함된 문자열의 값을 찾음, 문자의 개수도 제한을 줄 수 있음 - % : 모든 것 - '%A' : A로 끝나는 ..