728x90

 

27번

VIEW

  1. 독립성 : 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다.
  2. 편리성 : 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있다. 또한 해당 형태의 SQL문을 자주 사용할 때 뷰를 이용하면 편리하게 사용할 수 있다.
  3. 보안성 : 직원의 급여정보와 같이 숨기고 싶은 정보가 존재한다면 해당 칼럼을 빼고 생성함으로써 사용자에게 정보를 감출 수 있다.

 

 

28번

GROUP BY

GROUP BY구의 기본적인 문법을 확인하는 문제

SELECT구에는 GROUP BY절에 있는 칼럼이 나와야 한다.

 

 

29번

교차엔터디(Intersaction Entity)

M:M의 관계를 해소하려는 목적으로 만들어진 엔터티 [ex> M:M -> 1:M]

독립 엔티티[Kernel Entity, Master Entity]
사람, 물건, 장소 등과 같이 현실세계에 존재하는 엔터티

업무중심 엔터티[Transaction Entity]
Transaction이 실행되면서 발생하는 엔터티

종속 엔터티[Dependent Entity]
주로 1차 정규화로 인해 관련 중심엔티티로부터 분리된 엔터티

교차 엔티티[Intersaction Entity]
M:M의 관계를 해소하려는 목적으로 만들어진 엔터티 
ex> M:M -> 1:M

 

 

 

30번

CORRELATED SUB QUERY(상호연관 서브쿼리)

메인쿼리의 값을 서브쿼리에서 주입을 받아서 비교를 하는 것

 메인쿼리의 값을 서브쿼리에서 주입을 받아서 비교를 하는것으로 상호연관 서브쿼리(CORRELATED SUB QUERY) 이다.

SELECT A.EMPNO, A.ENAME
FROM EMP A
WHERE A.EMPNO = (SELECT 1 FROM
EMP_T B WHERE A.EMPNO = B.EMPNO);

서브쿼리에 *(A.EMPNO 값을 매번 가져와서 대입을 해야하므로성능이 매우 좋지않다.)

 

 

 

36번

SUBKPI,MAINKPI

20,10을 각각 대입

0,30을 각각 대입

SUBKPI가 0인건 없고 20인건 있어서 20,10이 TRUE로 WHERE발동

 

 

 

37번

서브쿼리 설명

  1. 서브쿼리에서는 정렬을 수행하기 위해서 내부에 ORDER BY를 사용하지 못한다.
  2. 서브쿼리에 있는 칼럼을 자유롭게 사용할수 없다
  3. 여러 개의 행을 되돌리는 서브쿼리는 다중행 연산자를 사용해야 한다.
  4. EXIST는 TRUE와 FALSE만 되돌린다

 

 

 

38번

TO_DATE(), TO_CHAR()

TO_CHAR() : 날짜/숫자형 데이터를 문자형 데이터로 변경

TO_DATE() : 문자/숫자형 데이터를 날짜형 데이터로 변환

데이트(날ㅉ) 타입을 데이트타입으로 바꾸면 에러남. 그래서 1번 안됨

T0_DATE()로 ‘YYYYMMDD’ 형식 출력가능

 

 

 

39번

FETCH(읽어오기) 위해 해야할 것은

CURSOR OPEN (*CURSOR순서 : 선언 → OPEN → FETCH → CLOSE)

CURSOR(DB의 연결 포인트, 연결점)

  • SQL 커서는 Oracle 서버에서 할당한 전용 메모리 영역에 대한 포인터이다.
  • 질의의 결과로 얻어진 여러 행이 저장된 메모리상의 위치
  • 커서는 SELECT 문의 결과 집합을 처리하는데 사용된다.

 

명시적 커서

사용자가 직접 정의해서 사용하는 커서이고 묵시적(암시적) 커서는 데이터베이스가 내부적으로 사용하는 커서이다.

모든 CURSOR는 사용하기 전에 반드시 선언을 해주어야 한다

 

 

 

42번

NESTED LOOP JOIN

RANDOM ACCESS로 인해 부하가 걸림

 

HASH JOIN

- 조인 컬럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있다.
- 해시 함수를 이용하여 조인을 수행하기 때문에 '='로 수행하는 조인으로 동등 조건에만 사용가능
- 해시 함수가 적용될 때 동일한 값을 항상 같은 값으로 해싱됨이 보장된다.
- HASH JOIN 작업을 수행하기 위해 해시 테이블을 메모리에 생성해야 한다.
- 메모리에 적재할 수 있는 영역의 크기보다 커지면 임시 영역(디스크)에 해시 테이블을 저장한다.
- HASH JOIN을 할 때는 결과 행의 수가 적은 테이블을 선행 테이블로 사용하는 것이 좋다.
- 선행 테이블을 Build input이라 하며, 후행 테이블을 Prove input이라 한다.

 

 

 

43번

2,3차 정규화

 2차 정규화 → 3차 정규화(종속 존재를 분해) 학번,코스코드(FK),평가코드(FK) = 3개

 

 

45번

ROLE

ROLE은 데이터베이스에서 OBJECT(테이블, 프로시저, 뷰) 등의 권한을 묶어서 관리할 수 있다.

 

 

49번

레코드

레코드 = 데이터가 들어가있는 행(ROW)

SQLD39_42 테이블의 COL1 은 {1, 1, 2, 3, 3} 이렇게 5개가 있습니다.COL1 을 하나씩 불러오면

문제 WHERE 조건이 A.COL1 = B.COL1 이므로A.COL1 = 1 일때 B.COL1 = 1 인 레코드 →2개

A.COL1 = 1 일때 B.COL1 = 1 인 레코드 →2개
A.COL1 = 2 일때 B.COL1 = 2 인 레코드 →1개
A.COL1 = 3 일때 B.COL1 = 3 인 레코드 →2개
A.COL1 = 3 일때 B.COL1 = 3 인 레코드 →2개

 

 

 

추천 강의자료

39회 상 : https://www.youtube.com/watch?v=SENIt9GFMV8

39회 하 : https://www.youtube.com/watch?v=9Kgmxr3PCsY&list=PLSiY9ClhS7WnWW6EfWlCz-P1Br3mGjFqw&index=4

 

 

연관 링크

 

 

자료 출처
https://yunamom.tistory.com/265

