SQL

SQLD 필수 개념 요약 정리 / 벼락치기, 독학, 요약본

Jerry_K 2024. 8. 21. 22:21

 

SQL은 비절차적 언어로, 

절차적 언어 (JAVE,C 등등)과는 다르다.

 

SQLD에서 나오는 핵심 개념들은 요약정리 해보자 🐸

(최소한 이것만은 외우고 가자는 마인드 !)

 

처음보는 용어이면, 익숙해지고

한번 봤던 용어면 상기하며 외워보자🧐

 

빠르게 핵심만 공부해서 벼락치기로 합격까지 !! 


📌모델링 

1. 현실 세계 데이터를 약속된 표기법으로 표현

2. 가시화, 명세화 필요 

3. 데이터 분석하여 추상화 (단순화,요약)

 

모델링은 시스템 분석 + 업무 분석 + 업무 형상화 등을 위해 진행된다.

또한 명칭은 복합명사를 사용하여 유일성을 확보한다.

 

📌모델링의 특징

1. 추상화

2. 단순화 

3. 명확화

   

📌모델링 시 유의사항 

1. 중복 최소화

2. 비유연성 최소화 

3. 비일관성 최소화

 

(중복,비유연성,비일관성 되게 하지 말자 !)

 

스키마와 프로세스는 최대한 느슨하게 결합해야 시스템 유지보수성을 높힘 !

 

📌모델링 단계

1. 념적 데이터 모델링 :  

- 포괄적인 수준에서 모델링을 수행

- 엔터티,속성 도출

 

2. 리적 데이터 모델링 :

- 키,속성,관계 등 표현 

- 정규화로 중복 데이터 최소화

- 높은 재사용성 

 

3.리적 데이터 모델링 :

특정 DBMS에 맞 춰 구현 가능 수준 

 

(추상화 수준 : 개념적 > 논리적 > 물리적)

(구체화 수준 : 개념적 < 논리적 < 물리적)

 

개논물 개논물 !! 

 

📌 모델링의 관점 

1. 데이터 관점

2. 프로세스 관점

3. 데이터와 프로세스의 상관 관점

 

📌 ERD 순서 

엔터티 도출 → 엔터티 배치 → 엔터티 관계 설정 → 엔터티 관계명 기술 

 

엔터티 배치할 때 중요한 엔터티를 좌측 상단에 배치


📌스키마 :

DB 구조와 제약조건에 관해 전박적인 명세 기술

 

📌스키마 구조

1. 외부 스키마 : 

- 외부 단계에서 사용자에게 필요한 DB 정의 

- 한 DB에 여러 개의 외부스키마 존재 가능 

- 하나의 외부스키마 공용 가능 

- 서로 다른 관점을 정의할 수 있음 

 

2. 개념 스키마 :

- 통합 뷰 / 전체적인 뷰 (조직체 전체를 관장하는 입장)

- DB의 전체적인 논리적 구조

- DBA(데이터베이스 관리자)에 의해 구성

- DB 당 하나만 존재

 

통합이라는 단어가 나오면 자동으로 개념 스키마 ! 

 

3. 내부 스키마 :

- DB의 물리적 저장구조 정의

- 시스템 설계자 (개발자) 관점의 스키마

 

외개내 외개내  !! 


 

📌엔터티 :

- 데이터 베이스 구성 요소 중 독립적으로 식별 가능한 객체

ex) 회원 엔티티 : 회원명, 회원 구분 코드 , 주소

 

📌엔터티의 특징 

1. 업무에 필요로 하는 정보여야 함

2. 식별 가능하도록 유일한 식별자 필요

3. 인스턴스가 두개 이상인 집합 이뤄야 함 

4. 하위 요소로 반드시 속성 필요

5. 다른 엔터티와 한개 이상의 관계를 가져야 함

 

(인덱스 최적화 경우 equal, 부등호 순으로 생각 !)

 

