서브쿼리 SQL문 안에 포함된 SQL문 ex) 신장이 가장 큰 선수의 정보 조회 SELECT PLAYER_NAME, POSITION, HEIGHT FROM PLAYER WHERE HEIGHT = (SELECT MAX(HEIGHT) FROM PLAYER); 기준 > 결과 칼럼 / 행의 수 단일행 서브쿼리 / 다중행 서브쿼리 단일칼럼 서브쿼리 / 다중칼럼 서브쿼리 단일행 서브쿼리 서브쿼리의 결과 건수가 반드시 1건 이하이다. 단일행 비교 연산자(=, =, ) 와 함께 사용한다. 결과가 2건 이상이면 오류 발생한다. ex) '2007182'번 선수와 같은 팀에 속하는 선수의 이름, 포지션, 팀ID 출력 SELECT PLAYER_NAME, POSITION, TEAM_ID FROM PLAYER WHERE TEAM..
정규화와 JOIN 정규화 이상현상 발생을 피하기 위해 테이블을 분할 학계 / 실무에서 주로 3차 정규형을 사용한다. JOIN 데이터의 통합 조회를 위해 여러 테이블들을 연결한다. 실제 JOIN 연산은 두 개의 테이블에 대해서만 적용된다. 일반적인 경우 PK / FK의 연관에 의해 JOIN이 성립한다. 우선 EMP 테이블 (직원) DEPT 테이블 (부서) SALGRADE 테이블 (급여 등급) 이 세 가지 테이블을 이용해 실습하자 JOIN의 유형 1) 동등 조인 / 비동등 조인 2) 내부 조인 / 외부 조인 / 크로스 조인 / 셀프 조인 3) 암시적 조인 / 명시적 조인 1) 동등 조인 / 비동등 조인 동등 조인 조인 조건으로 Equal 연산 사용한다. 중복 칼럼의 경우, 칼럼명 앞에 테이블을 붙여야 한다...
트랜잭션 : 데이터베이스의 논리적 연산 단위 - 의미적으로 분할할 수 없는 최소 단위 - 일반적으로 하나의 트랜잭션은 여러 SQL 문장을 포함한다. - 성공시 모든 연산을 반영, 취소시 모든 연산을 취소한다. 트랜잭션 예시) 도서 주문 (재고 수량 감소, 주문 내역 생성, 결제 등) 계좌 이체 (원 계좌의 잔액 감소, 다른 계좌의 잔액 증가 등) 교통카드 충전 (잔액 증가, 결제 등) 트랜잭션의 특성 (ACID : Atomicity, Consistency, Isolation, Durability) // 원일고지 원자성 : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. 일관성 : 트랜잭션 실행 전의 데이터베이스 내용이 잘못되어 있지 않다면 트랜..
다중 행 함수 (Multi-row Function) : 여러 행의 그룹에 대해 적용되는 함수 다중 행 함수의 종류 > 그룹 함수 - 집계 함수 : COUNT, SUM, AVG, MAX / MIN 등 - 고급 집계 함수 (행별 소계 냄) : ROLLUP, CUBE, GROUPING SETS > 윈도우 함수 집계 함수 집계 함수 - 여러 행의 그룹에 대한 연산을 통해 하나의 결과를 반환 - SELECT, HAVING, ORDER BY 절에 사용 - GROUP BY 절을 통해 그룹핑 기준 명시 - NULL을 제외하고 계산 집계함수 사용 예시 SELECT COUNT(*) AS CNT FROM PLAYER; -- 481 : NULL 제외 전체 행의 수 출력 -- 111 : 컬럼 조건 걸어주고 THEN 사용해 일치..
함수 : 특정한 기능을 수행하는 단위 또는 특정한 기능을 수행하기 위한 일련의 연산들의 집합 함수의 유형 > 생성 주체에 따라 - 사용자 정의 함수 : 사용자가 정의한다. - 내장 함수 : 벤더가 정의한다. > 적용 범위에 따라 - 단일 행 함수 : 문자형 함수, 숫자형 함수, 날짜형 함수, 제어 함수, 변환 함수, NULL 함수 - 다중 행 함수 : 그룹 함수, 윈도우 함수 단일행 함수의 특징 - 각 행에 대해 개별적으로 적용하고 그 결과를 반환한다. - 함수 중첩이 가능하다. - SELECT, WHERE, ORDER BY 절에 사용 가능하다. Oracle의 단일행 내장 함수 문자형 함수 (문자형 변수 처리) : CONCAT, SUBSTR, LENGTH, TRIM 등.. 숫자형 함수 (숫자형 변수 처리..
테이블 생성 규칙 테이블명 : 객체를 의미할 수 있는 이름으로 단수형 권고, 다른 테이블명과 중복X 컬럼명 : 한 테이블 내에서 컬럼명 중복X, 테이블 생성시 각 컬럼들은 괄호 내에서 콤마로 구분됨, 컬럼 뒤에 데이터 유형이 반드시 지정되어야 함 테이블명 & 컬럼명 사전에 정의된 예약어는 사용 불가, 테이블명과 컬럼명에는 문자, 숫자, 일부기호(_,$,#)만 허용됨, 테이블명과 컬럼명은 반드시 문자로 시작해야함 제약조건명 : 다른 제약조건명과 중복X Oracle의 주요 데이터 타입 CHAR : 고정 문자열, 나머지 공간에 공백이 채워진다. ('AA' = 'AA ') VARCHAR2 : 가변 길이 문자열, 나머지 공간 사용X ('AA != 'AA ') NUMBER : 정수, 실수 등의 숫자정보이다. 전체 ..
SQL의 유형 데이터 정의어(DDL : Date Definition Language) : 데이터의 구조를 정의하기 위한 명령어 CREATE, ALTER, DROP, RENAME, TRUNCATE 데이터 조작어(DML : Data Manipulation Language) : 데이터를 검색 또는 변형하기 위한 명령어 SELETE, INSERT, UPDATE, DELETE 데이터 제어어(DCL : Data Control Language) : 사용자에게 객체에 대한 권한을 부여/취소하기 위한 명령어 GRANT, REVOKE 트랜잭션 제어어(TCL : Transaction Control Language) : 변경 내용을 확정/취소하기 위한 명령어 COMMIT, ROLLBACK DML 데이터 조작어 테이블 구조 확..
성능 데이터 모델링의 정의 데이터베이스 성능을 고려하여 데이터 모델링을 수행하는 것이다. 정규화, 반정규화, 테이블 통합 및 분할, 조인 구조, PK / FK 설정 등이 있다. 수행시점 빠를 수록 좋다. 분석 설계 단계에서 성능 모델링을 수행하게 되면 재업무 비용이 최소화된다. 일반적인 경우 대충 설계해 성능 저하가 오면 그때 해당 부분만 SQL 튜닝한다. 성능 데이터 모델링 진행 순서 1. 정규화를 정확하게 수행한다. 2. 데이터베이스 용량 산정 수행한다. 3. 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다. (트랜잭션 : 쪼갤 수 없는 업무 처리의 최소 단위) 4. 용량과 트랜잭션의 유형에 따라 반 정규화를 수행한다. 5. 이력 모델의 조정, 인덱스를 고려한 PK/FK의 순서 조정, 슈퍼타입/서브..