yurimac님 pdf 정리 자료

https://velog.io/@dongchyeon/오라클Oracle-그룹-함수-ROLLUP-CUBE-GROUPING-등

 

728x90
반응형

'SQL > SQLD 공부노트' 카테고리의 다른 글

[SQL][SQLD] 기출 39회 1~25번  (1) 2022.09.17
[SQL][SQLD] 기출 38회 1~50번  (0) 2022.09.14
[SQL][SQLD] 기출 35회 31~50번  (0) 2022.09.13
[SQL][SQLD] 기출 35회 1~30번  (1) 2022.09.13
[SQL][SQLD] 기출 34회 30~50번  (0) 2022.09.12
728x90

 

1-9번

 

SELECT 1의미

해당 테이블이 가지고 있는 조건을 만족하는 개수의 행만큼 출력

 

릴레이션(관계)

DB에서 정보를 구분하여 저장하는 기본 단위

DB테이블

ERD에서 네모칸 하나가 릴레이션임

 

 

식별자 분류

  • 대표성여부 → 주, 보조
  • 스스로 생성여부 : 내부, 외부
  • 속성의 수 : 단일, 복합
  • 대체여부 : 본질,인조

 

 

ERD 작성순서

  1. 엔터티 그림
  2. 엔터티 배치
  3. 엔터티 관계설정
  4. 관계명 기술
  5. 관계의 참여도 기술
  6. 관계필수여부 기술

 

10번

비즈니스 프로세스에 의하여 만들어지는 식별자로 대체여부로 분리되는 식별자

→ 주식별자

 

식별자 분류

1.대표성여부 분류

주식별자, 보조식별자

  • 주식별자 : 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자, 타 엔터티와 참조관계를 연결O
  • 보조식별자 : 구분자이나 대표성X, 참조관계 연결X

 

2.스스로생성여부

내부식별자, 외부식별자

  • 내부 : 스스로 생성되는 식별자
  • 외부 : 타 엔터티로부터 받아오는 식별자

 

3.속성의 수

단일식별자, 복합식별자

  • 단일 : 하나의 속성으로 구성
  • 복합 : 2개 이상의 속성으로 구성

 

4.대체 여부

본질식별자, 인조식별자

  • 본질 : 업무에 의해 만들어지는 식별자
  • 인조 : 인위적으로 만든 식별자

 

※ 주식별자 도출기준

  1. 해당 업무에서 자주 이용되는 속성임
  2. 명칭, 내역 등과 같이 이름으로 기술되는 것들은 X
  3. 복합으로 주식별자로 구성할 경우 너무 많은 속성X -> 너무 많으면 인조식별자 생성한다.

 

 

12번

COALESCE()

NULL 값이 아닌 첫번째 값을 반환

행(row)으로 진행

SELECT COALESCE(COL1,COL2*50,50) FROM SQLD_39_12

COL1 을 기준 ( 100, 3000, 50)COL1(100)    → 100COL1(NULL) → COL2(60) * 50 →3000COL1(NULL) → COL2 = NULL 이므로 → 50

 

13번

INDEX 생성

CREATE index [인덱스이름] on [테이블이름] (컬럼명);

ex)

CREATE index indmember on T_MEMBER(kind);

 

14번

9-3인데 MINUS는 중복제거하므로 3 3두개인게 3하나만 가게되므로 5가 됨

 

15번

SORT MERGE JOIN

조인되는 N개의 테이블을 모두 정렬한 후에 조인을 수행

해당 테이블의 인덱스가 없을때 수행

병렬구조로 정렬함

각 데이터에 대하여 sort(정렬)를 병렬로 1,2번을 진행하고 후에 merge해서 합침

 

 

16번

LPAD 사용 이유

트리 구조에서 정렬 시에, 공백으로 계층구조 분류를 잘 보이기 위함

 

 

 

17번

순위함수

  1. RANK 함수는 동일순위 처리가 가능하다.
  2. DENSE_RANK 함수는 RANK 함수와 같은 역할을 하지만 동일 등수 순위에 영향이 없다.
  3. ROW_NUMBER 함수는 특정 동일 순위가 부여되지 않는다

 

 

18번

GROUPING SETS 함수

원하는 부분의 소계만 손쉽게 추출하여 계산할 수 있는 함수

참조 : https://velog.io/@dongchyeon/오라클Oracle-그룹-함수-ROLLUP-CUBE-GROUPING-등

 

 

21번

ORDER SIBLINGS BY

ORDER SIBLINGS BY 를 수행하면 전체 테이블이 아니라 계층형으로 된 데이터값(특정 칼럼) 기준으로 정렬된다.

(1) NOT IN (3) 이므로 3이 포함되면 전개를 멈춤

(2) CONNECT BY PRIOR ID = PARENT_ID (부모 ID 를 기준으로 자식 ID 를 검색) 순반향

(3) NO CYCLE 옵션을 사용할 수 있다.

 

 

22번

INDEX RANGE SCAN

최대값을 쉽게 검색 가능

 

 

24번

문자의 길이 : CHAR vs VARCHAR

CHAR는 길이가 서로 다르면, 짧은 쪽에 공백(space)를 추가하여 같은 값으로 판단한다.

VARCHAR(가변길이 문자형 : 입력한 크기만큼 할당 )는 같은 값에서 길이만 서로 다를 경우, 다른 값으로 판단함

예) CHAR(5)으로 칼럼을 생성하고 입력값이 3개의 문자일때 'abc' → 'abc  ' 와 같은식으로 나머지 2개는 공백으로 입력된다.

문자형과 숫자형을 비교 시 문자형을 숫자형으로 묵시적 변환하여 비교

연산자 실행 순서는 괄호, NOT, 비교연산자, AND, OR순

 

 

 

 

추천 강의자료

39회 상 : https://www.youtube.com/watch?v=SENIt9GFMV8

39회 하 : https://www.youtube.com/watch?v=9Kgmxr3PCsY&list=PLSiY9ClhS7WnWW6EfWlCz-P1Br3mGjFqw&index=4

 

 

연관 링크

 

자료 출처
https://yunamom.tistory.com/265

yurimac님 pdf 정리 자료

