DML

  • 데이터베이스에 저장된 자료들을 입력, 수정, 삭제, 조회하는 언어
  • 유형
    • SELECT
    • INSERT
    • UPDATE
    • DELETE
  • 문법
    • SELECT 명령문
      • SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY
    • SELECT 문
      •  

SELECT* | {[DISTINCT]출력할 컬럼명 | 표현식, …} FROM 검색할 테이블명; [WHERE 조건절들] [ORDER BY {컬럼명, 표현식}[ASC|DESC]];

        - SELECT 절
            - 검색하고자 하는 속성명, 계산식
            - 2개 이상 테이블을 대상으로 검색할 때는 '테이블 명, 속성명'으로 표현
            - 술어 부분을 ALL 이 기본 값
            - ALL
                - 모든 튜플을 검색할 때 사용
                - SELECT 뒤에 명시하지 않을 경우 ALL 로 인식
            - DISTRICT
                - 중복된 속성이 조회될 경우 그 중 한개만 검색
            - DISTINCT ROW SELECT
                - 뒤에 속성들과 상관없이 튜플 전체가 중복된 튜플을 제거
        - FROM 절
            - 질의에 의해 검색된 데이터들을 포함하는 테이블 명을 기술
        - WHERE 절
            - 검색할 조건을 기술
        - GROUP BY 절
            - 속성 값을 그룹으로 분류하고자 할 때 사용
        - HAVING 절
            - GROUP BY에 의해 분류한 후 그룹에 대한 조건 기술
        - ORDER BY 절
            - 속성 값을 정령하고자할 때 사용
            - ASC(오름차순) DESC(내림차순)키워드 생략시 오름차순으로 정렬
    - WHERE 조건
        - WHERE 절에서 조건이 상수인 경우: 상하 조건인 경우 숫자를 그대로 입력하여 비교가능
            - ```sql
SELECT 사원번호, 이름, 부서번호
FROM 사원
WHERE 부서번호 = 90;
    - WHERE 절에서 조건이 문자열인 경우: 문자열 조건인 경우 작은 따옴표('')가 필요하며, 대소문자를 구별함
        - ```sql

SELECT 이름, 학번, 교실 FROM 학생 WHERE 이름 = ‘GILDONG’;

        - WHERE 절에서 날짜 데이터의 경우: 작은 따옴표
            - ```sql
SELECT 이름
FROM 사원
WHERE 입사일 = '17. FEB. 96';
        - 대소문자 구분 안함
        - 검색 형식 다르게 하면 검색 안됨
        - 날짜 데이터 문자열 형식의 입력 조건: 'DD-MM-YY'
    - 비교
        - =, <>/!=/^, <, <=, >, >=
    - 범위
        - BETWEEN
    - 집합
        - IN
        - NOT IN
    - 패턴
        - LIKE
    - 복합조건
        - AND
        - OR
        - NOT
    - 와일드 문자
        - +: 문자열 연결
        - %: 0개 이상의 문자열과 일치
        - []: N개 이상의 문자와 일치
        - [^]: 1개 이상의 문자와 불일치
        - _: 1개의 문자와 일
- INSERT 명령어
    - 데이터의 내용을 삽입할 때 사용하는 명령어
    - 속성명 데이터 개수, 데이터 타입이 일치해야 함
    - 속성명 생략 가능
    - ```sql

INSERT INTO 테이블명(속성명1, …) VALUE(데이터1, …);

    - UPDATE 명령
        - 데이터의 내용을 변경할 때 사용하는 명령어
        - UPDATE 명령문을 WHERE 절을 통해 어떤 조건이 만족할 경우에만 특정 컬럼의 값을 수정하는 용도로 자주 사용됨
        - ```sql
UPDATE 테이블명
SET 속성명 = 데이터, ...
WHERE 조건;
- DELETE 명령
    - 데이터의 내용을 삭제할 때 사용하는 명령어
    - ```sql

DELETE FROM 테이블명 WHERE 조건;

- 조인
    - 조인은 두개 이상의 테이블을 연결하여 데이터를 검색하는 방법
    - 논리적 조인
        - 내부 조인
            - [Aliases](~/Aliases.md) Aliases
                - Inner Join
            - 공통 존재 컬럼의 값이 같은 경우 추출하는 기법
            - ```sql
SELECT A. 컬럼1, A. 컬럼2 ... , B. 컬럼1, B.컬럼2 ...
FROM 테이블 1A [INNER] JOIN 테이블 2 ㅠ ON 조인 조건
[WHERE 검색 조건];
    - 외부 조인
        - [Aliases](~/Aliases.md) Aliases
            - Outer Join
        - 외부 조인의 종류로는 왼쪽 외부 조인, 오른쪽 외부 조인, 완전 외부 조인
    - 교차 조인
        - [Aliases](~/Aliases.md) Aliases
            - Cross Join
        - 조인 조건이 없는 모든 데이터 포함을 추출하는 기법
    - 셀프 조인
        - [Aliases](~/Aliases.md) Aliases
            - Self Join
        - 자기 자신에게 별칭을 지정한 후 다시 조인하는 기법
- 물리적 조인
    - Nested-Loop
        - [Aliases](~/Aliases.md) Aliases
            - 중첩 반복 조인
        - 2개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 상대방 ROW를 결합하여 원하는 결과를 조합하는 조인 방식
    - Sort-Merge
        - [Aliases](~/Aliases.md) Aliases
            - 정렬 합병 조인
        - 조인의 대상 범위가 넓을 경우 발생하는 임의 접근을 줄이기 위한 경우나 연결 고리에 마땅한 인덱스가 존재하지 않을 경우 해결하기 위한 조인 방식
    - Hash
        - [Aliases](~/Aliases.md) Aliases
            - 해시 조인
        - 해시 조인은 해싱 함수를 활용하여 테이블간 조인을 수행하는 방
  • 서브 쿼리
    • 서브 쿼리는 SQL 문 안에 포함된 또 다른 SQL문을 의미
    • 유형
      • SELECT절 서브 쿼리
        • 서브쿼리가 SELECT 절 안에 들어가 있는 형태
        • 스칼라 서브 쿼리라고도 불림
        • SELECT 절에 오는 서브쿼리는 반드시 단일 행을 리턴해야 함
      • FROM절 서브 쿼리
        • 서브쿼리가 FROM 절 안에 들어있는 형태
        • 인라인 뷰라고도 불림
        • 뷰 처럼 결과가 동적으로 생성된 테이블 형태로 사용할 수 있음
      • WHERE절 서브 쿼리
        • 서브쿼리가 WHERE절 안에 들어있는 형태
        • 중첩 서브쿼리라고도 불림
  • 집합 연산자
    • 두개 이상의 테이블에서 여러개의 질의의 결과를 연결하여 하나로 결합하는 연산자
    • 유형
      • UNION
        • 중복행이 제거된 쿼리 결과 집합
        • 중복레코드 제외
      • UNION ALL
        • 중복행이 제거되지 않은 쿼리 결과 집합
        • 중복레코드 허용
      • INTERSECT
        • 두 쿼리 결과에 공통적으로 존재하는 집합
        • 중복 레코드만 포함
      • MINUS
        • 첫 쿼리에 있고 두 번째에는 없는 집합
        • 비교 레코드 제