728x90

대용량 처리 자료형 : LOB
대용량 문자처리 자료형 : CLOB

  • char의 C + LOB

 

clob의 필요성

varchar2는 최대 4000byte이기 때문에 4000byte가 넘는 고용량들을 다룰 때, clob이 필요

 


문제점

CLOB을 그냥 쓰면 자바 객체 출력 때처럼 객체주소가 찍혀 나오는 것처럼 출력됨

 

해결책

DBMS_LOB.SUBSTR() 사용

 

DBMS_LOB.SUBSTR()

DBMS_LOB.SUBSTR(CLOB컬럼명, 자를 문자 수, 시작위치offset) 

 

주의사항

1)TO_CLOB()으로 감싸기

TO_CLOB(클롭컬럼명)으로 감싸지 않으면, 식별자가 너무 길다는 오류 발생 가능성

TO_CLOB(CONTENT)

2)길이 한도

CLOB 자체는 4000넘어도 되지만 DBMS_LOB.SUBSTR()을 쓰면 4000까지만 가능
따라서, 4000이 넘는 CLOB데이터를 조회할 때는 이어 붙여야함
||이나 concat() 사용
ex) 1-4000 + 4001-8000 식으로 문자열 이어 붙이는 방법

DBMS_LOB.SUBSTR(col1, 4000, 1) || DBMS_LOB.SUBSTR(col1, 4000, 4001) AS CONTENTS 
SELECT 
    TITLE, 
    WRTIER,
    DBMS_LOB.SUBSTR(col1, 4000, 1) || DBMS_LOB.SUBSTR(col1, 4000, 4001) AS CONTENTS
FROM BOARD

 

 

관련 함수

DBMS_LOB.INSTR(CLOB컬럼명, '검색할 단어', 몇번째 위치한 단어)  // 찾으려는 문자열의 인덱스번호 반환
DBMS_LOB.GETLENGTH(CLOB컬럼명)                         // 해당 컬럼의 길이 반환

1)DBMS_LOB.INSTR()

지정한 문자열이 나올 때마다 해당 인덱스 번호 반환
LIKE보다 조회 빠름

2)DBMS_LOB.GETLENGTH()

해당 컬럼의 전체 길이 반환(공백 포함)

 

 

참고자료
https://developyo.tistory.com/364
https://joongwoonc.tistory.com/52

728x90
반응형
728x90

 

사용 프로그램 & 버젼 등 환경

Oracle 11g
프로그래머스

 

메세지

ORA-30076: invalid extract field for extract source

 

상황

프로그래머스 입양 시각 구하기(1) 풀이 중 EXTRACT로 HOUR를 추출할려고 써보는데 해당 에러 발생

SELECT EXTRACT(HOUR FROM DATETIME)
FROM ANIMAL_OUTS

 

원인

데이터타입이 안맞아서 나는 오류

EXTRACT 함수를 사용할때, 2가지 데이터타입을 받을 수 있는데 하나는 DATE 다른 하나는 TIMESTAMP
1)DATE(DATETIME) : YEAR, MONTH, DAY
2)TIMESTAMP : HOUR, MINUTE, SECOND 등등

※DATETIME 데이터타입
DATE + TIMESTAMP = DATETIME
DATETIME 자체가 DATE 타입과 TIMESTAMP을 합쳐 놓은 데이터타입

SELECT SYSDATE,
       SYSTIMESTAMP,
       EXTRACT (YEAR FROM SYSDATE),
       EXTRACT (MONTH FROM SYSDATE),
       EXTRACT (DAY FROM SYSDATE),
       EXTRACT (HOUR FROM SYSTIMESTAMP),
       EXTRACT (MINUTE FROM SYSTIMESTAMP),
       EXTRACT (SECOND FROM SYSTIMESTAMP)
  FROM DUAL

 

해결

CAST()로 TIMESTAMP형으로 파싱해주면 된다

SELECT EXTRACT(HOUR FROM CAST(DATETIME AS TIMESTAMP)) HOUR
FROM ANIMAL_OUTS
728x90
반응형
728x90

 

 

사용 프로그램 & 버젼 등 환경

Oracle 11g
프로그래머스

 

 

메세지

ORA-00937 : not a single-group group function

 

 

상황

GROUP BY + 서브쿼리로 이용하여, 여러 날짜(DAY)의 HOUR를 그루핑해서 조회할려다가 에러 발생