https://velog.io/@dongchyeon/오라클Oracle-그룹-함수-ROLLUP-CUBE-GROUPING-등

 

728x90
반응형

'SQL > SQLD 공부노트' 카테고리의 다른 글

[SQL][SQLD] 기출 39회 26~50번  (0) 2022.09.18
[SQL][SQLD] 기출 38회 1~50번  (0) 2022.09.14
[SQL][SQLD] 기출 35회 31~50번  (0) 2022.09.13
[SQL][SQLD] 기출 35회 1~30번  (1) 2022.09.13
[SQL][SQLD] 기출 34회 30~50번  (0) 2022.09.12
728x90

 

2번

성능 데이터 모델링 고려사항

  1. 정규화를 수행하여 데이터베이스 모델의 유연성을 확보
  2. 데이터베이스의 전체 용량, 월간, 연간 증감율을 예측 3)애플리케이션의 트랜잭션의 유형(CRUD: Create Read Update Delete)을 파악
  3. 합계 및 정산 등을 수행하는 반정규화 수행(성능향상을 위한 튜닝)
  4. 기본키와 외래키, 수퍼타입과 서브타입 등을 조정
  5. 성능관점에서 데이터 모델을 검증하고 확인

 

개념적 모델링

개체와 개체들 간의 관계에서 ER다이어그램을 만드는 과정

요구분석 단계에서 정의된 핵심 개체와 그들 간의 관계를 바탕으로 ERD를 생성하는 단계

    - 사용자 관점에서 데이터 요구사항을 식별

논리적 모델링

ER다이어그램을 사용하여 관계 스키마 모델을 만드는 과정

개념 설계에서 추상화된 데이터를 구체화하여 개체, 속성을 테이블화하고 상세화 하는 과정

    - M:N 관계해소, 식별자 확정, 정규화, 무결성 정의 등을 수행

물리적 모델링

관계 스키마 모델의 물리적 구조를 정의하고 구현하는 과정

논리적 설계 단계에서 표현된 데이터(ERD)를 실제 컴퓨터의 저장장치에 어떻게 표현할 것인가 (관계형 데이터베이스로 전환)   

    - 데이터가 물리적으로 저장되는 방법을 정의하는 것

 

 

 

5번

릴레이션(관계)

DB에서 정보를 구분하여 저장하는 기본 단위

DB테이블

ERD에서 네모칸 하나가 릴레이션임

 

 

11번

계층형 쿼리

PRIOR

 

 

12번

JOIN 설명

Nested Loop Join : 랜덤 엑세스 (Random Access) 발생 → 시스템 부하有

Sort Merge Join : 정렬을 유발하여 조인하는 형태를 사용

Hash Join : 정렬작업이 없어 정렬이 부담되는 대량배치작업에 유리

 

 

14번

DDL DML DCL TCL

DDL(데이터 정의어)
CREATE, DROP, MODIFY(오라클), ALTER(SQL서버), RENAME, TRUNCATE

DML(데이터 조작어)
SELECT, INSERT, DELETE, UPDATE

DCL(데이터 제어어)
GRANT, REVOKE

TCL(트랜잭션 제어어)
COMMIT, ROLLBACK, SAVE POINT

 

15번

NULL 카운트 YES or NO

대신 count(*) / count(1) 과 count(name) 은 다르다.

NULL 값을 포함하냐 마냐의 차이가 있다.

count(*) 과 count(1) 은 NULL 값인 컬럼도 포함하지만,

count(name) 은 NULL 값인 컬럼은 포함하지 않는다.

 

그룹바이 밴 1,2,3 하나씩으로 축약됨

1은 조조 하나라 1

2는 여포,유비니까 2

3은 관우 하니니까 1

 

 

17번

IN

IN() 연산자 : 안에 NULL이 있어도 비교연산 수행X

 

 

18번

ROLLUP & CUBE & GROUPING SETS

 

1)ROLLUP 

 

2)CUBE 

 

3)GROUPING SETS

 

 

21번

SUM(급여) OVER() : 전체 급여의 합계

AVG(급여) OVER() : 평균 급여

UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING →시작부터 끝까지의 전체 합계

UNBOUNDED PRECEDING AND CURRENT ROW →누적 합계

 

OVER절

누적, 순위, 퍼센트, 평균, 총합 등 데이터를통계 or 집계 를 만들어주는 절

단일함수와 집계함수가 같이 올 수 없기 때문에, 서브쿼리를 사용하는 경우가 많은데요다수의 집계결과가 필요할 때 여러 서브쿼리와 그룹바이로 인해 복잡한 쿼리를 OVER 절을 사용하면 간단하게 작성할수있습니다.

※ SQL Server의 경우

집계 함수는 OVER 절 내의 ORDER BY 구문을 지원X

 

27번

ANY

다수의 비교값 중 하나라도 만족하면 TRUE

<>(같지않은),

 

28번

인덱스(INDEX)

인덱스에 대해서 연산을 하면 인덱스가 변형이 되므로 인덱스를 사용할수가 없다.
CREATE [UNIQUE] INDEX [스키마명.]인덱스명
ON [스키마명.]테이블명 (컬럼1 [, 컬럼2, 컬럼3, ...])

 

30번

실행계획(Execution Plan)

실행계획이란 SQL을 실행하기 위한 절차와 방법을 의미

  • SQL개발자가 SQL을 작성하여 실행할 때, SQL을 어떻게 실행할 것인지를 계획하게 된다. 즉, SQL실행계획을 수립후 SQL을 실행
  • 옵티마이저는 SQL의 실행계획을 수립하고 SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어

 

 

 

43번

순수 관계 연산자

관계형 데이터베이스에 적용할 수 있도록 개발한 관계 연산자

(DELETE 포함X)

 

 

46번

ROLLUP == GROUPING SETS

롤업과 같은 그루핑셋 코드

GROUP BY ROLLUP(COL1, COL2)
GOURP BY GROUPING SETS(COL1, COL2),(COL1),()

 

일정부분만 세면 합계 1000,2000,3000

해당 컬럼 다 합하면 소계 6000

 

 

※ 서브쿼리 위치에 따른 이름 및 반환형태

