sqld 준비 (7)

Spirit Lab·2025년 5월 29일

TEST1.COL1과 TEST2.COL1이 같은 부분에서 일단 UPDATE를 해준다.
같은 범위에서 TEST.COL3가 2라면 TEST.COL3를 4로 바꾼다.
A X 1
B Y 4
C Z 3

그 다음 DELETE를 해주는데 TEST1.COL3가 2 이하일 경우 삭제한다.
B Y 4
C Z 3

그 다음 TEST1과 TEST2가 같지 않다면
TEST1의 COL1,2,3에
TEST2의 COL1,2,3값을 넣는다.
한마디로 TEST1에 없는 TEST2행을 TEST1에 넣겠다는 것
COL1에는 없고 COL2에는 있는 부분은
A X 1
D 가 4
E 나 5

그렇다면 결과는
A X 1
B Y 2
C Z 3
D 가 4
E 나 5

테이블 건수는 5개가 된다.

이건 사칙연산 순서 유의
곱이 덧셈보다 먼저임을 명심해야함


테이블 생성 후에 COL1을 10자리 숫자형 칼럼으로 선언
이후에 value값을 1과 4를 차례로 넣는다
그리고 SV1에 세이브
그러면 테이블에는
1
4
이렇게 있다.

이후에 COL이 2인곳을 8로 바꾸라는 UPDATE절을 적용하지만 변화는 없음
변화없지만 SV1을 다시 불러옴
그 다음 줄에서 COL1에서 2보다 큰 값을 삭제한다.
4가 삭제되고 남은건 1뿐
하지만 SV1으로 롤백되면서 다시 테이블에는
1
4
이렇게 있다.
그다음 3을 insert한다.
테이블에는
1
3
4
이렇게 있고
이 중 최댓값을 찾아야하니까 답은 4가 되는것


존나 헷갈렸음
이거 같은 경우에는 NVL(USERCOUNT,0)이 어떻게 작동하냐면
USERCOUNT의 각 값에 대해 판단해서 NULL이면 뒤에 지정값으로 바꾸고 아니면 그대로 나오는 거임
그래서 COUNT(10,20,0,0)이런식으로 나옴
그러면
1. 4
2. 30/4 = 7.5
3. 30/4 = 7.5
4. 32/4-0.5 = 7.5
답은 1이됨


그냥 칼럼안에서 SUM을 하면 NULL을 무시하고 다 더하지만, 칼럼끼리 계산에서 NULL이 있으면 전체가 NULL값이 됨.

DECODE('06', 0, price)
이건 오라클이고 '06'과 0이 일치하면 price를 반환 일치하지 않으면 null을 반환
여기선 null
만약에 DECODE('06', 0, price, price)
이렇게 되어있으면 default_result가 있으므로 이를 반환하여 price가 나온다.
여기서 price는 price전체 sum값이고 이는 1550

고유키는 NULL값을 가질수도있음 답 4

제약조건의미 및 역할NULL 허용중복 허용테이블당 개수 제한기타 특징
PRIMARY KEY행을 유일하게 식별하는 기본 키❌ 불가❌ 불가✅ 1개만 설정 가능자동으로 NOT NULL + UNIQUE 효과
FOREIGN KEY다른 테이블의 기본키/고유키를 참조 (관계 설정용)✅ 가능✅ 가능❌ 여러 개 가능참조 무결성 유지 (삭제/수정 제어 가능)
UNIQUE해당 컬럼의 값이 유일해야 함 (중복 금지)✅ 가능❌ 불가❌ 여러 개 가능여러 개의 NULL 허용 (NULL ≠ NULL로 간주됨)
CHECK값이 특정 조건을 만족해야 함 (범위, 조건 등)✅ 가능✅ 가능❌ 여러 개 가능예: CHECK(age >= 0 AND age <= 120)
NOT NULLNULL 입력을 금지❌ 불가✅ 가능❌ 여러 개 가능기본적으로 가장 간단한 제약조건

간단하게 동등조인이란 ?
두 테이블을 조인할 때, 공통 컬럼의 값이 서로 동일한 경우만 연갈하는 조인 방식

가) "마스터 테이블과 슬레이브 테이블 간의 조인은 일반적으로 기본키와 외래키 사이에서 발생한다."
✅ 참 (맞는 말)

보통 마스터 테이블의 PK(Primary Key) 와
슬레이브 테이블의 FK(Foreign Key) 를 조인함

예: 고객 테이블(PK) ↔ 주문 테이블(FK)

나) "EQUI Join은 두 개의 테이블 간에 칼럼 값이 일치하는 것을 조회한다."
✅ 참 (맞는 말)

핵심 개념이 바로 "칼럼 값이 같다 (=)"인 경우만 조회

다) "EQUI Join은 >, <, >=, <= 를 사용한다."
❌ 틀림 (정답)

EQUI JOIN은 = (동등) 만 사용

, <, >=, <= 등을 사용하면 → 비동등조인 (NON-EQUI JOIN) 이라고 부름

라) "EQUI Join은 두 개의 테이블에서 교집합을 찾는다."
✅ 참 (약간 애매하지만 맞음)

"같은 값이 있는 행만 연결"하니까 사실상 교집합처럼 작동

다만, 수학적 집합의 교집합과는 조금 개념이 다르지만
이 문장은 실무적으로 보면 틀리지 않음

조인 유형설명
EQUI JOIN=` 연산자 사용 (동등 조인)
NON-EQUI JOIN<, >, <=, >=, BETWEEN 등 사용 (비동등)
SELF JOIN같은 테이블을 자기 자신과 조인하는 경우
OUTER JOIN조인 조건에 일치하지 않아도 한쪽 데이터를 유지
NATURAL JOIN같은 이름을 가진 컬럼을 자동으로 매칭하여 조인

해설 : NOT IN문 서브쿼리의 결과 중에 NULL이 포함되는 경우 데이터가 출력되지 않는다.

IN 문은 OR 조건, NOT IN 문은 AND 조건

NOT IN 의 경우 TRUE,FALSE,UNKNOWN 셋 중 하나를 출력해야되는데 NULL이 껴버리면 비교자체가 안돼서 셋 중 하나를 출력할 수가 없음 그래서 결과가 나오지 않는것 이것을 해결하기 위해서 NOT EXIST를 사용해야함.
또한 IN에서는 NULL을 쓸 수 있는 이유가 OR처럼 작용해서 NULL이 아닌 것을 반환할 수 있지만 NOT IN 같은 경우 모두 검사해야해서 AND작용을 하게 되면서 결과 반환이 안되는것
또한 in (NULL) 이건 항상 UNKNOWN이기 때문에 NULL값을 찾으려면 IS NULL이 되어야하는것

조건찾는 값
LIKE '%_%'_가 아닌, 아무 글자 1개 포함된 문자열
LIKE '%@_%' ESCAPE '@'진짜 _ 글자가 포함된 문자열
LIKE '%@%%' ESCAPE '@'진짜 % 글자가 포함된 문자열

그리고 LIKE '%&_%' ESCAPE '&'이걸 하나 뭐를 하나 저 자리에 오면 똑같음

profile
For the champagne

0개의 댓글