[SQLD] 2파트 SQL 기본 및 활용 - SQL 기본 학습

    본 포스팅은

    BDA 빅데이터분석학회 SQLD 스터디 학습내용입니다. 

     

    [2024 이기적 SQL 개발자 이론서+기출문제]

    서적과 강의를 바탕으로 서술한 내용임을 밝힙니다.

     


     

    01. 관계형 데이터베이스 개요

    • 데이터베이스(DataBase, DB): 데이터를 일정한 형태로 저장해 놓은 것
    • 데이터베이스 관리시스템(DataBase Management System, DBMS): 기존 데이터베이스 기능에 추가로 데이터 손상을 방지 및 복구, 인증된 사용자만 접근 등 추가 기능을 지원하는 관리 시스템
    • 관계형 DBMS(Relational DBMS, RDBMS): 테이블로 데이터를 관리하고 테이블간 관계를 이용해 데이터를 정의하는 방식으로 대부분의 기업이 사용하며 지금도 공부하는 Oracle도 RDBMS 중 하나
    • 테이블(Table): RDBMS에서 실제 데이터가 저장된 조회되는 2차원 배열 형태의 저장소 공간. 엔티티, 속성, 인스턴스가 각각 DB가 이해할 수 있는 형태인 테이블, 칼럼, 튜플로 변경된 것

    SQL(Structured Query Language)

    :RDBMS에서 데이터 정의, 조작, 조회, 제어 등을 하기 위해 사용하는 언어

    DDL(Data Definition Language, 데이터 정의어) CREATE, ALTER, DROP, RENAME, TRUNCATE
    DML(Data Manipulation Language, 데이터 조작어) SELECT, INSERT, UPDATE, DELETE, MERGE
    DCL(Data Conrol Language, 데이터 제의어) GRANT, REVOKE
    TCL(Transaction Control Language, 트랜잭션 제의어) COMMIT, ROLLBACK, SAVEPOINT

    일반집합연산자와 순수관계연산자

    일반집합연산자 종류 순수관계연산자 종류
    UNION UNION 으로 구현 SELETE 쿼리에서 WHERE 로 구현
    INTERSECTION INTERSECT 로 구현 PROJECT 쿼리에서 SELETE 로 구현
    DIFFERENCE MINUS 로 구현 (NATURAL) JOIN 쿼리에서 조인으로 구현
    PRODUCT 카티션곱(조인)으로 구현 DIVIED 현재 사용 X

    SELETE

    :테이블에서 원하는 데이터를 조회할 때 사용하는 문법

    SELECT CUST_ID, CUST_NAME, BIRTH_DY
    FROM TB_CUST
    WHERE MONEY = 10000;
    1. TB_CUST 테이블에서(FROM) 데이터를 가져오겠습니다.
    2. TB_CUST 테이블에서 MONEY (보유금액) 이 10000 인 튜플(행)만 가져오겠습니다.
    3. 출력되는 튜플(행)에 대해 CUST_ID, CUST_NAME, BIRTH_DY 컬럼(열)만 가져오겠습니다.

    SELETE * FROM TB_PRD;

    :TB_PRD 테이블의 모든 칼럼 정보를 출력합니다.

    *(애스터리스크)는 SELETE 뒤에 사용되며 테이블 내의 모든 칼럼 정보를 출력

    SELETE DISTINCT PRD_TYPE FROM TB_PRD;

    :TB_PRD 테이블의 PRD_TYPE 칼럼을 기준으로 값을 중복없이 출력

    DISTINCT는 SELETE 뒤, 칼럼 앞에 사용되며 해당 칼럼 정보에 대해 중복을 제거

    AS

    :SELETE 부분에서 출력하려는 칼럼에 대해 새로운 별명(ALIAS)를 부여

    1. 띄어쓰기 불가
    2. 문자로 시작
    3. 예약어 불가
    4. 특수문자는 $ _ #만 가능

    02. 함수

    함수: 입력 값을 넣어 특정한 기능을 통해 결과 값을 출력

    내장형(built-in) 함수

    : 미리 만들어 놓은 함수

    1. 문자형 함수: UPPER, SUBSTR, TRIM, REPLACE

    - 입력 값: 문자형 리터럴 1개 혹은 문자형 컬럼

    - 출력 값: 문자형 리터럴 1개

    UPPER: 입력받은 문자열에서 소문자를 대문자로 바꿔준다.

    SUBSTR: 입력받은 문자형 리터럴에서 시작위치에서 길이만큼 잘라낸다.

    TRIM: 입력받은 문자형 리터럴에서 양 끝의 공백을 제거한다.

    2. 숫자형 함수: MOD, ROUND

    - 입력 값: 숫자형 리터럴 2개(실수, 소수점자릿수)

    - 출력 값: 숫자형 리터럴 값

    ROUND: 실수를 소수점 자릿수까지 반올림한 결과를 출력한다.

    3. 날짜형 함수: SYSDATE

    SYSDATE: 입력시 바로 출력되며, 현재 시간을 초단위까지 날짜형 리터럴로 출력

     

    연산을 하기 전에 형변환이 발생한다.

    형 변환 우선 순위: 날짜형 > 숫자형 > 문자형

    NULL은 정상적인 산술, 비교 연산 등이 불가능

    NULL함수: NULL값을 대체할 수 있는 함수 → NVL, DECODE

    NVL(data1, data2): data1에 NULL 값이 들어오면 data2를 출력하고 NULL이 아니면 data1을 출력

    DECODE(data1, data2, data3, data4, ...): data1과 data2이 동일하면 data3을 출력하고, 그렇지 않으면 data4를 출력

    댓글