SELECT HOUR, DATETIME, COUNT(DATETIME) AS COUNT -- FM 공백제거, HH24 시간만 24시제로 표시
 FROM (
     SELECT TO_CHAR(DATETIME,'FMHH24') AS HOUR, DATETIME
     FROM ANIMAL_OUTS
     **GROUP BY DATETIME** -- ORA-00937: not a single-group group function
     )
 ORDER BY DATETIME

 

 

원인

GROUP BY 형식을 잘몰라서 생기는 오류
GROUP BY에 지정한 컬럼과 SELECT의 지정한 컬럼이 같아야한다. 한쪽에 컬럼 세팅이 빠져서 생기는 오류
집계함수를 제외하면 컬럼명을 양 쪽에 모두 공유해야한다

 

 

해결

위에서는 별칭인 HOUR로는 연계가 안되기 때문에 컬럼을 직접적으로 선언하던가
또는 DATETIME으로 별칭을 짜면 해결 가능

SELECT HOUR, DATETIME -- COUNT(DATETIME) AS COUNT를 지우면 ORA-00937 해결
 FROM (
     SELECT TO_CHAR(DATETIME,'FMHH24') AS HOUR, DATETIME
     FROM ANIMAL_OUTS
     GROUP BY DATETIME
     ) 
 ORDER BY DATETIME
728x90
반응형
728x90

 

NATURAL JOIN

  • 두 테이블 간의 동일한 이름을 갖는 모든 컬럼들에 대해 EQUI(=) JOIN(등가)을 수행함
  • NATURAL JOIN 은 USING, ON 과 같이 사용x
  • sql server 에서는 지원하지 않는 기능
  • 조인 처리된 컬럼은 같은 데이터 유형이어야 함
  • ALIAS나 테이블명과 같은 접두사를 붙일 수 x
  • 별도의 JOIN 컬럼을 지정하지 않아도 두 개 테이블에서 DEPTNO라는 공통된 컬럼을 자동으로 인식하여 조인 처리

출력 순서

  • *(아스트로)를 사용하면 (별도 순서를 지정하지 않으면) NATURAL JOIN 의 기준이 되는 컬럼이 다른 컬럼보다 먼저 출력됨
  • NATURAL JOIN 은 조인에 사용된 같은 이름의 컬럼을 하나로 처리하지만, INNER JOIN은 별개의 컬럼으로 표시

 

 

EQUI JOIN(등가조인)

= 비교

  • 2개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용, 대부분 PK, FK의 관계를 기반
  • 아래 SQL처럼 컬럼명 앞에 테이블명을 기술해줘야함
SELECT PLAYER.PLAYER_NAME 
FROM PLAYER

 

 

 

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;

 

728x90
반응형
728x90

서브쿼리 조건

inner join에 and로 조건 걸어서 from절에서 걸러냄

SELECT
  FAM1.EMP_NO AS 직원번호
, FAM1.FAM_NM AS 쌍둥이1
, FAM2.FAM_NM AS 쌍둥이2
FROM FAM_C FAM1
	INNER JOIN FAM_C FAM2
		ON FAM1.EMP_NO = FAM2.EMP_NO
AND FAM1.FAM_NM <> FAM2.FAM_NM      -- 쌍둥이 이름 같지않게
AND FAM1.REL_TYPE_CD = FAM2.REL_TYPE_CD
AND FAM1.REL_TYPE_CD = 'A27'        -- 자녀조건(A27) 충족
AND FAM1.BIRTH_YMD = FAM2.BIRTH_YMD -- 생년월일 같음=쌍둥이
;

 

Where절 조건

inner join만하고 조건은 where에 넣은 것

FROM FAM_C F1
    JOIN FAM_C F2 ON(F1.EMP_NO = F2. EMP_NO)
WHERE F1.FAM_NM <> F2.FAM_NM
AND F1.REL_TYPE_CD = 'A27'
AND F1.REL_TYPE_CD = F2.REL_TYPE_CD
AND F1.BIRTH_YMD = F2.BIRTH_YMD    
;

 

Q.

서브쿼리로 조건 걸어서 데이터 가져오는 거랑 WHERE절에서 조건 걸어서 데이터 가져오는거랑

뭐가 다를까?

 

A.

서브쿼리

 집합을 줄일 필요가 있을 때 사용

서브쿼리로 대상을 줄여놓고 메인쿼리와 결합되는 형태로 많이 사용

 

WHERE

다른 어플리케이션(ex:java,C)에서 조건 값을 받아야 하는 경우가 多

 

728x90
반응형
728x90

 

JOIN에 AND

SELECT F1.EMP_NO 직원번호, F1.FAM_NM 쌍둥이1, F2.FAM_NM 쌍둥이2, 'Y' "쌍둥이 여부"
FROM FAM_C F1
    JOIN FAM_C F2 ON(F1.EMP_NO = F2. EMP_NO)