SQL 서브쿼리 SELECT, FROM, WHERE

  1. SELECT 절 서브쿼리 : 스칼라 서브쿼리
  2. FROM 절 서브쿼리 : 인라인뷰 서브쿼리
  3. WHERE 절 서브쿼리 : 중첩 서브쿼리

 

 

50번

CROSS JOIN

CROSS JOIN의 결과 개수는 두 테이블의 행의 개수를 곱한 개수가 된다.

CROSS JOIN

상호 조인이라고도 불리며,

한 쪽 테이블의 모든 행들과 다른 테이블의 모든 행을 조인시키는 기능

이러한 CROSS JOIN을 카테시안 곱 (Cartesian Product)라고도 한다

 

 

 

 

연관 링크

 

자료 출처
[SQLD] 38회 기출 문제 ( 50문제 / 정답 ) + 해설추가 (tistory.com)

yurimac님 pdf 정리 자료

유투버 곰사원님 pdf 정리 자료

https://dataonair.or.kr/

https://ryean.tistory.com/10

https://mjn5027.tistory.com/51

 

 

 

728x90
반응형

'SQL > SQLD 공부노트' 카테고리의 다른 글

[SQL][SQLD] 기출 39회 26~50번  (0) 2022.09.18
[SQL][SQLD] 기출 39회 1~25번  (1) 2022.09.17
[SQL][SQLD] 기출 35회 31~50번  (0) 2022.09.13
[SQL][SQLD] 기출 35회 1~30번  (1) 2022.09.13
[SQL][SQLD] 기출 34회 30~50번  (0) 2022.09.12
728x90

 

 

 

31번

EXTRACT

0이 들어가면 0빼고 값을 가져옴

 

 

34번

단일행 서브쿼리

  • 서브쿼리의 실행 결과가 항상 1건 이하인 서브쿼리
  • 항상 비교연산자와 함께 사용된다.
  • 비교연산자 뒤에는 단일행이 와야 하는데 뒤에 GROUP BY DEPT는 다중행 함수로 멀티행을 반환하여 에러가 발생함.

 

다중행 서브쿼리

  • 서브쿼리의 실행 결과가 여러 건인 서브쿼리
  • 메인 쿼리의 조건 절에 여러 칼럼을 동시에 비교할 수 있다.
  • 서브쿼리와 메인쿼리의 칼럼 수와 칼럼 순서가 동일해야 한다.

 

ANY & ALL

IN

다수의 비교값과 비교하여 비교값 중 하나라도 같은 값이 있다면 true

조건절에서 사용

ANY

다중행 연산자. 조건을 만족하는 값이 하나라도 있다면 결과 리턴

다수의 비교값 중 한개라도 만족하면 true

IN 과 다른점은 비교 연산자를 사용

ALL

다중행 연산자. 모든조건을 만족하는 결과를 리턴

전체 값을 비교하여 모두 만족해야만 true

비교 연산자와 ANY
최소한 하나라도 만족하는 것
> ANY : 최소값 보다 크면
>= ANY : 최소값보다 크거나 같으면
< ANY : 최대값보다 작으면
<= ANY : 최대값보다 작거나 같으면
= ANY : IN과 같은 효과
!= ANY : NOT IN과 같은 효과

비교 연산자와 ALL
ANY와는 반대되는 개념입니다. 모든 조건에 만족 되는것
> ALL : 최대값 보다 크면
>= ALL : 최대값보다 크거나 같으면
< ALL : 최소값보다 작으면
<= ALL : 최소값보다 작거나 같으면
= ALL : SUBSELECT의 결과가 1건이면 상관없지만 여러 건이면 오류가 발생합니다.
!= ALL : 위와 마찬가지로 SUBSELECT의 결과가 여러 건이면 오류가 발생

 

 

37번

다중입력 쿼리문

Case문과 동일하게 수행되며 WHEN을 만족하면 종료한다.

그래서 T1행에는 2, 3 T2행에는 NULL, T3행에는 1이 입력된다

COL1

1 2 3

INSERT FIRST
	WHEN COL1 >= 2 THEN INTO T1 
	WHEN COL1 >= 3 THEN INTO T2 
	ELSE INTO T3
SELECT*FROM SQLD_37;

 

 

38번

STRING_SPLIT

조회된 skills 컬럼의 쉼표(',') 구분자를 잘라서 해당 개수만큼 행으로 변환한다.

FROM절에서 해당 함수를 사용할 수 있다.

 

 

40번

ROLLUP & GROUPING SETS

GROUP BY GROUPING SETS (a, (a, b))

  = GROUP BY a, ROLLUP(b)

GROUP BY GROUPING SETS ((a, b, c), (a, b), (b), ())

  = GROUP BY ROLLUP (b, a, c)

 

○ 그룹 소계 함수 비교

  1. ROLLUP 은 단계별 합계
  2. CUBE 는 가능한 모든 조합별 합계
  3. GROUPING SETS 는 지정한 조합별 합계
  4. 괄호는 묶음 처리

 

○ 사용 예시

1.ROLLUP(a, b, c) <- 우측 항목을 하나씩 단계별로 제거

  • (a, b, c)
  • (a, b)
  • (a)
  • ()

2.CUBE(a, b)

  • (a, b)
  • (a)
  • (b)
  • ()

3.ROLLUP(a, (b, c), d) <- (b,c) 를 한 묶음으로 처리

  • (a, (b, c), d)
  • (a, (b, c))
  • (a)
  • ()

4.GROUPING SETS (a, (b, c))

  • (a)
  • (b, c)

 

 

45번

HASH JOIN

Equal Join(동등 조인)에서만 가능

대용량 처리에 유리

각 테이블에 INDEX가 반드시 필요한 것은 아니다.

데이터 건수가 적은 테이블을 선행 테이블로 두는 것이 유리하다

정렬 작업이 없어 정렬이 부담되는 대량배치작업에 유리

 

 

46번

ROLLUP & GROUPING SETS

ROLLUP(상품명) = GROUPING SETS(상품명),()

 

GROUP BY ROLLUP(상품명)

=GROUP BY GROUPING SETS(상품명),()

 

 

연관 링크

 

자료 출처
[SQLD] 35회 기출 문제 ( 50문제 / 정답,해설포함 ) (tistory.com)

yurimac님 pdf 정리 자료

유투버 곰사원님 pdf 정리 자료

https://carami.tistory.com/18

