본문 바로가기
학습

SQLD 자격증 따기3 - SQL 기본

by 공덕뉸나 2023. 7. 10.

저번 글에는 1과목 정리를 마쳤고 오늘 글부터는 2과목에 대한 정리를 할까 한다.

2과목은 내용이 많으니 나눠서 정리해보려고 한다.

 

SQL 기본 및 활용

SQL 기본

관계형 데이터베이스의 개요

관계형 데이터베이스는 관계형 데이터 모델에 기초를 둔 데이터베이스이다.

관계형 데이터베이스에서의 설계는 모든 데이터를 2차원 테이블 형태로 표현한 뒤 각 테이블 간의 관계를 정의하는 것으로 시작된다.

 

테이블은 데이터모델에서 인스턴스에 해당하는 로우와 속성에 해당하는 컬럼으로 이루어진다.

 

SELECT문

- 저장되어 있는 데이터를 조회하고자 할 때 사용하는 명령어

 

SELECT 컬럼1, 컬럼2, ... FROM 테이블 WHERE 조건;

 

산술연산자 우선순위

() -> * , / -> +, -

 

함수 (암기)

(1) 문자함수

- CHR(ASCII 코드) : ASCII 코드를 인수로 입력했을 때 매핑되는 문자 알려줌

- LOWER(문자열) : 문자열을 소문자로 변환해주는 함수

- UPPER(문자열) : 문자열을 대문자로 변환해주는 함수

- LTRIM(문자열 [, 특정문자]) : 문자열을 왼쪽부터 한 글자씩 특정 문자와 비교하여 포함되어 있으면 제거, 아니면 멈춤

(문자열 없으면 왼쪽 공백제거)

- RTRIM(문자열 [, 특정문자]) : 문자열을 오른쪽부터 한 글자씩 특정 문자와 비교하여 포함되어 있으면 제거, 아니면 멈춤]

(문자열 없으면 오른쪽 공백제거)

- TRIM([위치] [특정문자] [FROM] 문자열) : 옵션이 하나도 없을 경우 문자열의 왼쪽과 오른쪽 공백 제거, 옵션 있을 경우 문자열을 위치로 지정된 곳부터 한 글자씩 특정 문자와 비교하여 같으면 제거하고 같지 않으면 멈춤

- LENGTH(문자열) : 문자열의 길이 반환

- SUBSTR(문자열, 시작점 [, 길이]) : 문자열의 원하는 부분만 잘라서 반환

- REPLACE(문자열, 변경 전 문자열 [, 변경 후 문자열]) : 문자열에서 변경 전 문자열을 찾아 변경 후 문자열로 바꿔줌

 

(2) 숫자함수

- ABS(수) : 수의 절대값 반환

- SIGN(수) : 수의 부호를 반환

- ROUND(수 [, 자릿수]) : 수를 지정된 소수점 자릿수까지 반올림하여 반환

- TRUNC(수 [, 자릿수]) : 수를 지정된 소수점 자릿수까지 버림하여 반환

- CEIL(수) : 소수점 이하의 수를 올림한 정수 반환

- FLOOR(수) :소수점 이하의 수를 버림한 정수를 반환

- MOD(수1, 수2) : 수1을 수2로 나눈 나머지를 반환

 

(3) 날짜 함수

- SYSDATE (= GETDATE())

: 현재의 연, 월, 일, 시, 분, 초를 반환

- EXTRACT(특정단위 FROM 날짜 데이터)

    = DATEPART(특정단위, 날짜 데이터)

: 날짜 데이터에서 특정 단위만을 출력해서 반환

- ADD_MONTHS(날짜 데이터, 특정 개월 수)

    = DATEADD(MONTH, 특정 개월 수, 날짜 데이터)

: 날짜 데이터에서 특정 개월 수를 더한 날짜를 반환

 

(4) 변환 함수

- TO_NUMBER(문자열) : 문자열을 숫자형으로 변환

- TO_CHAR(수 or 날짜 [, 포맷]) : 수나 날짜형의 데이터를 포맷 형식의 문자형으로 변환

- TO_DATE(문자열, 포맷) : 포맷 형식의 문자형의 데이터를 날짜형으로 변환

 

(5) NULL 관련 함수

- NVL(인수2, 인수2)

: 인수1의 값이 NULL일 경우 인수2를 반환하고 NULL이 아닐 경우 인수1을 반환

- NULLIF(인수1, 인수2)

: 인수1과 인수2가 같으면 NULL을 반환하고 같지 않으면 인수1을 반환

- COALESCE(인수1, 인수2, 인수3, ...)

: NULL이 아닌 최초의 인수를 반환

 

WHERE 절

DML문을 수행할 때 원하는 데이터만 골라 수행할 수 있도록 해주는 구문

 

(1) 비교 연산자

- = : 같음

- < : 작음

- <= : 작거나 같음

- > : 큼

- >= : 크거나 같음

 

(2) 부정 비교 연산자

- != : 같지 않음

- ^= : 같지 않음

- <> : 같지 않음

- not 컬럼명 = : 같지 않음

- not 컬럼명 > : 크지 않음

 

(3) SQL 연산자

- BETWEEN A AND B : A와 B의 사이(A,B 포함)

- LIKE '비교 문자열' : 비교 문자열을 포함

- IN (LIST) : LIST 중 하나와 일치

- IS NULL : NULL 값

 

(4) 논리 연산자

- AND : 모든 조건이 TRUE여야 함

- OR : 하나 이상의 조건이 TRUE여야 함

- NOT : TRUE면 FALSE이고 FALSE이면 TRUE

 

논리 연산자 처리 순서

() -> NOT -> AND -> OR

 

GROUP BY, HAVING 절

(1) GROUP BY

: 데이터를 그룹별로 묶을 수 있도록 해주는 절

 

(2) 집계 함수

- COUNT(*) : 전체 row를 count하여 반환

- COUNT(컬럼) : 컬럼값이 Null인 row를 제외하고 count하여 반환

- COUNT(DISTINCT 컬럼) : 컬럼값이 Null이 아닌 row에서 중복을 제거한 count를 반환

- SUM(컬럼) : 컬럼값들의 합계를 반환

- AVG(컬럼) : 컬럼값들의 평균을 반환

- MIN(컬럼) : 컬럼값들의 최소값을 반환

- MAX(컬럼) : 컬럼값들의 최대값을 반환

 

ORDER BY 절

- SELECT 문에서 논리적으로 맨 마지막에 수행됨

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

 

JOIN

- EQUI JOIN : Equal 조건으로 JOIN 하는 것

- Non EQUI JOIN : Equal 조건이 아닌 다른 조건으로 JOIN하는 방식

 

STANDARD JOIN

(1) INNER JOIN : JOIN 조건에 충족하는 데이터만 출력되는 방식

(2) OUTER JOIN 

   - LEFT OUTER JOIN : 왼쪽에 표기된 테이블의 데이터는 무조건 출력되는 JOIN

   - RIGHT OUTER JOIN : 오른쪽에 표기된 테이블의 데이터는 무조건 출력

   - FULL OUTER JOIN : 왼쪽, 오른쪽 테이블의 데이터가 모두 출력 (중복값은 제거)

JOIN되는 데이터가 없는 Row들은 NULL로 출력됨

(3) NATURAL JOIN

두 테이블에서 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우 JOIN

(4) CROSS JOIN

테이블 사이에 JOIN 조건이 없는 경우 조합할 수 있는 모든 경우를 출력

 

여기까지 SQL 기본에 관한 내용 정리였다.

다음에는 SQL 활용에 관한 내용을 다뤄볼까 한다. 망망!