SQLD 공부 실전문제 오답노트 - PART 2 - CH1. SQL 기본
SQLD - Week 4 - 실전문제 Part2 - 1. SQL 기본
- <SQL 자격검정 실전문제> (일명 노랭이) 개정판 1회독 + 오답노트
- 출제 비중이 높은 Part 2 부터 시작
- 오답노트하며 중요한 개념 정리
11번
- SQL Server는
''
빈 문자열과 NULL을 구분함 - 문자열은
' '
홑따옴표를 사용-
" "
쌍따옴표는 식별자(테이블명, 컬럼명) 지정에서 사용- 쌍따옴표 내부에 있는 문자는 대소문자 구분
-
- 숫자는 따옴표 없이 그냥 적음
13번
- TO_CHAR(SVC_END_DATE, ‘YYYYMM’) 과 TO_DATE(‘201501’, ‘YYYYMM’)은 다름!
15번
-
LENGTH()
: 문자열의 개수를 숫자값으로 리턴 -
CHR(ASCII번호)
: 아스키 코드 번호를 문자나 숫자로 바꿈- 줄바꿈은 길이 1 (LENGTH(CHR(10)) = 1)
-
REPLACE(문자열, 찾을문자열, 치환문자열)
: 치환문자열을 생략하거나 빈문자열 전달 -> 찾을문자열 삭제!
16번
-
+1/24/(60/10)
: 연산식! - oracle에서 날짜나 시간에 숫자연산이 가능함 -> 날짜 연산은 숫자 연산과 같음
- 특정날짜 + 1 = “하루”를 더하는 의미
- 1/24 : 하루를 24시간으로 나눈다 = 60분
- 60/(60/10) : 60분을 6으로 나눈다 = 10분
- 특정날짜 + 1 = “하루”를 더하는 의미
24번
- oracle에서는 DATE_FORMAT 명령어 사용 안되는듯!
- TO_CHAR / TO_DATE 활용
27번
- GROUP BY 컬럼을 중심으로 집계함수/ 그룹함수의 연산을 진행
29번
-
ORDER BY COUNT(*) ASC
: 그룹핑된 행의 개수를 세서 그 수의 오름차순으로 정렬 - GROUP BY가 있는 경우 ORDER BY 에서도 그룹함수를 이용해야함
30번 - 오라클 시간계산
-
1/24
: 1시간 = 60분 (1일 / 24시간) -
1/24/60
: 1분 (1일 / 24시간 = 1시간 / 60 = 1분) -
1/24/6
: 10분 -
1/24/60/6
: 10초 -
1/12/(60/30)
: 1시간 -
1.5/24
: 1시간 30분 -
1.5/24/6
: 15분- 각 단위끼리 계산하기 어려우면 단위를 맞춰 변환후 계산
- e.g. 1일 / 24시간 = 24시간 / 24시간 = 1시간
- e.g. 1일 / 12시간 = 24시간 / 12시간 = 2시간
- e.g. 1일 / 24시간 / 6분 = 1시간 / 6분 = 60분 / 6분 = 10분
- 각 단위끼리 계산하기 어려우면 단위를 맞춰 변환후 계산
- 참고: 블로그, 오류노트:티스토리
31번
-
NULLIF(표현식1, 표현식2)
: 표현식1 = 표현식2 이면 NULL, 다르면 ‘1’ 리턴
38번
- JOIN
- Primary Key PK / Foreign Key FK : 일대다 관계
PRIMARY KEY(PK) 기본키
- 유일한 식별자(각 행을 구별할수 있는 식별자 기능)
- UNIQUE + NOT NULL
- 테이블 1개 - PK 1개 - 컬럼 여러개
FOREIGN KEY
- 자식테이블에 거는 장치
- 부모 테이블을 참조하면서 관리
45번
UNION / UNION ALL 구분
- UNION : 중복된 데이터는 한 번만 출력
- 중복된 데이터 제거, 자체 정렬
- UNION ALL : 중복된 데이터 전체 출력
- JOIN 과의 차이점
- JOIN : 새로운 열로 결합(수평 결합)
- UNION : 새로운 행으로 결합(수직 결합)
- 참고 : 블로그
FULL OUTER JOIN
- 두 테이블 전체 기준으로 결과를 생성 → 중복 데이터는 하나만 남기고 삭제 후 리턴
-
'LEFT OUTER JOIN 결과' UNION 'RIGHT OUTER JOIN 결과'
와 동일- ORACLE 표준에는 없음
SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name WHERE condition;
- ORACLE 표준에는 없음
- Q:”그럼 FULL OUTER JOIN의 경우 ON 절의 조건은 상관없는건가..?”
49번
ORACLE 표준 ‘OUTER JOIN’
- WHERE 절에서 기준이 되는 테이블 반대 테이블 조건 컬럼 뒤에 (+)를 붙임
- Inner 테이블 조건은 ON절에 포함시켜야 함
50번
- 컬럼끼리 연산에서 NULL 있으면 NULL
- 레코드끼리 연산에서 NULL 있으면 무시하고 연산
- e.g. SUM(COL1 + COL2)
- 각 컬럼의 행별 연산을 하고난 뒤에 각 행 연산결과를 모두 합함
- 첫 행의 데이터가 ‘NULL + 10’ 이면 => NULL
- 두번째 행의 데이터가 ‘10 + 20’ 이면 => 30
- SUM 연산하면 => 30
- e.g. SUM(COL1 + COL2)
IMPORTANT!
- 문제를 읽고 작업내용 정리
- 문제가 줄글로 되어있는 경우 어떤 작업을 해야하는지 빨리 찾아내는게 중요
- SELECT절에 사용할 내용, FROM절, .. 각 절에서 필요한 정보를 구분해서 표시하자!