https://m.cafe.naver.com/sqlpd/24282

728x90
반응형

'SQL > SQLD 공부노트' 카테고리의 다른 글

[SQL][SQLD] 기출 39회 1~25번  (1) 2022.09.17
[SQL][SQLD] 기출 38회 1~50번  (0) 2022.09.14
[SQL][SQLD] 기출 35회 1~30번  (1) 2022.09.13
[SQL][SQLD] 기출 34회 30~50번  (0) 2022.09.12
[SQL][SQLD] 기출 34회 1~29번  (0) 2022.09.12
728x90

 

 

2번

분산 데이터베이스(분산DB)

분산데이터베이스는 데이터의 무결성을 완전히 보장하는 것이 불가능

분산 DB(곰사원 p7)

  1. 여러 곳으로 분산되어있는 DB를 하나의 가상 시스템으로 사용할 수 있도록 한 DB
  2. 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터집합

 

분산 DB 장단점

- 장점 : 지역 자치성, 신뢰성 가용성, 효용성 융통성, 빠른 응답속도, 비용절감, 각 지역 사용자 요구 수용

- 단점 : 비용증가, 오류의 잠재성 증대, 설계 관리의 복잡성, 불규칙한 응답 속도, 통제의 어려움, 데이터 무결성 위협

 

 

3번

외부, 개념, 내부 스키마

모든 사용자관점을 통합한 조직 전체 관점의 통합적 표현

모든 응용시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 DB에 저장되는 데이터와 그들 간의 관계를 표현하는 스키마

 - 외부 스키마 : 사용자 관점

 - 개념 스키마 : 통합 관점

 - 내부 스키마 : 물리적 관점

 

 

4번

관계 표기법

관계를 표기법은 관계명관계차수관계선택사양 세 가지로 이루어져 있다

 

1)관계명(Membership)

엔터티가 관계에 참여하는 형태를 지칭

관계명은 엔터티간 관계에 맺어진 형태 뜻한다.

관계가 시작되는 쪽을 "관계시작점(The Beginning)"이라 칭하며 받는쪽을 "관계끝점(The End)"라고 칭한다.

또한 관점에 따라 능동적(Active)이거나 수동적(Passive)으로 명명된다.

 

2)관계차수(Degree/Cardinality)

관계차수란 두 엔터티간 관계에서 수행되는 경우의 수를 뜻한다.

 

3)관계선택사양(Optionality)

관계에서 항상 참여하는지 아니면 참여할 수도 있는지를 나타내는 방법따라 필수참여 관계(Mandatory), 선택참여 관계(Optional)로 나뉜다.

고객과 주문 엔터티 관계를 살펴보자. 3명의 손님의 가게에 들어왔다. 하지만 2명의 손님만 주문을 시킬 경우도 있다.

주문은 꼭 손님에 의해서 수행이 되지만, 손님은 주문을 시킬수도 있고 안 시킬수도 있다.

이처럼 주문은 손님에의해 수행이 될수도 있고 안 될수도 있어서 선택참여 관계이고 주문된 항목은 꼭 손님에 의해서 수행이 되어져야 하므로 필수참여 관계이다.

선택참여관계일 경우 ERD에서 관계를 나타내는 선에서 선택참여하는 엔터티쪽에 원을 표시해야한다.

 

※ ERD(ER 다이어그램)

ERD는 ER 다이어그램이라고도 부르는데 E는 개체(entity)라는 의미고 R은 관계(relation)라는 의미

개체는 정보를 저장하고 관리하기 위한 집합이자 식별 가능한 것

 

5번

분산 DB

 

 

12번

NATURAL JOIN

두 테이블 간의 동일한 이름을 갖는 모든 컬럼들에 대해 EQUI(=) JOIN(등가)을 수행한다.

NATURAL JOIN 은 USING, ON 과 같이 사용x

sql server 에서는 지원x

별도의 JOIN 컬럼을 지정하지 않아도 두 개 테이블에서 DEPTNO라는 공통된 컬럼을 자동으로 인식하여 조인 처리한다.

조인 처리된 컬럼은 같은 데이터 유형이어야 한다.

ALIAS나 테이블명과 같은 접두사를 붙일 수 없다.

출력 순서

*(아스트로)를 사용하면 (별도 순서를 지정하지 않으면) NATURAL JOIN 의 기준이 되는 컬럼이 다른 컬럼보다 먼저 출력된다.

NATURAL JOIN 은 조인에 사용된 같은 이름의 컬럼을 하나로 처리하지만, INNER JOIN은 별개의 컬럼으로 표시

 

EQUI JOIN(등가조인)

= 비교

2개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용, 대부분 PK, FK의 관계를 기반

SELECT PLAYER.PLAYER_NAME 
FROM PLAYER

위 SQL처럼 컬럼명 앞에 테이블명을 기술해줘야함

 

NON EQUI JOIN(비등가 조인)

범위 비교

2개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용

‘=’ 연산자가 아닌 BETWEEN, >, <= 등 연산자 사용

SELECT E.ENAME, E.JOB, E.SAL, S.GRADE 
FROM EMP E, SALGRADE S

 WHERE E.SAL BETWEEN S.LOSAL AND S.HSAL;

최소 (급여등급) 최대

위는 E의 SAL의 값을 S의 LOSAL과 HSAL 범위에서 찾는 것

 

22번

RANGE , UNBOUNDED PRECEDING

UNBOUNDED PRECEDING은 end point에서 사용될 수 없다.

RANGE BETWEEN start_point AND end_point

  • start point는 end_point와 같거나 작은 값이 들어간다.
  • Default값은 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW가 된다.
  • UNBOUNDED PRECEDING : start_point만 들어갈 수 있으며 파티션의 first row가 된다.
  • UNBOUNDED FOLLOWING : end_point만 들어갈 수 있으며 파티션의 last_row가 된다.
  • CURRENT ROW : start_point, end_point 둘 다 가능하다. 윈도우는 CURRENT ROW에서 start하거나 end한다.

 

 

23번

인덱스(INDEX)

인덱스 중 B-트리 인덱스는 Equal 조건뿐 아니라, BETWEEN, > 과 같은 연산자로 검색하는 범위 검색도 사용가능

 

