brunch

You can make anything
by writing

C.S.Lewis

by 일단고고 Aug 18. 2024

D-7. SQLD 2과목  이론 정리

DBMS(Database Management System)

- 데이터를 효과적으로 관리하기 위한 시스템

- 예) Oracle, MySQL


데이터베이스

- 데이터의 집합(그냥 모아져 있으면 그것을 데이터 베이스라 칭함, 형식 없어도)


관계형 데이터베이스의 구성

- 계정 : 데이터 접근 제한을 위한 업무별 계정이 있음 (권한 통제 목적/ 조회, 수정 등)

- 테이블 : DBMS의 DB안에서 데이터가 저장되는 형식

- 스키마 : 테이블의 구성을 표현하는 것


테이블 (물리 모델링 = 컬럼)

1. 정의 : 데이터가 저장되는 단위 (엑셀처럼 행과 열의 구성이 있는)

2. 특징

    - 하나의 테이블은 반드시 하나의 계정이 소유해야함(무조건 한명이 있어야함)

    - 테이블 관계는 일대일, 일대다, 다대다의 관계가 있음

    - 테이블 중복할 수 없지만, 소유자가 다르면 가능함(소유자가 다르면 다른 테이블임)

    - 입력/ 삭제는 무조건 행단위로 (가로로!)


SQL 이란

- 관계형 데이터베이스에서 데이터 조회, 조작, 관리기능을 명령하는 언어

- SQL 문법은 대소문자를 구분하지 않음


관계형 데이터베이스 특징

    - 데이터 분류, 정렬, 탐색 속도가 빠름

    - 신뢰성이 높음

    - 기존의 작성된 스키마를 수정하기 어려움(구조변경 어려워)   

    - 데이터베이스 부하 분석 등 성능분석이 어려움(전문가 영역)


데이터 무결성 

1. 정의

    - 데이터의 결점이 없음(정확성, 일관성 있음)

2. 무결성의 정류

    (1) 개체 무결성 : 기본키를 구성하는 컬럼은 null이나 중복값 가질 수 없음

    (2) 참조 무결성 : 외래키(참조키)에는 null 가능한데, 찾조 테이블의 기본키 값과 동일해야함

    (3) 도메인 무결성 : 컬림이 가지는 범위안에 데이터야 한다

    (4) null 무결성 : null 허용안한다면 있으면 안됨

    (5) 고유 무결성 : 중복되지 않아야함

    (6) 키 무결성 : 하나의 관계에는 하나의 키가 존재햐야한다.


ERD

- 테이블간의 상관관계를 그림으로 표현한 것

- 엔터티, 관계, 속성(=컬럼)이 있으며 3가지의 구성으로 모두 표현 가능해야함




SQL의 종류 (기능에 따라 5가지로 나눔/ 때에 따라 4가지로 구분)

1. DDL (Data Definition Language)

    - 데이터 정의하는 것/ 테이블의 구조를 변경하는것

    - 종류 : CREATE, ALTER, DROP, TRUNCATE

    > TRUNCATE : 구조는 유지하고 데이터 지우는 것(오토커밋이기 때문에 DDL임/ DML 아님)


2. DML (Data Manipulation Language)

    - 데이터를 변경하는 것(조작어임)

    - 

    - 종류 : INSERT, DELTE, UPDATE, MERGE


3. DCL (Data Contrl Language)

    - 데이터 컨트롤 (권한 부여 등)

    - 종류 : GRANT(부여), REVOKE(회수)


4. TCL (Transaction Control Language)

    - Transaction을 구성하는 것(데이터 '확정', '취소')을 컨트롤 하는 것

    - 종류 : COMMIT, ROLLBACK


5. DQL (Data Query Language)

    - select는 어디에도 포함되지 않음

    - 종류 : SELECT



[SELECT문 구조]

- 6개 절로 구서됨

- 각 절의 순서대로 작성해야함