📌발생 시점에 따른 엔터티 유형

1. 기본 엔터티 : 

고유한 주식별자를 가지고 있음

 

2. 중심 엔터티 : 

기본 엔터티 상속 받아 중심적인 역할

 

3. 행위 엔터티 : 

- 자주 내용이 바뀌거나 데이터량이 증가

- 분석 초기 단계에서는 잘 나타나지 않음

 

📌인스턴스 :

정의된 스키마에 따라 DB에 실제로 저장된 값

 

📌속성 

1. 엔터티에 대한 자세하고 구체적인 정보

2. 의미상 분리되지 않는 최소의 데이터 단위

3. 꼭 필요한 것 위주로 최소화 필요

 

📌속성 값 :

각각의 속성은 하나의 속성만을 지님

 

📌속성 특성 분류

1. 기본 속성 : 본래부터 가져야 하는 속성

2. 설계 속성 : 설계에 본래부터 가진 속성은 아니지만 필요에 의해 도출 

3. 파생 속성 : 다른 속성으로부터 계산되거나 변형되어 만들어짐

 

📌속성 구성방식에 따른 분류

1. PK

2. FK

3. 일반 속성

 

- 한개의 엔터티두개 이상의 인스턴스를 가진다,
- 한개의 엔터티두개 이상의 속성을 가진다.
- 한개의 속성한개의 속성값만 가진다. 

 

📌도메인 :

속성이 가질 수 있는 값의 범위 (데이터 타입, 크기 등의 조건)

 

📌 관계

- 엔터티 간의 관련성을 의미

 

📌 관계의 표기법 

1. 관계 명 :

동사로부터는 관계명사로부터는 엔터티를 도출

 

2. 관계 차수

 

3. 관계 선택 사양

 

관계 표기법 3개 (관계 명, 차수, 선택 사양)을 기억하자 !  

 

보통 문제에서는 ERD 표기를 IE 표기법으로 한다.


📌 식별자

1. 대표성

- 주식별자  :

유일성, 속성 최소의 수, 자주 변하지 않는 것, 반드시 값 존재

- 보조 식별자

 

2. 스스로 생성 여부

- 내부 식별자

- 외부 식별자 : 타 엔터티로 부터 받아오는 식별자

 

3. 속성의 수

- 단일 식별자

- 복합 식별자

 

5. 대체 여부

- 본질 식별자 : 업무에 의해 생성 / 비즈니스 프로세스에의해서 생성

- 인조 식별자  

(인조 식별자는 꼭 필요한 경우에만 사용)

 

📌식별자 관계 :

1. 엔터티간의 강한 연결 관계 표현

2. ERD에서 실선 표현

3. 부모 엔터티 인스턴스 소멸 시 자식 엔터티 인스턴스 같이 소멸

4. 조인 최소화를 위해서는 식별자 관계로 연결

 

📌비식별자 관계 :

1. 엔터티 간의 약한 연결 관계

2. ERD에서 점선 표현

3. 부모 엔터티 인스턴스 참 값이 없어도, 자식 엔터티 인스턴스 생성 될 수 있을 때 적합.

 

PK가 식별자로 들어가는지, 일반 속성으로 들어가는지를 확인 해준다.

 

📌키 종류 :

1. 슈퍼키

- 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합

- 유일성을 만족하는 것 

- 고유한 데이터 속성

 

2. 후보키 :

- 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합

 

3. 기본키 :

- 후보키 중 하나를 기본키로 선택

- DB에서 고유하게 식별하는 용도로 기본키 사용

 

4. 대체키 : 

- 기본키가 아닌 후보키  

 

5. 외래키 :

-  다른 테이블에 있는 기본키 참조 

 


📌정규화 :

DB의 이상현상을 막기위해, 중복최소화와 테이블을 보다 잘 조직된 상태로 분해

 

1. 데이터 입력/수정/삭제 성능 향상

 