인덱스의 특징

  • 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 색인과 유사한 개념이다.
  • 인덱스는 테이블을 기반으로 선택적으로 생성할 수 있는 구조이다.
  • 인덱스의 기본적인 목적은 검색 성능의 최적화이다.
  • 검색 조건을 만족하는 데이터를 인덱스를 통해 효과적으로 찾을 수 있도록 돕는다.
  • DML작업은 테이블과 인덱스를 함께 변경하므로 느려지는 단점이 존재한다.
  • 인덱스 데이터는 인덱스를 구성하는 칼럼의 값으로 정렬을 수행한다.

 

 

25번

PL/SQL

  1. 변수와 상수 등을 사용하여 일반 SQL 문장을 실행할 때 WHERE절의 조건 등 으로 대입할 수 있다.
  2. Procedure, User Defined Function, Trigger 객체를 PL/SQL로 작성 할 수 있다.
  3. Procedure 내부에 작성된 절차적 코드는 PL/SQL 엔진이 처리하고 일반적인 SQL 문장은 SQL 실행기가 처리한다.

 

 

 

26번

Lock/Unlock

Lock/Unlock은 병행성 제어(동시성) 기법

무결성 : 데이터 임의 갱신으로부터 보호해야 하는 것.

제약조건을 넣어서 무결성을 보장하거나, Triger 로직 안에 검사 기능을 넣을 수도 있고, 개발자의 코딩에서 로직을 넣을 수도 있다.

 

 

연관 링크

 

자료 출처
[SQLD] 35회 기출 문제 ( 50문제 / 정답,해설포함 ) (tistory.com)

yurimac님 pdf 정리 자료

유투버 곰사원님 pdf 정리 자료

728x90
반응형

'SQL > SQLD 공부노트' 카테고리의 다른 글

[SQL][SQLD] 기출 38회 1~50번  (0) 2022.09.14
[SQL][SQLD] 기출 35회 31~50번  (0) 2022.09.13
[SQL][SQLD] 기출 34회 30~50번  (0) 2022.09.12
[SQL][SQLD] 기출 34회 1~29번  (0) 2022.09.12
[SQL][SQLD] 기출 30회 25~50번  (0) 2022.09.11
728x90

 

 

30번

ORACLE과 SQL SERVER(MS SQL)의 COMMIT

오라클의 경우 DDL은 autocommit true false 보다 윗개념으로 쿼리문 실행되면 바로 커밋이 된다

auto commit false로 설정 영향x

 

Oracle 의 경우

기본 값이 auto commit off

ddl 이 일어날 경우 묵시적 commit이 됨 (설정 불가)

 

Sql Server 의 경우

기본 값이 auto commit on

false 가 될 경우 ddl 도 묵시적 commit 이 되지 않음

  1. SQL 서버의 경우, AUTO COMMIT 꺼두면 UPDATE, CREATE 모두 취소되고 다시 테이블이 생성되지 않음
  2. 오라클은 DDL의 AUTO COMMIT이 기본이기 때문에 CREATE 취소되지 않고, UPDATE도 취소 X

 

 

 

34번

테이블명 & 컬럼명 규칙

1)테이블명 네이밍

테이블 명은 다른 테이블의 이름과 중복x

반드시 문자로 시작해야한다

  • A-Z , a-z , 0-9 , _ , $ , #만 사용 가능

 

2)컬럼명 네이명

테이블 내의 칼럼명은 중복x

각 컬럼들 , 로 구분되고 ; 로 끝난다.

칼럼 뒤에 데이터 유형은 꼭 지정되어야 한다

반드시 문자로 시작해야한다

  • A-Z , a-z , 0-9 , _ , $ , #만 사용 가능

 

 

37번

오더바이(ORDER BY) 특징

1)SELECT 구문에 사용되지 않은 컬럼도 OERDER BY 구문에서 사용할 수 있다

2) ORDER BY 1, COL1 과 같이 숫자와 컬럼을 혼용하여 사용할 수 있다

3) ORACLE 은 NULL 을 가장 큰 값으로 취급하여 ORDER BY 시 맨 뒤로 정렬되고 SQL SERVER 반대로 가장 앞으로 정렬한다

 

 

39번

Hash Join

Hash Join 은 정렬 작업이 없어 정렬이 부담되는 대량배치작업에 유리

Equal Join(동등 조인)에서만 가능

대용량 처리에 유리

각 테이블에 INDEX가 반드시 필요한 것은 아님

데이터 건수가 적은 테이블을 선행 테이블로 두는 것이 유리

정렬 작업이 없어 정렬이 부담되는 대량배치작업에 유리

 

 

40번

최상위 관리자가 나올려면 left outer join 이 되어야 함. 최상위 관리자는 manager_id 가 null 이거나 없기 때문.

 

41번

INTERSECT

결과의 교집합으로 중복된 행을 하나의 행으로 표시한다 

결과의 교집합으로 중복된 행모두 포함한다

 

 

42번

window function

Sum,max, min 등과 같은 집계 window function을 사용할 때 window 절과 함께 사용하면 집계의 대상이 되는 레코드 범위를 지정할 수 있다

  1. Partition by 와 Group by 는 파티션 분할한다는 점에서 유사
  2. 집계 Window Function(sum, max, min)을 Window절과 함께 사용하면 레코드 범위(집계대상) 지정가능
  3. Window Function 으로 결과 건수 줄지 않음
  4. group by, Window Function 병행 불가

 

 

44번

ORDER SIBLINGS BY

같은 레벨 내에서 정렬

Start with SUPER_ID IS NULL

  • (1, NULL, A) 선택(루트 LEVEL1)

CONNECT BY PRIOR ID = SUPER_ID

  • ID가 자식 SUPER_ID 가 부모 / ID=2,3은 SUPER_ID=1 의 자식 / ID=4는 SUPER_ID=2의 자식

ORDER SIBLINGS BY 는 같은 레벨 내에서 정렬

  • ID=2,3은 둘다 LEVEL=1 이므로 정렬, CODE DESC 코드 뒷순서 부터 정렬

 

46번

INITCAP

첫 번째 문자만 대문자로 변환

 

 

48번

AND OR 우선순위

AND가 OR보다 우선 연산이므로 AND부터 먼저 해주면

