DB/SQL 전문가 가이드 17

[과목 II 1장 7절] 조인

1. 조인 개요두 개 이상의 테이블들을 연결해서 데이터를 출력하는 것을 조인 (JOIN)이라고 지칭조인은 관계형 데이터베이스의 가장 큰 장점이면서 핵심 기능일반적인 경우 행들은 PK (Primary Key)나 FK(Foreign Key) 값의 연관에 의해 조인이 성립되지만 어떤 경우에는 이러한 PK, FK의 관계가 없어도 논리적인 값들의 연관만으로 조인이 성립될 수 있음한 가지 주의할 점은 FROM 절에 여러 테이블이 나열되더라도 SQL에서 데이터를 처리할 때는 단 두 개의 집합 간에만 조인이 일어난다는 것FROM 절에 A, B, C 테이블이 나열됐더라도 특정 두 개의 테이블만 먼저 조인 처리되고, 조인의 결과인 중간 데이터 집합과 남은 한 개의 테이블이 다음 차례로 조인되는 것해당 순서는 네 개 이상의..

[과목 II 1장 6절] ORDER BY절

1. ORDER BY 절ORDER BY 절은 SQL 문장으로 조회한 데이터들을 다양한 목적에 맞게 특정 칼럼을 기준으로 정렬 및 출력하는 데 사용ORDER BY 절에 칼럼명 대신에 SELECT 절에서 사용한 ALIAS 명이나 칼럼 순서를 나타내는 정수도 사용 가능별도로서를 나타내는 정수도 사용 가능별도로 정렬 방식을 지정하지 않으면 기본적으로 오름차순이 적용되며, SQL 문장의 제일 마지막에 위치ORDER BY 절은 두 가지의 정렬 방식이 있음ASC (Ascending): 조회한 데이터를 오름차순으로 정렬 (Default 값이기 때문에 생략 가능)DESC (Descending): 죄한 데이터를 내림차순으로 정렬  ORDER BY 절의 특징은 다음과 같음기본적인 정렬 순서는 오름차순 (ASC)숫자형 데이터..

[과목 II 1장 5절] GROUP BY, HAVING 절

1. 집계 함수여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 다중행 함수 중 집계함수 (Aggregate Function)의 특성은 다음과 같음여러 행들의 그룹이 모여 그룹당 단 한의 결과를 돌려주는 함수GROUP BY 절은 행동을 소그룹화시킴SELECT 절, HAVING 절, ORDER BY 절에 사용할 수 있음 집계함수명 ( [DISTINCT | ALL] 칼럼이나 표현식 ) 집계함수명에 사용되는 두 가지 옵션에 대한 설명은 다음과 같음ALL: Default 옵션이므로 생략 가능DISTICNT: 같은 값을 하나의 데이터로 간주할 때 사용하는 옵션 자주 사용되는 주요 집계함수는 다음과 같음집계함수는 그룹에 대한 정보를 제공하므로 주로 숫자 유형에 사용되지만MAX, MIN, COUNT 함수는..

[과목 II 1장 4절] WHERE 절