2. 조인의 횟수가 증가함에 따라 조회 성능 하락 

→ 조회성능이 저하될 경우  반정규화

(반정규화 기법은 파티셔닝 (수직분할) 기억해두기)

 

3. 정보 손실 방지 

 

4. 무결성 보장

 

정규형은 정규화의 결과

 

(보안 관련 사항은 뷰)

 

 

제1 정규화 :

- 하나의 속성이 여러 속성값을 갖거나 하나의 테이블에 유사한 속성이 반복될 떄 이를 별도 테이블로 분리

- 속성의 속성 값이 모두 원자값만으로 구성

 

제 2 정규화 : 

- 일반 속성이 주식별자의 일부에만 종속성을 갖는 부분 함수 종속성 제거

- 기본키에 속하지 않은 속성 모두가 기본키에 완전 함수 종속인 정규형 

- 2차 정규화에서는 1: M 관계 성립

 

제 3 정규화 : 

- 주 식별자가 아닌 일반 속성 간에 함수 종속성이 존재하는 이행 함수종속성 제거

- 주식별자와 관련성이 제일 낮은 정규화 단계

이행함수 :   

학번이 지도교수를 결정하고, 지도교수가 학과를 결정 (A → B → C)


📌슈퍼타입/서브타입 관계 테이블 병합 

1. One to One Type : 

슈퍼타입, 서브타입 테이블들을 각각 개별 테이블로 구성

 

2. Plus Type :

각각의 서브타입에 슈퍼타입을 합하여 슈퍼타입 + 서브타입 테이블로 구성

 

3. Single Type :

전체를 하나의 테이블로 통합

 


📌NULL  :

정해지지 않은 값 (공백과는 다름)

1. 단일행 연산 수행 결과는 NULL

2. 다중행 연산 수행시 행 제외하고 수행

 

(Oracle이든 SQL Server든 NULL은 NULL로 취급)


📌본질(원조) 식별자 :

업무에 존재하는 원래의 식별자

데이터 정확성이 깨지지 않음

 

📌인조(인위) 식별자 :

업무에 존재하지 않으나, 원래 식별자의 복잡합 때문에 인위적으로 만듬

데이터의 중복이 발생할 수도 있고, 별도의 인덱스 생성이 필요하지만, 주식별자를 생성하여 개발 편의성이 향상


📌SQL 구문 실행순서 : 

FROM → WHERE → GROUPBY → HAVING → SELECT → ORDER BY

(외우는 방법 : Fu*k !  왜 구했어)


📌TRIM 함수 :

- LEADING : 앞부분의 문자만 제거

ex) SELECT TRIM (LEADING '가' FROM '가나다라')

 

- TRAILING : 뒷부분의 문자만 제거

ex) SELECT TRIM (TRAILING  '라' FROM '가나다라')

 

- BOTH: 앞,뒷 부분의 문자 제거

ex) SELECT TRIM (BOTH '가' FROM '가나다라가')

 

📌조건문 :

1. DECODE 함수

ex) DECODE(컬럼,조건1,결과1,조건2,결과2, ...)

 

2. CASE WHEN 함수

ex) CASE WHEN 조건식 THEN 반환값  ELSE "" END 

 

- 단순 표현식

ex) CASE "표현1" WHEN "값1" THEN "결과1" ELSE " "  END

 

📌문자열을 다루는 함수 :

1. LTRIM ( = TRIM LEADING)

2. RTRIM ( = TRIM TRAILING)

3. SUBSTR : 일부분만 추출

4. REPLACE : 특정 문자열 교체

ex)

- REPLACE(컬럼,"문자") → "문자" 삭제

- REPLACE(컬럼,"문자1","문자2") → "문자1"을 "문자2"로 대체

5. LENGTH 

6. UPPER (소문자 →  대문자)

7. LOWER (대문자 → 소문자)

 

문자열 타입에서 VARCHAR2는 가변길이, CHAR는 고정길이 이다.

 

