[F-Lab 66해빗 페이백 챌린지 ]

[F-Lab 페이백 모각코 54일차] (SQL) SQL 기본

everydeveloper 2023. 9. 9. 23:31

관계형 데이터베이스 개요

  • 데이터베이스: 데이터를 저장하고 관리하는 시스템입니다.
  • 관계형 데이터베이스: 데이터를 행과 열의 테이블 형태로 저장하는 데이터베이스입니다.
  • Table: 데이터를 저장하는 가장 기본적인 단위입니다. 열과 행으로 이루어져 있습니다.
  • SQL (Structured Query Language): 관계형 데이터베이스에서 데이터를 검색, 수정 및 처리할 때 사용하는 언어입니다.

SELECT 문

  • SELECT: 데이터베이스에서 데이터를 검색할 때 사용하는 명령어입니다.
  • 산술 연산자: SELECT 문에서 덧셈, 뺄셈, 곱셈, 나눗셈 등의 수학 연산을 수행할 때 사용하는 연산자입니다.
  • 합성 연산자: SELECT 문에서 여러 개의 열을 하나로 합치거나, 문자열을 연결할 때 사용하는 연산자입니다.

함수

  • CHR (ASC|| 코드): ASCII 코드를 문자로 변환합니다.
  • LOWER (문자열): 문자열을 모두 소문자로 변환합니다.
  • UPPER (문자열): 문자열을 모두 대문자로 변환합니다.
  • LTRIM (문자열 [, 특정 문자]): 문자열의 왼쪽에 있는 특정 문자를 제거합니다. 특정 문자를 생략하면 공백을 제거합니다.
  • RTRIM(문자열 [, 특정 문자]): 문자열의 오른쪽에 있는 특정 문자를 제거합니다. 특정 문자를 생략하면 공백을 제거합니다.
  • TRIM ([위치]) [특정 문자] [FROM] 문자열 ): 문자열 앞뒤에 있는 특정 문자를 제거합니다. [위치]는 생략 가능하며, 생략하면 공백을 제거합니다.
  • SUBSTR (문자열, 시작점 [, 길이]): 문자열에서 시작점부터 길이만큼의 문자열을 반환합니다. 길이를 생략하면 시작점부터 끝까지의 문자열을 반환합니다.
  • LENGTH (문자열): 문자열의 길이를 반환합니다.
  • REPLACE (문자열, 변경 전 문자열 [, 변경 후 문자열]): 문자열에서 변경 전 문자열을 찾아 변경 후 문자열로 교체합니다. 변경 후 문자열은 생략 가능합니다.
  • 숫자 함수
    • ABS (수): 수의 절댓값을 반환합니다.
    • SIGN (수): 수가 양수이면 1, 음수이면 -1, 0이면 0을 반환합니다.
    • ROUND (수 [, 자릿수]): 수를 반올림합니다. 자릿수를 생략하면 기본값으로 0이 입력됩니다.
    • TRUNC (수 [, 자릿수]): 수를 버림합니다. 자릿수를 생략하면 기본값으로 0이 입력됩니다.
    • CEIL(수): 수보다 크거나 같은 최소 정수를 반환합니다.
    • FLOOR (수): 수보다 작거나 같은 최대 정수를 반환합니다.
    • MOD(수1, 수2): 수1을 수2로 나눈 나머지를 반환합니다.

NULL 관련 함수

  • NVL(인수1, 인수2): 인수1이 NULL인 경우 인수2를 반환합니다.
  • NULLIF (인수1, 인수2): 인수1과 인수2가 같은 경우 NULL을 반환하고, 서로 다른 경우 인수1을 반환합니다.
  • COALESCE (인수1, 인수2, 인수3 …): NULL이 아닌 첫 번째 인수를 반환합니다.

각 함수는 SQL 기본 강의에서 자세히 다루고 있습니다.날짜 함수

  • SYSDATE: 현재 날짜와 시간을 반환합니다.
  • EXTRACT(특정 단위 FROM 날짜 데이터): 날짜 데이터에서 특정 단위의 값을 추출합니다.
  • ADD_MONTHS (날짜 데이터, 특정 개월 수): 날짜 데이터에 특정 개월 수를 더합니다.

변환 함수

  • 명시적 형변환과 암시적 형변환: 데이터 타입을 변환하는 방법입니다. 명시적 형변환은 변환 함수를 사용하여 직접 데이터 타입을 변환하는 것이고, 암시적 형변환은 데이터 연산 시 자동으로 데이터 타입을 변환하는 것입니다.
  • 명시적 형변환에 쓰이는 함수: TO_CHAR, TO_NUMBER, TO_DATE, TO_TIMESTAMP 등이 있습니다.

NULL 관련 함수

  • NVL(인수1, 인수2): 인수1이 NULL인 경우 인수2를 반환합니다.
  • NULLIF (인수1, 인수2): 인수1과 인수2가 같은 경우 NULL을 반환하고, 서로 다른 경우 인수1을 반환합니다.
  • COALESCE (인수1, 인수2, 인수3 …): NULL이 아닌 첫 번째 인수를 반환합니다.

각 함수의 개념과 사용 방법은 SQL 기본 강의에서 자세히 다루고 있습니다.

CASE