- 순서

    > SELECT : *(전체) | 컬럼명 | 표현식 

        - *과 컬럼명은 동시에 사용 불가능함

        - 컬럼명이나, 연산 결과를 작성하는 절

        - 특징 : 별칭 지정 가능(출력할 이름일 지정하기 가능/ 대소문자를 구분하지 않아도 인식함)

        - 출력할 임시 이름을 지정하는 것인데, 원본은 변경되지 않음

        - 별칭에 한글 사용 가능/ 이미 존재하는 말(예약어/ 함수등)은 별칭으로 사용 불가


    > FROM : 데이블명 또는 뷰명

        - 여러개 전달 가능(컴마로 구분) 

        - 조인 조건 없이 테이블명만 나열하면 '카티시안 곱' 발생함 (주의!)

        - 테이블도 별칭 선언가능(*** AS 쓰지 않음 / 주의!!)

          - ORACLE : From절 생략 불가 (의미상 필요없는 경우 DUAL 테이블 선언)

          - MSSQL : FROM절 생략 가능 (예, 오늘 날짜 조회시)


    > WHERE : 조회 조건

        - 조건에 맞는 데이터만 조회하고 싶을 경우 사용

        - 여러 조건 동시에 전달 가능함(AND , or)

        - 연산자를 사용하여 다양하게 표현 가능함

        - 문자나 날짜 상후 표현시에는 반드시 홀따옴표 사용하기!


    > GROUP BY : 그룹핑컬럼명

        - 각행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 것

        - 그룹에 대한 조건은 WHERE 사용 불가

        - 그룹으로 묶으면 결과값은 요약되어서 나옴! (따라서, 요약못하는 값은 결과 안나옴)


    > HAVING : 그룹핑 필터링 조건

        - 그룹 함수 결과를 조건으로 사용할 때 사용


    > ORDER BY : 정렬컬럼명

        - 출력되는 행의 순서를 사용자가 변경하고자 때 사용

        - 오름차순(ASC), 내림차순(DESC) / 기본은 오름차순

        - 복합정렬이란, 먼저 정력한 값에 동일한 결과가 있을 경우 추가 정렬 순서를 제안하는 것



다음의 경우에는 쌍따옴표 사용하기

- 공백 넣고 싶을때 " "

- 별칭에 특수문자를 넣고 싶은 경우(단, 언더바 _는 제외)

- 별칭 그대로 전달할 경우(입력한 대소를 그대로 출력하고 싶을때)



[함수 정의]

1. 정의

- from절을 제외한 모든 절에서 사용 가능


2. 기능

- 데이터의 계산을 수행

- 개별 데이터의 항목을 수정

- 표시할 날짤 및 숫자 형식을 지정

- 열 데이터 유형 변환 


3. 종류

(1) 단일행 : 1:1에 대응되는 하나의 값

(2) 복수행 : 다수가 들어가서 요약된 하나의 값


[조인 (JOIN)]

1. 정의

- 여러 테이블의 데이터를 사용하여 동시 출력하거나 참조할 경우 사용함

- FROM절에 조인할 테이블을 나열함

- N개의 테이블을 조인할 경우 최소 N-1개의 조인 조건이 필요함


2. 조인 종류

(1) 조건의 형태

    - EQUI JOIN(등가 JOIN)

        > 가장 많이 사용하는 조인 방법

        > 조인 조건이 '='비교를 통해 같은 값을 비교해서 묶어주는 것

    - NON EQUI JOIN

        > 비교조건이 =이 아닌 것을 이야기함

        > 특정 조건에 해당하는 값들을 조인할 경우


(2) 조인 결과

    - INNER

        > 조인 조건이 일치하는 행만 추출함(오라클은 조인 기본임)

        > ANSI 표준 : From절에 명시한다(USING 이나 ON 조건을 필수적으로 사용)

    - OUTER

        > 조인조건에서 동일한 값이 없는 행도 반환할 때 사용함

        > 테이블 기준 방향이 어디인지 설정해야함

       


(3) NATURAL JOIN

        > 알아서 조인 컬럼값을 찾아서 조인을 해줌


(4) CROSS JOIN

        > 카타시안곱의 출력이 되는 것들을 이야기함

        > 조인 조건이 없는 경우 생성 가능한 모든 조건의 데이터들을 조합함


(5) SELF JOIN

        > 한 테이블 내 각 행끼리 관계를 갖는 경우 사용하는 조인 기법

        > 테이블명이 중복되기 때문에 반드시 테이블 별칭 사용이 필요함



참고자료1) 홍샘의 데이터랩 / 유튜브채널/ 강의 https://youtu.be/_f_WZYuNr7A?si=KN515CkxPQCg7MTi

매거진의 이전글 D-7. SQLD 1과목  이론 정리(2)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari