CHAPTER 5. 더 정확하고 다양하게 결과를 출력하는 WHERE절과 연산자

- 필요한 데이터만 선택적으로 출력하게 하는 WHERE절
     - 
WHERE절은 SELECT문으로 데이터를 조회할 때, 특정 조건을 기준으로 원하는 행만 출력할 수 있음.

SELECT [조회할 열1], [조회할 열1], … , [조회할 열N]
FROM [조회할 테이블 이름]
WHERE [조회할 행을 선별하기 위한 조건식];

- 여러 개의 조건식을 사용할 수 있게 하는 AND, OR 연산자
     - 논리 연산자(AND, OR)는 WHERE 절에서 조건식을 여러 개 지정할 수 있도록 해줌.

SELECT [조회할 열1], [조회할 열1], … , [조회할 열N]
FROM [조회할 테이블 이름]
WHERE [조건식 1]
  AND [조건식 2]
  AND [조건식 3]
   OR [조건식 4];

 

- 연산자 종류와 활용방법
     1. 산술 연산자 (+, - , *, /): 사칙 연산을 가능하게 해줌.
     2. 비교 연산자: 대소 비교 연산자(>, >=, <, <=)와 등가 비교 연산자(=, !=, <>, ^=)가 있음.
     3. 논리 부정 연산자(NOT): 특정 판단값을 반대로 변경함. (True->False, False->True)
     4. IN 연산자: OR을 여러번 사용해야 할 때, 대신 사용될 수 있음.
     5. BETWEEN A AND B 연산자: 최솟값과 최댓값을 통해 범위를 설정할 때 사용됨. (ex) 보유잔액이 2000원이상 3000원 미만

     6. LIKE 연산자와 와일드카드:
             - LIKE 연산자는 게시판 제목 검색 기능처럼 일부 문자열이 포함된 데이터를 조회할 때 사용함.
             - 와일드카드란 특정문자 또는 문자열을 대체하거나 문자열 데이터의 패턴을 표기하는 특수문자로, 2가지 종류가 있음.
               (1) -: 어떤 값이든 상관없이 한 개의 문자 데이터를 의미
               (2)%: 길이와 상관없이 (문자 없는 경우도 포함) 모든 문자 데이터를 의미

     7. IS NULL 연산자: 특정 열 또는 연산 결과 값이 NULL 인지 여부를 확인함.

     8. 집합 연산자: 두 개 이상의 SELECT문의 결과 값을 연결할 때 사용함. (ex) 10번 부서의 사원과 20번 부서의 사원을 합칠 때
             - 출력 열 개수와 각각 대응되는 열의 자료형을 맞춰주어야 함.
             - 집합 연산자는 4개가 있음.
               (1)UNION: 연결된 SELECT 문의 결과 값을 합집합으로 묶어줌. (중복값 제거)
               (2)UNION ALL: 연결된 SELECT 문의 결과 값을 합집합으로 묶어줌. (중복값 유지)
               (3)MINUS: 먼저 작성된 SELECT 문의 결과값에서 다음 SELECT 문의 결과 값을 차집합처리
               (4)INTERSECT: 먼저 작성한 SELECT문과 다음 SELECT문의 결과 값이 같은 데이터만 출력

 

- 연산자 우선순위
       (*,/) > (+,-) > (=, !=, ^=, <>, >, >=, <, <=) > (IS NULL, LIKE, IN) > (BETWEEN A AND B) > NOT > AND > OR

 


-Reference-
이지훈, 『오라클로 배우는 데이터베이스 입문』


CHAPTER 4. SELECT 문의 기본 형식


- 데이터를 조회하는 3가지 방식
  1. 셀렉션(Selection): 행 단위로 원하는 데이터를 조회하는 방식
  2. 프로젝션(Projection): 열 단위로 원하는 데이터를 조회하는 방식
  3. 조인(Join): 두 개 이상의 테이블을 양 옆에 연결하여 하나의 테이블 인 것처럼 조회하는 방식

- SELECT절과 FROM절
  - SELECT 문은 데이터에 보관되어 있는 데이터를 조회하는 데 사용

  - FROM절은 조회할 데이터가 저장된 테이블 이름을 명시
  - 아래 SQL문은 EMP 테이블의 전체열을 조회함.

SELECT *
FROM EMP;

 

- 중복 데이터를 삭제하는 DISTINCT
  - SELECT 문으로 데이터를 조회한 후 DISTINCT를 사용하여 중복을 제거할 수 있음.
  - DISTINCT를 사용하면, 명시한 열들 중에서 중복 행 한개만 남겨두고 모두 제거됨.

SELECT DISTINCT deptno,
FROM emp;

 

- 한눈에 보기 좋게 별칭(Alias) 설정하기
  - ORACLE DB에서 별칭을 지정하는 4가지 방식
    1. 연산 및 각오된 문장 이후 한 칸 띄우고 별칭 지정 (ex) sal*12+comm ANNSAL
    2. 연산 및 각오된 문장 이후 한 칸 띄우고 별칭을 큰따옴표로 묶음 (ex) sal*12+comm "ANNSAL"
    3. 연산 및 각오된 문장 이후 한 칸 띄운 후 ‘AS’, 한 칸 뒤에 별칭 지정 (ex) sal*12+comm AS ANNSAL
    4. 연산 및 각오된 문장 이후 한 칸 띄운 후 ‘AS’, 한칸 뒤에 별칭을 큰 따옴표로 묶음 (ex) sal*12+comm AS "ANNSAL"