1. WHERE 조건절 개요사용자들은 자신이 원하는 자료만을 검색하기 위해 SQL 문장에 WHERE 절을 이용해 자료를 제한할 수 있음WHERE 절에는 두 개 이상의 테이블에 대한 조인 조건을 기술하거나 결과를 제한하기 위한 조건을 기술할 수 있음현실의 데이터베이스는 많은 사용자나 프로그램들이 동시에 접속해 다량의 트랜잭션을 발생시키고 있음만약 WHERE 조건절을 사용하지 않을 경우 필요 없는 많은 자료를 DB로부터 요청하는 SQL 문장은 대량의 데이터를 검색하기 위해 DB가 설치된 서버의 CPU나 메모리 등의 시스템 자원을 과다하게 사용하게 됨이런 문제점을 방지하기 위해 WHERE 절에 조건이 없는 Full Table Scan 문장은 SQL 튜닝의 1차적인 검토 대상이 됨 (물론 병렬 처리 등을 이용해..

[과목 II 1장 3절] 함수

1. 내장 함수 개요함수 (Function)은 다양한 기준으로 분류할 수 있는데, 벤더에서 제공하는 함수인 내장 함수 (Built-in Function)와 사용자가 정의할 수 있는 함수 (User Defined Function)로 나눌 수 있음내장 함수는 SQL을 더욱 강력하게 해 주고 데이터 값을 간편하게 조작하는 데 사용됨벤더별로 가장 큰 차이를 보이는 부분이지만, 핵심적인 기능들은 이름이나 표현법이 다르더라도 대부분의 데이터베이스가 공통적으로 제공함 내장 함수는 다시 함수 입력 값이 단일행 값이 입력되는 단일행 함수 (Single-Row Function)와 여러 행의 값이 입력되는 다중행 함수 (Multi-Row Function)로 나눌 수 있음다중행 함수는 다시 집계 함수 (Aggregate Fu..

[과목 II 1장 2절] SELECT 문

1. SELECT사용자가 입력한 데이터는 언제라도 조회할 수 있음앞에서 입력한 자료들을 조회해 보는 SQL문은 다음과 같음  1.1 에스터리스크 (*) 사용하기입력한 정보들을 보기 위해 테이블을 보고 싶은 정보들이 있는 칼럼들을 선택해 조회할 수 있음해당 테이블의 모든 칼럼 정보를 보고 싶을 경우에는 에스터리스크 (*)를 사용해 조회함  1.2 ALIAS 부여하기조회된 결과에 일종의 별명 (ALIAS, ALIASES)을부여해 칼럼 레이블을 변경할 수 있음칼럼 별명 (ALIAS)에 대한 사항을 정리하면 다음과 같음칼럼명 바로 뒤에 옴칼럼명과 ALIAS 사이에 AS, as 키워드를 사용할 수 있지만 옵션이므로 사용하지 않아도 됨 (가독성 측면에서 AS를 사용하는 편이 바람직)이중 인용부호 (Double Qu..

[과목 II 1장 1절] 관계형 데이터베이스 개요

1. 데이터베이스일반적으로 데이터베이스라고 말할 때는 특정 기업이나 조직, 개인이 필요에 따라 데이터를 일정한 형태로 저장해 놓은 것을 의미i.g. 학교에서는 학생 관리를 목적으로 학생 개개인의 정보를 모으고 기업에서는 직원들을 관리하기 위해 직원들의 이름, 부서, 월급 등의 정보를 모아둠 관리 대상이 되는 데이터의 양이 점점 많아지고 같은 데이터를 여러 사람이 동시에 다양한 용도로 사용하게 되면 단순히 엑셀 같은 개인이 관리하는 소프트웨어만으로는 한계가 따름개인의 사소한 부주의로 인해 기업의 사활이 걸린 중요한 데이터가 손상되거나 유실되는 상황까지 발생할 수 있음 따라서 많은 사용자들은 더 효율적인 데이터 관리뿐 아니라 예기치 못한 사건으로 인한 데이터 손상을 피하고, 필요한 데이터를 복구하기 위한 강..

[과목 I 2장 5절] 본질식별자 vs. 인조식별자

본질식별자 vs 인조식별자엔티티는 반드시 데이터를 식별할 수 있는 속성이 존재해야 하며 이를 식별자라고 지칭식별자는 대체 여부에 따라 본질식별자와 인조식별자로 분류 가능본질식별자: 업무에 의해 만들어진 식별자인조식별자: 업무적으로 만들어지지는 않지만 본질식별자가 복잡한 구성을 갖고 있으므로 인위적으로 만든 식별자 가. 본질 식별자  [그림 I-2-21] 주문상품 모델의 식별자가 본질식별자주문상품 모델은 주문 시 구매한 상품 정보를 관리 아래 표는 하나의 주문에 세 개의 상품을 구매한 것을 데이터로 표현했으며 이러한 데이터로 개발을 진행하여 주문상품 모델에 값을 Insert 하는 경우 다음과 같이 SQL로 표현 가능  주문번호상품번호주문수량11000112341110001156651100012342 나. 인..

[과목 I 2장 4절] Null 속성의 이해

1. Null 값의 연산은 언제나 Null이다Null 값은 `공백이나 숫자 0`과는 전혀 다른 의미`아직 정의되지 않은 미지의 값` 또는 `현재 데이터를 입력하지 못하는 경우`를 의미즉 Null은 값이 존재하지 않음을 말함 주문번호주문금액주문취소금액1100001100,00020,000110000215,000   위 주문 모델에 들어 있는 데이터를 바탕으로 SQL을 실행하면 다음과 같은 결과를 얻습니다.COL1, COL2, COL3는 최종 주문금액을 구하는 산식최종 주문금액은 각 주문의 주문금액에서 취소된 주문금액을 제외한 결과[표 I-2-8] 결과를 보면 Null 값이 포함되었을 경우 COL1, COL2, 그리고 COL3의 결과가 모두 다르게 출력하는 것을 알 수 있는데 이는 Null 연산은 언제나 Nu..

[과목 I 2장 3절] 모델이 표현하는 트랜잭션의 이해

트랜잭션트랜잭션은 데이터베이스의 논리적 연산단위계좌이체를 통해 트랜잭션을 설명할 수 있음돈을 보내는 사람의 계좌에서 이체금액을 차감하고, 돈을 받는 사람의 계좌에 이체금액을 가산계좌이체라는 업무는 위와 같은 두 가지 단계로 진행되며, 데이터 정합성을 위해 위 작업은 전부 실행되든지 아니면 전부 취소되든지 해야 함즉, 하나의 업무 단위로 묶여서 처리돼야 한다는 것이고 이러한 업무 단위를 트랜잭션이라고 함 부연 설명계좌이체를 하기 위해서는 먼저 A 고객의 잔고에서 이체금액을 차감하고, B 고객의 잔고에 이체금액을 가산해야 함중요한 것은 잔고를 차감하고 가산하는 단계가 모두 완료된 후에 커밋을 수행하는 것잔고 차감/가산 단계가 모두 성공해야지만 커밋이 수행되어 정상적인 데이터를 반영할 수 있음 데이터 모델링의..