SALARY > 200 조건만 만족해서 3임

NOT - AND - OR 순으로 연산

 

 

49번

NTILE

전체 건수를 인수값으로 N등분함

https://goldswan.tistory.com/25

NTILE(4) OVER (ORDER BY COL1) AS VAL 
FROM SQLD_34_X7

 

 

50번

LAG & LEAD

이전 N번째 행을 가져옴

(해당 쿼리를 보면 두번째 이전의 salary 값을 가져오므로 답은 2 가 된다.)

DEPARTMENT_ID 그룹, SALARY 오름차순 정렬

https://gent.tistory.com/339

 

LAG 함수 : 이전 행의 값을 리턴

LEAD 함수 : 다음 행의 값을 리턴

**LAG**(expr [,offset] [,default]) **OVER**([partition_by_clause] order_by_clause)
**LEAD**(expr [,offset] [,default]) **OVER**([partition_by_clause] order_by_clause)

expr : 대상 컬럼명

offset : 값을 가져올 행의 위치 기본값은 1, 생략가능

default : 값이 없을 경우 기본값, 생략가능

partition_by_clause : 그룹 컬럼명, 생략가능

order_by_clause : 정렬 컬럼명, 필수

 

 

연관 링크

 

자료 출처
[SQLD] 34회 기출 문제 ( 50문제 / 정답,해설포함 ) (tistory.com)

yurimac님 pdf 정리 자료

 

728x90
반응형
728x90

 

10번

엔터티 특징

  1. 엔터티는 2개 이상의 속성으로 구성
  2. 엔터티를 설명하고, 인스턴스의 구성요소이다. O
  3. 하나의 속성은 하나의 값을 갖는다.
  4. 속성의 특성 : 기본 속성 (모든 일반적 속성)
    • 설계 속성 (새로 만든다.)
    • 파생 속성 (영향을받아 발생, 빠른 성능, 계산)

 

 

11번

TRUNCATE TABLE 명령어

특정 로우(row)를 선택하여 지울 수 없다

 

12번

ORDER BY

 

 

13번

PROCEDURE & TRIGGER 

PROCEDURE 는 COMMIT, ROLLBACK 명령어를 사용할 수 있다.

TRIGGER 는 COMMIT, ROLLBACK 명령어를 사용할 수 없다.

 

 

16번

Nested Loop Join & Sort Merge Join &  Hash Join

WHERE 절에 별도의 조건절이 없을 경우 NESTED LOOP JOIN 이 반드시 좋다고 할 수 없음

Nested Loop Join Sort Merge Join   Hash Join
랜덤 액세스 등가, 비등가 조인 가능 등가조인만 가능
대용량 sort 작업 유리 조인키 기준 정렬 대량 작업 유리, 함수처리

 

 

19번

계층형 쿼리(계층형 질의)

1-4번 전부 PRIOR구문에서 AND조건이 안맞아서 추가 되는게 없고 START WITH에서 추가된 최상위 계층만 남는다.

3번 B A 2 1 / 나머지 : D B 4 2

 

 

20번

ROLLUP & CUBE & GroupingSets

ROLLUP은 인수 순서가 중요(ID 총합과 전체 총합 출력) CUBE는 ID총합,DPET_NM 총합, 전체총합 GroupingSets는 총합 X

ROLLUP : 인수 순서중요(계층적), Order by 로 정렬

CUBE : 모든값에 다차원집계 생성 / 시스템에 많은 부하

GroupingSets : 인수 순서무관 (평등)

SELECT ID, DEPT_NM, SUM(SALARY) 
FROM SQLD_34_20
GROUP BY ROLLUP(ID,DEPT_NM);

쿼리문 결과

GROUP BY로 묶어서 123만 나오는게 아닌

롤업 특성상 각 합계랑 소계도 나와서 7행(row)이 나온다

 

 

22번

ROLLUP & CUBE & GroupingSets

ROLLUP : 인수 순서중요(계층적), Order by 로 정렬

CUBE : 모든값에 다차원집계 생성 / 시스템에 많은 부하

GroupingSets : 인수 순서무관 (평등)

 

 

23번

SELECT COUNT(*) 
FROM SQLD_34_23 
HAVING COUNT(*) > 4

HAVING절에서 조건 만족이 안되서 FROM절에서 들어가는 값이 없고 테이블에 조회 되는게 없으므로 SELECT절 COUNT에 들어가는 값 자체가 없으므로 공집합(ROW 0)이 뜨게됨

 

 

연관 링크

 

자료 출처
[SQLD] 34회 기출 문제 ( 50문제 / 정답,해설포함 ) (tistory.com)

yurimac님 pdf 정리 자료

 

728x90
반응형
728x90

 

34번

고객.고객ID에 c001만 들어가있으므로

주문.고객ID에 들어갈 수 있는건 c001이랑 null만 가능

따러서 c002가 들어가있기 떄문에 제약조건 위반으로 에러발생

 

35번

Cross Join 과 Natural Join 은 Where 절에서 조건을 걸 수 없다

 

36번

PK에 의해 테이블을 분할하는 방법(파티셔닝)

1개 테이블에 많은 데이터가 저장됐을 때, 논리적으로는 1개 테이블이지만 물리적으로 여러 테이블로 분리

LIST PARTITION

LIST ( 대량 데이터 / 특정컬럼(생성일자) 없음 / PK )

 

 

42번

MERGE 에서의 DELETE 구문은 DELETE 단독 구문이 아닌 UPDATE 구문에 종속됨 UPDATE 실행된 건에 한해서 DELETE 구문이 수행된다

MERGE INTO

하나의 쿼리문으로 INSERT, UPDATE, DELETE 작업을 해야 하는 경우

이럴 때에는 MERGE 문을 사용하면 간단하게 쿼리문을 작성

출처 :&nbsp;https://mine-it-record.tistory.com/261

 

 

43번

ABS(-3.8), FLOOR(3.8), TRUNC(3.8), ROUND(3.8)

내림, 반올림들 매개변수에 지정 자리수 없으면 소수점에서 기능실행

EX)ROUND(3.85,1)이여야 5를 반올림해서 3.9가됨

TRUNC 인자 O

FLOOR 인자 X

 

 

 

45번

계층형 쿼리 : 순방향, 역방향

 