- 원하는 순서로 출력 데이터를 정렬하는 ORDER BY
  - 정렬 옵션의 default는 ASC(오름차순)이다. 정렬옵션에 DESC 사용 시에 내림차순으로 정렬가능하다.
  - 꼭 필요한 경우가 아니라면, 사용하지 않는 것이 좋다. (이유: 많은 자원/비용을 소모하기 때문에)
  - SQL문의 효율이 낮아져서 서비스 응답 시간이 느려질 수 있다.

SELECT [조회할 열1], [조회할 열2], ... , [조회할 열N]
FROM [조회할 테이블 이름]
ORDER BY [정렬기준 열 이름] [정렬 옵션(DESC or ASC)];

 

 


-Reference-
이지훈, 『오라클로 배우는 데이터베이스 입문』

CHAPTER 1. 데이터베이스

- 데이터베이스는 Data + base의 합성어

- DBMS = DataBase Management System
- RDBMS = Relational DataBase Management System

- DBMS를 통한 데이터 관리의 장점
   1. 데이터 중복을 피할 수 있다.
   2. 여러 Application들이 데이터를 동시에 공유할 수 있다.
   3. 각각의 Application의 데이터 관리 방식을 통일할 수 있다.
   4. 각각의 Application의 업데이트 또는 변경과 관계없이 데이터를 사용할 수 있다.

- 데이터 모델의 종류
   1. 계층형 데이터 모델(Hierarchical Data Model): Tree 구조를 활용 / 1960~80년대까지 많이 사용
   2. 네트워크형 데이터 모델(Network Data Model): Graph 구조를 활용
   3. 객체 지향형 데이터 모델(Object-oriented Data Model): 오버라이드와 같은 기능 사용 가능 / 적용이 까다로움
   4. 관계형 데이터 모델(Relational Data Model): 현대에 가장 많은 데이터베이스의 바탕이 되는 모델 / 관계에 초점을 둠.

- 관계형 데이터 모델의 핵심 구성요소 3가지
   1. 개체(Entity): 데이터베이스에서 데이터화하려는 사물, 개념의 정보 단위 (Table)
   2. 속성(Attribute): 개체를 구성하는 데이터의 가장 작은 논리적 단위 (Column)
   3. 관계(Relationship): 개체와 개체 또는 속성간의 연관성을 나타내기 위해 사용함. (외래키(Foreign Key)로 구현)

- SQL (Structured Query Language)란, 
  RDBMS에서 데이터를 다루고 관리하는 데 사용하는 데이터베이스 질의 언어

 

CHAPTER 2. 관계형 데이터베이스와 오라클 데이터베이스

- 테이블(Table): 관계형 데이터베이스는 기본적으로 데이터를 2차원 표 형태로 저장하고 관리함. (= Relation)
- 행(Column): 저장하려는 하나의 개체를 구성하는 여러 값을 가로로 늘어뜨린 형태 (= Tuple, Record)
- 열(Row); 저장하려는 데이터를 대표하는 이름과 공동 특성을 정의 (= Attribute, Field)

- 특별한 의미를 지닌 열(Column) = 키(Key)
    1. 기본키 (PK: Primary Key): 한 테이블 내에서 중복되지 않은 값만 가질 수 있는 키 (아래 3가지 조건 충족 필요)
         A. 테이블에 저장된 행을 식별할 수 있는 유일한 값.
         B. 값의 중복이 없어야 한다.
         C. NULL 값을 가질 수 없다.

    2. 보조키 = 대체키(Alternate Key)
         A. 유일하면서도 NULL 값이 없어 기본키가 될 수 있는 후보키

    3. 외래키(FK: Foreign Key): 
         A. 특정 테이블에 포함되어 있으면서 다른 테이블의 기본키로 지정된 키

         B. 외래키를 사용하면 여러 행에 걸쳐 특정 열을 병합하는 효과를 얻을 수 있어 데이터 중복을 최소화 할 수 있다.

     4. 복합키(Composite Key):
          A. 여러 열을 조합하여 기본키 역할을 할 수 있게 만든 키

 

- 오라클 데이터베이스의 자료형
    1. VARCHAR2(길이): 최대 4000byte 만큼의 가변 길이 문자열 데이터 저장 가능 (최소 1byte)
    2. CHAR(길이): 최대 4000byte 만큼의 고정 길이 문자열 데이터 저장 가능 (최소 1byte)
    3. NUMBER(전체자릿수, 소수점 이하 자릿수):  ±38자릿수의 숫자를 저장할 수 있음.
    4. DATE: 날짜 형식을 저장하기 위해 사용하는 자료형(연/월/일/시/분/초)

- 오라클 데이터베이스의 객체
    1. 테이블(Table): 데이터를 저장하는 장소
    2. 인덱스(Index): 테이블의 검색 효율을 높이기 위해 사용함.
    3. 뷰(View): 하나 또는 여러 개의 선별된 데이터를 논리적으로 연결하여 하나의 테이블처럼 사용하게 함.
    4. 시퀀스(Sequence): 일련번호를 생성해줌.
    5. 시노님(Synonym): 오라클 객체의 별칭
    6. 프로시저(Procedure): 프로그래밍 연산 및 기능 수행이 가능함. (Return 값 없음)
    7. 함수(Function): 프로그래밍 연산 및 기능 수행이 가능함. (Return 값 있음)
    8. 패키지(Package): 관련있는 프로시저와 함수를 보관함.
    9. 트리거(Trigger): 데이터 관련 작업의 연결 및 방지 관련 기능을 제공함.

 


-Reference-
이지훈, 『오라클로 배우는 데이터베이스 입문』