📌NULL 관련 함수 :

1. NVL : Null 인 데이터를 특정 값으로 변환

ex) NVL(COMM,0)  : COMM 컬럼에서 Null 값은 0으로 변환

 

2. NULLIF : 특정 값을 Null로 치환

NULLIF 함수의 값들이 같으면 NULL 반환, 다른 경우 첫번째 값 반환 

ex) NULLIF(MGR, 7698) : 7698 값만 Null 값으로

 

3. COALESCE 

COALESCE(A,B,C) : A,B,C 컬럼 순으로 읽어 Null이 아닌 첫 번쨰 값 반환

ex ) COALESCE(NULL,NULL,3 )의 경우 3을 리턴한다.  

 

 

📌기타 함수:

1. NTILE(n) : 전체를 n 등분  

 


📌순수 관계 연산자 :

- SELECT / PROJECT / JOIN / DIVIDE

 

📌연산자 우선 순위 :

산술 (*,/,+,-) → 연결 (||) → 비교 (<,>,<=,>= 등) → IS NULL/LIKE/IN → BETWEEN   → NOT → AND → OR


 

📌WHERE 절 : 

- 특정 조건을 만족하는 행만을 대상으로 연산 수행 

- 집계 함수 사용 불가

- SELECT, UPDATE, DELETE에 사용가능 / INSERT에는 불가능

- NULL과의 동등 / 비교는 IS NULL 또는 IS NOT NULL만 가능

- SELECT 절의 별명 사용 불가능 (WHERE절이 먼저 실행 되기 때문에)

 

📌GROUPBY 절 :

- 특정 값을 기준으로데이터 그룹핑에 사용

- 집계합수 : COUNT, SUM, AVG, MIN, MAX

- 칼럼명 앞에 DISTINCT를 붙히면 중복 제거

 

GROUPBY 한 결과에 대해서 SELECT절에서 SUM(COUNT(*)) 연산을 하게 되면 1건의 결과가 된다.

(이렇게 하면 에러 발생)

 

📌HAVING 절 :

- GROUP BY 연산이 끝난 결과에 HAVING 절에 만족하는 그룹 추출

- WHERE 절 먼저 실행되어 필터링하고 GROUP BY 실행 

- 연산부하가 높아서 WHERE 절 먼저 필터링

- HAVING 절에서는 집계합수 사용가능하나, WHERE절에서는 사용 불가능

- GROUP BY 및 집계 함수를 사용하지 않아도 문장 오류 생기지는 않음

 

📌JOIN 절 :

여러 테이블로 부터 원하는 데이터 조회하기 위해서 최소 N-1만큼의 JOIN 조건 필요

 

1. EQUI JOIN등식을 조건으로 사용 할 때

2. NON EQUI JOIN : 부등식을 사용해 범위를 나타내는 조건

때로는 설계상의 이유로 NON EQUI JOIN 수행 불가능 

 

1. INNER : 교집합으로 존재하는 것만 병합

2. OUTER : 합집합 개념 (LEFT OUTER / RIGHT OUTER / FULL OUTER)

3. NATURAL : 대상이 되는 두 테이블에서 같은 이름 컬럼에 동일한 컬럼 값을 가지는 행

(NATURAL JOIN은 ON 기준키가 필요 없음)

4. CROSS : 각 테이블의 모든 행의 대응을 조합 (M * N) / 카타시안 곱

5. SELF JOIN : 동일한 테이블 내 연관된 두개의 컬럼간에 조인을 수행 

 

JOIN은 서로 다른 스키마 병합 / UNION은 합집합


📌서브쿼리

서브쿼리에서는 자체적인 ORDER BY절을 사용 할 수 없다.

또한, 서브쿼리에서 메인쿼리를 참조 할수 있지만, 반대는 불가능하다.

 

1. 스칼라 서브쿼리 : SELECT문의 칼럼 입력 위치 

칼럼의 수가 1개

 