WHERE 절

  • 비교 연산자: 두 피연산자를 비교하는 연산자로, 주로 WHERE 절에서 사용된다. 비교 연산자에는 =, <>, >, >=, <, <= 등이 있다.
  • 부정 비교 연산자: 비교 연산자의 결과를 부정하는 연산자로, != 또는 <>로 표현된다.
  • SQL 연산자: LIKE, IN, BETWEEN 등의 연산자로, WHERE 절에서 복수의 값을 처리할 때 사용한다.
    • LIKE: 문자열 패턴 매칭 연산자로, %와 _를 사용해서 와일드 카드를 처리한다.
    • IN: WHERE 절에서 복수의 값을 선택할 때 사용하는 연산자로, OR로 연결된 여러 개의 비교식을 대체할 수 있다.
    • BETWEEN: BETWEEN A AND B 형태로 사용되며, A와 B 사이의 값에 대해서 참인지 거짓인지 판별하는 연산자이다.
  • 부정 SQL 연산자: NOT LIKE, NOT IN, NOT BETWEEN 등으로, 해당 연산자의 결과를 부정하는 연산자이다.
  • 논리 연산자: AND, OR, NOT으로, WHERE 절에서 여러 개의 비교식을 조합할 때 사용한다.

GROUP BY, HAVING 절

GROUP BY

  • GROUP BY는 데이터를 그룹으로 분류할 때 사용하는 절입니다.
  • GROUP BY 절은 SELECT 문에서 집계 함수와 함께 사용합니다.
  • GROUP BY 절은 집계 함수가 적용될 그룹을 지정합니다.

집계 함수

  • COUNT: 그룹 내의 행 수를 반환합니다.
  • SUM: 그룹 내의 값을 합산합니다.
  • AVG: 그룹 내의 값의 평균을 반환합니다.
  • MAX: 그룹 내의 최대 값을 반환합니다.
  • MIN: 그룹 내의 최소 값을 반환합니다.

HAVING

  • HAVING 절은 GROUP BY 절에서 그룹화한 집계 결과를 필터링할 때 사용합니다.
  • HAVING 절은 WHERE 절과 유사하지만, WHERE 절은 개별 행을 필터링하고, HAVING 절은 그룹을 필터링합니다.
  • HAVING 절에서는 집계 함수를 사용할 수 있습니다.

ORDER BY 절

  • ORDER BY
  • ORDER BY 절은 SELECT 문에서 결과 집합을 정렬하여 반환하는 데 사용됩니다. ORDER BY 절에는 정렬 기준이 될 하나 이상의 열이 포함됩니다. 이 절은 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 수 있습니다. 만약 ORDER BY 절에 복수의 열이 지정될 경우, 첫 번째 열을 기준으로 오름차순으로 정렬하고, 첫 번째 열 값이 같을 경우 두 번째 열을 기준으로 정렬하며, 이와 같은 방식으로 정렬이 이루어집니다.

JOIN

  • JOIN이란?
  • 둘 이상의 테이블에서 데이터를 검색하려면 테이블을 결합하여 하나의 결과 집합으로 만들어야 합니다. SQL에서 JOIN은 이러한 테이블을 결합하는 방법입니다.
  • EQUI JOIN
  • 두 테이블에서 일치하는 값을 가진 열에 대해 데이터를 결합하는 방법으로, 두 테이블에서 일치하는 값만 출력됩니다.
  • Non EQUI JOIN
  • 비교 연산자를 사용하여 두 테이블을 결합하는 방법으로, 일치하지 않는 값을 포함하여 출력할 수 있습니다.
  • 3개 이상 TABLE JOIN
  • 세 개 이상의 테이블을 결합하는 방법으로, 두 개의 JOIN을 사용하여 구현할 수 있습니다.
  • OUTER JOIN
    • LEFT OUTER JOIN: 왼쪽 테이블의 모든 행을 출력하면서, 오른쪽 테이블과 일치하는 값을 포함합니다.
    • RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행을 출력하면서, 왼쪽 테이블과 일치하는 값을 포함합니다.
    • FULL OUTER JOIN: 양쪽 테이블의 모든 행을 출력하면서, 일치하는 값과 일치하지 않는 값을 모두 포함합니다.
  • INNER JOIN과 유사하지만, 일치하지 않는 값도 출력됩니다. OUTER JOIN은 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN으로 구분됩니다.

STANDARD JOIN

  • INNER JOIN: 두 개 이상의 테이블에서 공통된 값을 가진 열에 대해 데이터를 결합하는 방법으로, 두 테이블에서 일치하는 값만 출력된다.
  • OUTER JOIN: INNER JOIN과 유사하지만, 일치하는 값 뿐만 아니라 일치하지 않는 값도 출력된다.
    • LEFT OUTER JOIN: 왼쪽 테이블의 모든 행을 출력하면서, 오른쪽 테이블과 일치하는 값을 포함한다.
    • RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행을 출력하면서, 왼쪽 테이블과 일치하는 값을 포함한다.
    • FULL OUTER JOIN: 양쪽 테이블의 모든 행을 출력하면서, 일치하는 값과 일치하지 않는 값을 모두 포함한다.
  • NATURAL JOIN: 두 개 이상의 테이블에서 동일한 이름을 가진 열을 찾아서 JOIN하는 방법으로, 중복된 열은 하나만 출력된다.
  • CROSS JOIN: 두 개 이상의 테이블에서 모든 행에 대해 JOIN하는 방법으로, Cartesian Product라고도 한다.