46번

오라클 아닌 SQL SERVER기준 쿼리문

// SQL SERVER기준
ALTER TABLE DEPT ALTER COLUMN VARCHAR(30) NOT NULL;

 

47번

ALTER로 DEFAULT값을 지정해줬어도 해당 컬럼값에 NULL을 넣는다고 하면 DEFAULT가 안들어가고 NULL값이 그대로 들어가며,

(CO1)처럼 값 하나만 지정하고 다른 컬럼값을 지정안하면 이때 DEFAULT값이 들어간다

 

 

 

 

연관 링크

 

 

자료 출처
[SQLD] 30회 기출 문제 ( 50문제 / 정답,해설포함 ) (tistory.com)

yurimac님 pdf 정리 자료

 

728x90
반응형
728x90

 

업무분석을 통해 바로 정의한 속성을 기본속성(Basic Attribute), 원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성을 설계속성(Designed Attribute), 다른 속성으로부터 계산이나 변형이 되어 생성되는 속성을 파생속성(Derived Attribute)이라고 한다.

 

1.기본속성

업무로부터 추출한 모든 속성이 여기에 해당하며 엔터티에 가장 일반적이고 많은 속성을 차지한다. 코드성 데이터, 엔터티를 식별하기 위해 부여된 일련번호, 그리고 다른 속성을 계산하거나 영향을 받아 생성된 속성을 제외한 모든 속성은 기본속성이다. 주의해야 할 것은 업무로부터 분석한 속성이라도 이미 업무상 코드로 정의한 속성이 많다는 것이다. 이러한 경우도 속성의 값이 원래 속성을 나타내지 못하므로 기본속성이 되지 않는다

 

2.설계속성

업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성이다. 대개 코드성 속성은 원래 속성을 업무상 필요에 의해 변형하여 만든 설계속성이고 일련번호와 같은 속성은 단일(Unique)한 식별자를 부여하기 위해 모델 상에서 새로 정의하는 설계속성이다.

 

3.파생속성

다른 속성에 영향을 받아 발생하는 속성으로서 보통 계산된 값들이 이에 해당된다. 다른 속성에 영향을 받기 때문에 프로세스 설계 시 데이터 정합성을 유지하기 위해 유의해야 할 점이 많으며 가급적 파생속성을 적게 정의하는 것이 좋다.

 

 

 

자료출처

https://dataonair.or.kr/db-tech-reference/d-guide/sql/?mod=document&uid=327

728x90
반응형
728x90

 

 

53P 28번

SQL SERVER에서는 DML문이 Auto Commit이 디폴트로 설정되어있음

 


 

51P 23,26번

DROP

DELETE

TRUCATE

 

DELETE

테이블 안의 데이터 삭제

아스트로(*) 사용불가

Manual Commit

 

TRUNCATE

테이블 자체삭제 X

해당 테이블에 들어있는 모든 행 제거

(=테이블 초기화함)

저장 공간 재사용 가능하도록 해제함

UNDO를 위한 데이터 생성X이기 때문에 DLELETE보다 빠름

Auto Commit

 

DROP

테이블 자체 삭제

(=테이블 정의 자체를 삭제)

Auto Commit

 


 

48p 17,19번

Delete(/Modify) Action

Cascade : Master 삭제 시 Child 같이 삭제

Set Null : Master 삭제 시, Child 해당 필드 Null

Set Default : Master 삭제 시, Child 해당 필드 Default

Restrict : Child 테이블에 PK값이 없는 경우만 Master 삭제 허용

No Action : 참조무결성을 위반하는 삭제/수정 액션을 취하지 않음

 

Insert Action

Automatic : Master 테이블에 PK가 없는 경우, Master PK를 생성 후 Child입력

Set Null : Master 테이블에 PK가 없는 경우, Child 외부키를 Null 값으로 처리

Set Default : Master 테이블에 PK가 없는 경우, Child 외부키를 지정된 기본값으로 입력

Depenent : Master 테이블에 PK가 존재할 때만 Child 입력 허용

No Action : 참조무결성을 위반하는 입력 액션을 취하지 않음

 


 

47p 14번

무결성 제약조건 (Integrity Constraint)

**무결성 제약조건**이란 데이터베이스의 정확성, 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제약하기 위한 조건을 뜻합니다.

주요 목적은 데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하는 것입니다.

1. 개체 무결성

각 릴레이션의 기본키를 구성하는 속성은 널(NULL) 값이나 중복된 값을 가질 수 없습니다.

[학생] 릴레이션에서 ‘학번’을 기본키로 지정했다면 ‘학번’ 속성은 NULL이 되어서는 안된다.

2. 참조 무결성

외래키 값은 NULL이거나 참조하는 릴레이션의 기본키 값과 동일해야 합니다.

즉, 각 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없습니다.

[수강] 릴레이션에서 ‘학번’ 속성에는 [학생] 릴레이션의 ‘학번’ 속성에 없는 값은 입력할 수 없다.

3. 도메인 무결성

속성들의 값은 정의된 도메인에 속한 값이어야 합니다.

‘성별’이라는 속성에서 ‘남’, ‘여’를 제외한 데이터는 제한되어야 한다.

4. 고유 무결성

특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 릴레이션의 각 튜플이 가지는 속성 값들은 서로 달라야 합니다.

[학생] 릴레이션에서 ‘이름’, ‘나이’는 서로 같은 값을 가질 수 있지만 ‘학번’의 경우, 각 튜플은 서로 다른 값을 가져야 한다.

5. NULL 무결성

릴레이션의 특정 속성 값은 NULL 될 수 없습니다.

[학생] 릴레이션 정의 시 ‘과목’ 속성에 NULL 값이 올 수 없도록 제한했다면 ‘과목’ 속성에 NULL이 있어서는 안된다.

6. 키 무결성

각 릴레이션은 최소한 한 개 이상의 키가 존재해야 합니다.

 


 

44p 9번

제약조건이 걸려있어도 삭제할 수 있는 방법

ON DELETE SET NULL

삭제 옵션

부모 키 삭제 시 자식 키를 NULL로 변경

ON DELETE CASCADE

부모 키 삭제 시, 자식 키도 함께 삭제

728x90
반응형

+ Recent posts