2. 인라인 뷰 : FROM 절의 테이블 입력 위치

컬럼수가 2개 이상

 

3. 중첨서브쿼리 : WHERE,HAVING 절의 컬럼 또는 테이블 입력 위치 

- 단일행 : 반환 값이 단일 행 (<,<=,>,>= 등 사용 가능)

 

- 다중행 : 반환 값이 다중행 ( IN, ALL, ANY, SOME, EXISTS 사용 가능)

비교 연산자를 단일행에 사용  가능 (역은 불가능)

 

- 다중 컬럼 : 반환 값이 여러 칼럼을 가진 테이블

SQL Server.에서는 현재 지원하지 않는 기능

 

연관 서브쿼리 : 메인쿼리의 칼럼을 서브쿼리에 사용

비연관 서브쿼리 : 메인쿼리 칼럼을 서브쿼리에 사용 안함

주로 메인 쿼리 값 제공을 위해 사용

 

메인쿼리의 결과를 서브쿼리로 제공될 수 있고, 서브쿼리의 결과가 메인쿼리로 제공될 수도 있음

 

 

📌뷰 사용의 장점

1. 독립성 :

- 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않음

 

2. 편리성

- 복잡한 질의를 뷰로 단순하게 작성 가능

 

3. 보안성

- 숨기고 싶은 정보를 뷰 생성 시 해당 칼럼 빼고 생성


📌그룹 함수 :

GROUP BY절의 연산 결과에 대해 그룹별 연산 수행

ex) 집계함수, ROLLUP, CUBE 

 

1. ROLLUP : 컬럼 대상으로 하위 그룹핑 수행

ex) GROUP BY ROLLUP (날짜,이름)  

(날짜,이름)  → 날짜 →  전체 순서로 하위 그룹핑 (ROLLUP은 앞에 것만 신경씀)

 

2. CUBE : 조합 가능한 모든 경우로 그룹핑 

ex) GROUP BY CUBE (날짜,이름)  

(날짜,이름)  → 날짜 → 이름 →  전체 순서로 하위 그룹핑 

 

 ROLLUP과 CUBE의 인자가 1개인 경우 결과가 같음

 

3. GROUPING SETS : 

각 소그룹별 합계만 간단하게 보여줌

 

ex) CUBE(A.부서번호, B.비품코드) 와 GROUPING SETS(A.부서번호, B.비품코드, (A.부서번호, B.비품코드),())와 같음


📌SET OPERATOR:

1. UNION (합집합) :

- UNION 연잔자는 합집합 결과에서 중복된 행을 하나로 만듬

- UNION ALL 연산자는 중복 행도 그대로 결과도 표시

 

2. INTERSECT (교집합)

 

3. MINUS / EXCEPT (차집합


📌GROUPING :

- SELECT 절에 사용되어 소계에 해당하는 행과 그렇지 않은 행 구분

- CASE 문을 사용하여 의미에 맞는 텍스트를 값으로 지정 

- 소계에 해당되는 경우 1 반환, 이외의 경우 0 반환


📌윈도우 함수 : 

OVER 키워드와 함께 사용

1. 순위함수 :

- RANK  ex) 1,2,2,4,4,4,7

 

- DENSE_RANK : ex) 1,2,2,3,3,3

 

- ROW_NUMBER : ex) 1,2,3,4,5

 

2. 집계 함수

→ 집계함수 같은 경우 PARTITION BY 사용

 

- 윈도우 함수는 결과에 대한 함수 처리로 건수가 줄지 않음

- PARTITION BY 절이 없으면 전체 집합을 하나의 Partition으로 정의한 것과 동일

- 윈도우 함수 적용 범위는 Partition을 넘을 수 없다. 

 

📌행 순서함수

- FIRST_VALUE : 파티션별로 그룹핑하여 가장 처음 값 반환

- LAST_VALUE : 파티션별로 그룹핑하여 가장 마지막 값 반환