AND F1.FAM_NM <> F2.FAM_NM
AND F1.REL_TYPE_CD = 'A27'
AND F1.REL_TYPE_CD = F2.REL_TYPE_CD
AND F1.BIRTH_YMD = F2.BIRTH_YMD
;

 

JOIN + WHERE절에 AND

SELECT F1.EMP_NO 직원번호, F1.FAM_NM 쌍둥이1, F2.FAM_NM 쌍둥이2, 'Y' "쌍둥이 여부"
FROM FAM_C F1
    JOIN FAM_C F2 ON(F1.EMP_NO = F2. EMP_NO)
WHERE F1.FAM_NM <> F2.FAM_NM
AND F1.REL_TYPE_CD = 'A27'
AND F1.REL_TYPE_CD = F2.REL_TYPE_CD
AND F1.BIRTH_YMD = F2.BIRTH_YMD    
;

 

위 둘의 차이는 뭘까?

 

JOIN에 AND 조회 결과

 

JOIN + WHERE절에 AND

 

조회 결과 행(ROW) 수도 같고 직원번호를 하나씩 따져봐도 같다

 

그럼 차이가 없는 걸까?

답은 NO

 

현재는 내부조인(INNER JOIN)이라 차이가 없지만 외부조인(OUTER JOIN)으로 들어가면 달라지게 된다.

FROM절에서 조건을 걸어서 이미 조건대로 걸러지는 것과

FROM절의 데이터를 토대로 WHERE에서 조건을 거는 것의 차이

쿼리의 작동 순서가 FROM절 WHERE절 순이기 때문

 

<쿼리 동작 순서>

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

 

 

728x90
반응형
728x90

사용 프로그램

Oracle 11g + SQL Developer

 

메세지

ORA-01722: 수치가 부적합합니다

00000 - "invalid number"

*Cause: The specified number was invalid.

*Action: Specify a valid number.

 

상황

자체조인(SELF JOIN) 해볼려고 하던 중 JOIN ON절의 조건을 EMP_NO(사번)과 FAM_NM(가족명) 두가지를 넣었더니 에러 발생

 

원인

EMP_NO(사번)과 FAM_NM(가족명) 둘의 데이터 타입의 다른데 ON절에서 서로를 매칭 시킬려고 해서 에러 발생

※ “ORA-01722: 수치가 부적합 합니다”

 

위 메세지의 에러 원인

1.데이터 타입이 일치 하지 않는경우

2.데이터타입이 다른데 연산을 하는 경우

 

해결

데이터 타입이 다른 두 컬럼을 매핑할려 했던거라 데이터타입이 일치하는 컬럼끼리 매핑 시켜야함

SELECT F1.EMP_NO, F2.FAM_NM
FROM FAM_C F1
    JOIN FAM_C F2 ON(F1.EMP_NO = F2.EMP_NO) 
;

 

728x90
반응형
728x90

사용 프로그램

Oracle 11g & SQL Developer

 

메세지

ORA-00979: GROUP BY 표현식이 아닙니다. 00979. 00000 - "not a GROUP BY expression"

 

상황

아래 쿼리를 조회하려다 발생

SELECT E.EMP_NO, E.EMP_NM, COUNT(E.EMP_NO)
FROM EMP_C E
    JOIN FAM_C F ON(E.EMP_NO = F.EMP_NO)    
WHERE REL_TYPE_CD = 'A27'
GROUP BY E.EMP_NO; -- 인출행 수 1239

 

원인

조회할려는 컬럼이 그룹바이로 지정이 안됐기에 에러 발생

GROUP BY문에 들어가 있는 컬럼명들 중에 SELECT문에 안들어가도 있어도 에러발생X

반대로, GROUP BY문에 없는데 SELECT문에서 들어가있는 컬럼명이 있다면 에러발생O

 

해결

GROUP BY E.EMP_NO에 추가로 E.EMP_NM 컬럼 추가

E.EMP_NM이 조회할려던 컬럼

즉, 조회할려는 컬럼이 그룹바이로 지정이 안됐기에 에러 발생

SELECT E.EMP_NO, E.EMP_NM, COUNT(E.EMP_NO)
FROM EMP_C E
    JOIN FAM_C F ON(E.EMP_NO = F.EMP_NO)    
WHERE REL_TYPE_CD = 'A27'
GROUP BY E.EMP_NO, E.EMP_NM; -- 인출행 수 1239

 

728x90
반응형
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 함수

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

참조 :&nbsp;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

+ Recent posts