SQLD - 2과목 sql 기본 및 활용

랄라콥스·2025년 1월 20일

*헷갈리는 내용 위주로 정리

테이블

-> 하나의 소유자를 반드시 가져야함
-> 소유자가 다를 경우 같은 이름의 테이블 생성 가능

데이터 무결성 종류 => 총 6가지

  1. 개체 무결성
    : PK값은 NULL이나 중복값 될 수 없음
  2. 참조 무결성
    : FK는 NULL이거나 참조 테이블에 있는 값이어야함
  3. 도메인 무결성
    : 정의된 도메인에 속한 값이어야함
  4. NULL 무결성
    : 특정 속성은 NULL을 허용하지 않으면, NULL이 있을 수 없음
  5. 고유 무결성
    : 특정 속성에 대해 중복을 허용하지 않음
  6. 키 무결성
    : 관계를 거지고 있다면, 그 관계를 나태내는 key가 있음

SQL 종류

  1. DDL: definition
    -> autocommit: 실행시 되돌릴 수 없음
    ex) create, alter, drop, truncate(테이블 구조는 남기고, 모든 값 삭제)
    구조 변경
  2. DML: manipulation
    ex) insert, delete, update, merge
  3. DCL: control
    어떻게 control? => 권한으로
    ex) grant, revoke
  4. TCL: transaction control
    ex) commit, rollback
  5. DQL: query
    ex) select

MERGE 예시

MERGE INTO 대상테이블 AS target
USING 원본
테이블 AS source
ON[조건]
WHEN MATCHED THEN -- 조건에 맞는 경우 업데이트
       UPDATE SET target.컬럼 = source.컬럼
WHEN NOT MATCHED THEN -- 조건에 맞지 않는 경우 삽입
       INSERT (컬럼1, 컬럼2, ...)
       VALUES (source.컬럼1, source.컬럼2, ...);

insert 시켜도 되는거 아닌가?
-> merge는 조건을 걸어서 데이터의 insert, update, delete 등을 한번에 할 수 있음

select절

별칭 사용시 주의점
""사용해야하는 경우
1. 특수기호(_제외)
2. 공백
3. 그대로 전달 -> 대소문자 등

from절

oracle에서는 생략 불가 -> 의미상 필요 없는 경우 dual 사용 => 더미 테이블
if 별칭 설정했는데, select절에서 원래의 이름으로 선언시 에러 발생

select와 from의 별칭

  • select는 column 이름을 칭하고,
  • from은 table의 이름을 칭한다.

문자열 함수

SUBSTR(대상, m, n)
return: 문자열

문자열 중 m 위치에서 n개의 문자열 추출

주의사항
1부터 위치 시작!!!!

예제
1.

SUBSTR('ABCDE', 2, 3) 

결과값: BCD


2.

SUBSTR('ABCDE', 2) 

결과값: BCDE


3.

SUBSTR('ABCDE', -4, 3) 

결과값: BCD
=> -4 : 뒤에서 4번째 자리부터~

INSTR(대상, 찾을 문자열, m, n)
return: 위치

예제
1.

INSTR('A#B#C#', '#')

결과값: 2


2.

INSTR('A#B#C#', '#', 3, 2)

결과값: 6 => 두번째 #의 위치 return


3.

INSTR('A#B#C#', '#', -3, 2)

결과값: 2 => -3이 있어서 찾는 방향이 왼쪽으로 바뀜

REPLACE(대상, 찾을 문자열, 바꿀 문자열)
TRANSLATE(대상, 찾을 문자열, 바꿀 문자열)

=> replace: 문자열 치환
translate: 1:1 번역!!

숫자형 함수

FLOOR : 작거나 같은 최대 정수
CEIL: 크거나 같은 최소 정수
ROUND: 반올림
TRUNC: 버림

그룹함수

NULL값 제외하고 계산

일반함수

DECODE(대상, 값1, 리턴1, ...)

NVL(대상, 치환값) : 대상이 null값이면 치환
NVL2(대상, 치환값1, 치환값2) : 대상이 null이면 값2, 아니면 값1

COALESCE(대상1, 대상2, ...): 대상 중 null이 아닌 값 return

예제

SELECT div, COALESCE(div, 0) FROM table_a;
divCOALESCE(div, 0)
11
NULL0
44

ISNULL(대상, 치환값)
: 대상이 null이면 치환

NULLIF(대상1, 대상2)
: 대상1 == 대상2 null, 다르면 대상1값 return

CASE => END AS 필요

동일 대상에 대해 =로 표시하는 부분이 반복된다면
CASE WHEN 대상 = 조건 => CASE 대상 WHEN 조건


공부하면서 드는 생각은...이걸 어떻게 다 외우지 싶다...

profile
일단 책을 피자

0개의 댓글