- LAG : 입력된 인자의 값만큼 이전 행의 값을 반환

- LEAD: 입력된 인자의 값만큼 이후 행의 값을 반환


📌TOP N 쿼리 : 

1. ROWNUM :

- 각행에 순차적 번호 부여 

- 테이블 차례대로 순회하며 값 반환 (중간에 건너뛰기 불가능)

- 조건식 FALSE 되면 순회 멈추고 결과 반환

- ORDER BY를 쓰는 경우 ROWNUM이 꼬여버림 (서브쿼리를 사용해야 함)

 

2. 윈도우 함수의 순위함수

 

TOP WITH TIES 쿼리 :

TOP과 동일하게 상위 N 개의 데이터를 조회하지만, 동일한 데이터가 있을 경우 함께 출력된다.

(ORDER BY 절이 반드시 와야 한다.)


📌계층형 질의 

일단 트리를 그리고 시작하기 ! 

 

ex) 

SELECT * 

FROM EMP

START WITH MGRNO IS NULL 

CONNECT BY PRIOR EMPNO=MGRNO

ORDER SIBLINGS BY EMPNO DESC; 

 

프자부순 (프라이머리 - 자식 - 부모 - 순방향)

프부자역 (프라이머리 - 부모 - 자식 - 역방향)

 

오라클 계층형 질의에서 루트 노드의 LEVEL 값은 1이다.

 

CONNECT BY절에 작성된 조건절은 START WITH절에서 필터링된 시작 데이터 포함

ORDER SIBLING BY절은 전체를 정렬하는게 아닌 같은 레벨의 형제 노드끼리 정렬

 


📌PIVOT : 

- 행을 열로 바꿈

- 데이터를 요약하여 다양한 차원에서 분석

- 사람이 읽기 편하게 만듬

 

📌UNPIVOT : 

- 열을 행으로 바꿈 

- 원본 형식으로 저장하여 상세하게 표현

- 컴퓨터가 읽기 편하게 만듬


📌정규 표현식 

(애플리케이션에서 정규화된 데이터를 SQL에 넘기고, 그 결과에 대해서만 애플리케이션에서 처리하여 DB 간의 의존성을 끊을 수 있다.)

 

1. 메타 문자 

- : 줄 바꿈

- ^ :  ^THE → THE로 (시작하는 문자열)

- $ : ing$ → ing로 (끝나는 문자열)

- . :  a.b → acb,a-b 같이 (임의의 한 문자)

- ? : no? →  n, no (선행 문자 0 또는 1개)

- * : no* →  n,no,noo (선행 문자 0개 이상)

- + : no+ →  no,noo (선행문자 1개 이상)

- | : a|b →  a,b (선택적 일치)

- [ ] : [abc] →  a,b,c 대괄호 (문자열 중 하나 일치)

- [-] :  [a-z] →  a부터 z까지 연속 문자열 범위  (연속 문자열 범위)

- [^] : [^abc] →  a,b,c 제외한 문자 (대괄호 제외한 문자

- (ab) : ab → 묶인 표현식을 한 단위로 취급

 

ex) ^[A-Z].*[0-9]$ : A~Z로 시작 + 임의의 문자 0개 이상 + 0~9로 끝나는 것

→ ABCD123 / A!@#@#9 등등 

 

2. 리터럴 문자 : 문자 그 자체의 의미

 


📌트랜잭션의 특징 (ACID)

1. 원자성 (Atomicity) : 

더 이상 쪼개질 수 없음 

 

2. 일관성 (Consistency) :

트랜잭션의 결과는 데이터의 정합성을 깨지 않음 

(트랜잭션 이전에 DB 문제가 없으면, 트랜잭션 이후도 오류 없음)

 

3. 고립성 (Isolation) :

트랜잭션은 독립적으로 수행되며, 실행 중 간섭하거나 영향을 미치지 않음

 

4. 영속성 (Durability) : 

