(1) : 4
DDL : C A D -> CREATE ALTER DROP
DML : S I U D -> SELECT INSERT UPDATE DELETE
DCL : G R -> GRANT REVOKE
(2) : 1
(3) : 3
DML과 TCL은 비슷하다
(4) : 3
FROM 절은 필수이다
(5) : 1
(6) : 2
(7) : 1
(8) : 3
WHERE 절에 집계함수 사용할 수 없다
(9) : 3
WHERE 절을 먼저 해석하기
SELECT는 나중에 해석하공
하나의 속성에서 계산할때는 NULL은 0으로 생각해도됨!
*SELECT SUM(COL2) + SUM(COL3) FROM TAB_A WHERE COL1 > 0; 에서
- COL1 > 0을 만족하는 행 찾기! → 첫번째 행만 가능하다
- SUM(COL2) + SUM(COL3) 하기 → NULL + 20은 NULL이다!
*SELECT SUM(COL2) + SUM(COL3) FROM TAB_A WHERE COL1 IS NOT NULL; 에서
- COL1 IS NOT NULL을 만족하는 행 찾기! → 첫번째 행, 세번째 행이 가능하다
- SUM(COL2) + SUM(COL3) 하기 → (NULL+10) + (20+NULL)이라 NULL+NULL이라곳 ㅐㅇ각할 수 있지만 하나의 속성(COL2)에서 계산할 땐(NULL+10) NULL은 0처리 가능하다
- 그러므로 10 + 20이라 30이 도출됨.
그러나 두개 이상의 속성에서 계산할때는 NULL은 NULL 취급해야 함
(10) : 1
ANSI 표준은
IS NULL
IS NOT NULL
이다
*(11) : 4
(1) : 001과 1은 다른 것
(2) : 오라클에서는 공백문자가 아니라 NULL로 입력된다 → 공백문자와 NULL은 서로 다른 뜻!
(3) : 조회를 하려면 ‘ ‘가 아닌 IS NULL로 해야한다 → 애초에 (2)에서 NULL로 입력된거기 때문
(4) : SQL Server에서는 공백문자로 입력된게 맞기때문에 IS NULL이 아닌 ‘ ‘로 조회를 해야한다
결론 : 오라클에서는 ‘ ‘ 가 NULL로, SQL Server에서는 ‘ ‘가 ‘ ‘로 입력된다
(12) : 4
LOWER ('ABc') : 'abc'
-> 소문자로 변경
UPPER (ABc') : 'ABC'
-> 대문자로 변경
ASCII('A') : 65
-> 아스키코드로 변경
LTRIM('xxYYZZxYZxx','x') : YYZZxYZxx
-> (a,b)일때 a에 있는 b를 지워줌, L이면 왼쪽 R이면 오른쪽에서 시작
**(13) : 4
14 : 4
(1) : 집계 함수 쓸 때 NULL은 집계에 적용이 안된다
(2) : SELECT에서는 가능하지만 GROUP BY절에서는 AS 못씀!!
(3) : WHERE에 집계함수 못씀!
(4) : GROUP BY랑 HAVING는 그냥 세트라고 생각하면 된다
**(15) : 3
*(16) : 3
1/24/60 = 1분이다
1/24 는 1일을 24시간으로 나눈 것을 의미한다. -> 1일 / 24시간은 1시간이다
1시간/60은 1시간을 60분으로 나눈 것을 의미한다 -> 1시간 / 60분은 1분이다.
1/24/(60/10)을 계산해보자
1/24는 1시간임을 알 수 있다.
1시간/6은 1시간을 6분으로 나눈 것을 의미한다 -> 1시간 / 6분은 10분이다.
day/ hour / minute로 외우자
*(17) : 2
CASE WHEN 열 =
이랑
CASE 열 WHEN
은 비슷한거라고 보기
**(18) : 4
(19) : 2
*(20) : 1
ISNULL(A,B) → A가 NULL이면 B출력 , 둘다 데이터 타입 같아야함 !
NVL과 ISNULL은 같은거
NULLIF(A,B) → A랑 B랑 같으면 NULL, 다르면 A
**(21) : 3
select a,b,c
from tab_a
order by a,b,3이면 3은 세번째 열인 c를 의미한다.
(22) : 1
%s_ _ _ 는 s가 두번째가 아니라 세번째,네번째일 수도 있다
(23) : 1
(24) : 4
ROUND(4.875, 2) = 4.88
-> (a,b)에서 b번째 소숫점까지 보이게 함, 반올림 혹은 반내림
LENGTH('KOREAN') = 6
-> 몇글자인지 세줌
DATA_FORMAT('2022-11-02', '%Y-%m-%d') = 2022-11-02
-> 형식에 맞는 날짜 출력
SUBSTR('Gangneung Wonju', 8, 4) = 'ng W'
-> (a,b,c)일때 a에 있는 b번째 글자에서 c글자만큼 출력
**(25) : 2
(26) : 4
뭘 썼어도 롤백하면 사라진다는 것이 포인트
*(27) : 1
(1) : GROUP BY COLB라는 뜻은 COLB의 값을 기준으로 새로 행을 그룹화 하는 것이다.
(2) : COLB에는 (가,가,나,나,NULL,다,다)가 있으므로 (가,나,다,NULL)로 그룹을 지을 수 있다.
(3) : (가)행을 기준으로 보면 (1,NULL,가,NULL)과 (2,1,가,5가 있다)
(4) : 여기에 MAX(COLA)는 두번째 열인 COLA에서 최댓값을 의미하고, (3)에서 두번째 열은 (NULL)과 (1) 이다.
(5) : 결론적으로, 1이 최댓값이다.
(6) : COLB (가)로 그룹화 되었을 때, COLA1은 1, COLA2는 1이다. SUMAC는 6인데, SUM(COLA+COLC)에서 똑같이 (가)가 있는 행만 보면 된다. 1+5이므로 6이 나온다. 첫번째 행은 (NULL + NULL = NULL) 두번째 행은 (1+5 = 6)
(7) : 나머지도 동일하게 진행하면 된다.
**(28) :
(1) : GROUP BY ID라는 뜻은 ID를 기준으로 새로 행을 그룹화 하는 것이다.
(2) : ID에는 (100,100,200,200,200,999,999)가 있으므로 (100,200,999)로 그룹을 지을 수 있다
(3) : HAVING COUNT(*) = 2는 그룹화 된 결과 (100,200,999)에서 카운트가 2인 그룹만 선택하라는 의미이다.
(4) : 100이 2개, 999가 2개이므로 (100,999)로 선택이 된다.
**(29) : 3
*(30) : 3
(1) : 1/12/(60/30)을 보자마자 1일/12시간/2분을 떠올리기 (일/시간/분)
(2) : 1일/12시간은 2시간이다
(3) : 2시간 / 2분은 1시간 / 1분이다
(4) : 1시간 / 1분은 60분이다.
(5) : 60분은 1시간이므로 자정에서 1시간 추가된거 선택
*(31) : 2
NULLIF(A,B)는 A랑 B랑 같으면 NULL 출력
외우기 쉬운 방법 -> IF(A,B) 먼저 본다 -> 만약 A와 B가 같으면 NULL
*(32) : 4
실행순서와 작성순서는 서로 다르다.
실행순서 : FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
(1) FROM 절은 테이블을 가리키기에 맨 처음이다
(2) ORDER BY 절은 모든 트랙잭션을 수행하고 나서 최종적으로 출력하기 전에 정렬하기에 맨 마지막이다.
(33) : 3
(34) : 4
**(35) : 4
(나) : '임의로 3개정도씩 묶어서' -> 이렇게 애매한 문장은 답 체크 x
(36) : 3
*(37) : 2
순수 관계 연산자 = SELECT, PROJECT, JOIN, DIVIDE
**(38) : 4
(39) : 2
조인을 하려면 서로 맞는게 있어야함!
(40) : 2
조인 개념 몰라도됨, 구매횟수가 3회 이상인거니까 COUNT이다.
SUM은 말이 안되는게, 구매번호가 1,2면 (= 구매를 두번했으면) 3이 나옴
**(41) : 3
*(42) : 1
JOIN 문에 AS 사용 못함
*(43) : 4
테이블 간 조인 조건이 없는 경우 생길 수 있는 모든 데이터의 조합
*(44) : 1
JOIN 하고 ON 절에 IN(11000,12000)이 있으면 모든 고객에 대해서 출력을 하지만, JOIN 대상 데이터가 11000,12000으로 제한된다
**(45) : 4
UNION은 중복된 행 제거
UNION ALL은 중복된 행 제거 X
*(46): 1
LEFT OUTER JOIN
(1) 일단 왼쪽 테이블 똑같이 적기
(2) 왼쪽 테이블과 오른쪽 테이블의 같은 속성 찾기
(3) 해당 속성 값 붙이기
*(47): 1
문제가 불친절한듯..
DEPT가 부서고
부서가 왼쪽에 있으니 LEFT
*(48) : 2
**(49): 1
*(50) : 3
SUM(COL1+COL2) 와 같은 칼럼끼리 계산은 NULL이 하나라도 있으면 NULL
SUM(COL1)와 같이 하나의 칼럼에서 레코드끼리 하는건 NULL 0처리 (무시)
*(51) : 2
여러 칼럼 반환 = 다중 칼럼 서브쿼리
**(52) : 2
(53) : 2
합집합 : UNION
교집합 : INTERSECT
차집합 : MINUS/EXCEPT
(54) : 4
ORDER BY는 가장 마지막 줄에 한번
**(55) : 2
*(56) : 1
UNION은 중복이 제거된다
만약 문제의 UNION ALL과 UNION의 위치가 바뀌면 답은 2번이 된다
**(57) : 2
**(58) : 4
(59) : 3
*(60) : 2
START WITH랑
PRIOR C1 = C2 이걸 잘 보기
(61) : 4
레벨 1
*(62) : 1START WITH 절에서 시작한 데이터는 무조건 나온다. 필터에 의해 걸러지지 않음
*(63) : 4PRIOR 키워드는 SELECT, WHERE에서도 사용가능추가로, PRIOR 자식 = 부모는 부모에서 자식으로의 전개를 의미한다
**(64) : ㅇㅇ
(65) : 3
**(66) : ㅇㅇ
*(67) : 3난해한 문제..
*(68) : 2복수행일 때는 ALL, IN 등 복수 행 비교 연산자(마) : 오라클만 가능하다
**(69) : ㅇㅇ
**(70) : ㅇㅇ
**(71) : 3GROUP BY or 집계 함수 안쓰고 HAVING 절 썼다고 에러나는 건 아니다
*(72) : 2비 연관 서브쿼리는 주로 메인쿼리에 값을 제공하기 위한 목적이다
**(73) : ㅇㅇ
**(74) : ㅇㅇ
*(75) : 2
(76) : 2
VIEW 있으면 그냥 그런가보다 하고 평소처럼 하기
**(77) : ㅇㅇ
**(78) : ㅇㅇ
*(79) : 1
**(80) : 1
**(81) : ㅇㅇ
**(82) : 2
***(83) : ㅇㅇ
(84) : 3
(85) : 1
RANK()는 탁구대회 처럼 공동1등 다음엔 3등이다
(86) : 4
DENSE_RANK() 탁구대회인데 공동 1등 다음에 2등이라고 해준다.
(87) : 3
한 건만 출력한다는게 포인트
*(88) : 3
RANGE BETWEEN 10000 PRECEDING AND 10000 FOLLOWING
-> 현재에서 -10000~ +10000이다
(89) : 1
전반적으로 이런 문제는 PARTITION BY 부서ID 앞에 조건만 잘 보면 얼추 정답인듯
*(90) : 4
LAG는 밀린거라고 생각하면 된다. 위에서 누가 눌러서 밀렸다고 생각하기
*(91) : 3
(92) : 4
(93) : 3
연관된거까지 삭제하는게 CASCADE이다.
(94) : 3
KIM에게 받은 PARK의 권한은 CASCADE를 PARK에게 써야 삭제가 된다
**(95) : ㅇㅇ
(96) : 3
INTERSECT는 교집합
(97) : 3
<NULL>이 위에서 두번 눌렀다고 생각하면 쉽다
(98) : 2
RANK()난 탁구마냥 공동1등 다음이 3등,,, 반복되네 계속
**(99) : ㅇㅇ
**(100) : ㅇㅇ
*(101) : 3
순차적으로 진행하지 않아 발생한 '고립성' 문제라 볼 수 있다
**(102) : ㅇㅇ
(103) : 3
(104) : 4
(105) : 3
**(106) : ㅇㅇ
*(107) : 3
재밋는문제
*(108) : 2
FK는 NULL 값이 있을 수 있다
*(109) : 3
문제 안에서 같은 열 잘 찾기
(110) : 1
DDL은 CAD.. 이런거 평소에 외워두기
*(111) : 2
따로따로 보지 말고 같이 보기
1 AAAA
1 BBBB
*(112) : 1
오라클의 Text는 Char, VarChar이다
*(113) : 4
부모에 PK있을때만 입력 허용 : DEPENDENT
(114) : 4
VARCHAR2(1)에 NULL을 INTO해도 '에러'는 안난다
*(115) : 2
제약조건이 NOT NULL은이면 INSERT 할 때 해당 컬럼에 넣어야 한다
*(116) : 4
DATE에 숫자 넣으면 에러난다
(117) : 3
(118) : 3
A가 삭제될떄 B가 삭제되게 하려면 A에 CASCADE 달아주면 된다
(119) : 1
*(120) : 1
지속성에 대한 설명이다
**(121) : 3
(122) : 2
(123) : 3
ROLLBACK는 COMMIT되지 않은거 싹다 지움
(124) : 2
(125) : 4
값이 동일할 때 함께 나오게 해주는건 WITH TIES
**(126) : 3
'SQLD > SQL 자격검정 실전문제' 카테고리의 다른 글
1과목 데이터 모델링의 이해 (2) | 2024.11.15 |
---|