트랜잭션의 결과는 영구적으로 저장 

 

📌테이블 생성 시 주의사항

1. 테이블명은 가능한 단수형을 권고한다.

2. 컬럼명은 중복되게 지정할 수 없다.

3. 컬럼 뒤에 데이터 유형이 지정되어야 한다.

 


 

📌DCL (Data Control Language)

1. Grant : 특정 사용자에게 특정 작업 수행 권환 부여

2. Revoke : 특정 사용자에게 특정 작업에 대한 수행 권한 박탈

 

📌DML (Date Manipulation Language) : 데이터 조작어

1. Select 

2. Insert

3. Delete

4. Update 

→  DB 사용자와 관리 시스템 간의 인터페이스 제공

 

📌DDL (Date Definition Language) : 데이터 정의어 

1. Create (디폴트 옵션은 NULL)

2. Alter 

3. Drop

4. Truncate  

5. Rename

DB 관리자나 설계자가 사용 

 

DDL 명령어는 자동커밋이 된다

📌TCL (Transaction Control Language) : 트랜잭션 제어어 

1. Commit 

2. Rollback

3. Savepoint 

 

SQL Server에서 DML은 자동 커밋 되므로 BEGING TRANSACTION으로 롤백 가능하게 만든다. 


 

📌DROP vs TRUNCATE vs DELETE 

1. DROP :

- DDL

- 테이블의 스키마까지 삭제

- 자동 커밋 O

- 디스크 공간 릴리스 O

- UNDO 불가능

 

2. TRUNCATE:

- DDL

- 데이터는 삭제하고 스키마는 남김

- 자동 커밋 O

- 디스크 공간 릴리스 O

- UNDO 불가능

 

1. DELETE :

- DDM

- 스키마는 남겨두고 데이터만 삭제

(WHERE 절을 사용하여 특정 행만 삭제 가능)

- 자동 커밋 X

- 디스크 공간 릴리스 X

- UNDO 가능

 

📌참조 무결성 제약 조건 :

데이터 입력,수정,삭제 과정에서 데이터의 일관성이 깨지는 것을 DBMS 차원에서 관리

 

- DELETE / MODIFY ACTION 

1. CASCADE :  부모값 삭제시 자식값도 삭제

2. SET NULL : 부모값 삭제시 자식 해당 칼럼 NULL 값

3. SET DEFAULT : 부모값 삭제시 해당 칼럼 기본값으로 변경

4. RESTRICT : 자식테이블에서 해당 데이터가 PK로 지정되지 않은 경우에만 삭제 및 수정 가능

5. NO ACTION : 제약 조건 위배시 아무런 액션 취하지 않음

 

-INSERT ACTION 

1. AUTOMATIC : 부모 테이블에 PK가 없는 경우 PK 생성후 자식테이블에 값 입력

2. SET NULL : 부모 테이블에 PK가 없는 경우 자식 테이블에 NULL 값 입력

3. SET DEFAULT : 부모 테이블에 PK가 없는 경우 자식 테이블에 기본값 입력

4. DEPENDENT : 부모 테이블에 PK가 존재할때만 자식 테이블에 값 입력

5. NO ACTION : 제약 조건 위배시 아무런 액션 취하지 않음 

 

삽입 명시 안한 경우, 모든 칼럼을 삽입해야 한다. 

 

 


 

이 정도의 개념이면 왠만한 노랭이 문제는 풀어 볼 만하다 ! 

 

쿼리문 중에 어려운 것들이 꽤 많은데,

문제에서 묻고자하는 바를 잘 찾고 너무 어려운 문제는 넘어가자 ...

 

어짜피 이 시험은 60점만 넘기면 되니까, 전략적으로 시험에 접근해보자 😀

 

다들 SQLD 시험 통과하시길 !!!

 

'SQL' 카테고리의 다른 글

RDBMS NoSQL MongoDB  (0) 2024.07.08