* Youtube Link - https://www.youtube.com/watch?v=n95a3PgW1tQ&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=13
11. 스칼라 서브쿼리 문제
스칼라 서브쿼리에서 ORDER BY는 문법에러
ORDER BY 1은 첫번째 열을 기준으로 오름차순 정렬한다.
서브쿼리에서 여러 개의 행이 반환되면 IN, ANY, ALL과 같은 다중행 서브쿼리 함수를 사용해야 한다.
그러면 이렇게 위 그림처럼 들어갔다는 의미이다.
- 스칼라 서브쿼리: SELECT 절에서 사용하는 서브쿼리
- 인라인뷰 서브쿼리: FROM 절에서 사용하는 서브쿼리
- 중첩 서브쿼리: WHERE 절에서 사용하는 서브쿼리
서브쿼리는 메인쿼리의 컬럼을 모두 사용할 수 있다.
메인쿼리에서는 서브쿼리의 컬럼을 사용할 수 없다.
12. ROLLUP 문제
정답은 (2)이다.
2.은 잘못되었다.
DNAME, YEAR별 소계도 같이 출력되고
DNAME별 소계 결국 총계도 같이 출력된다.
ROLLUP은 소계를 출력하는 함수입니다.
13. 실수 함수
- FLOOR() 함수: 실수 내림 함수
- CEIL() 함수: 실수 올림 함수
- ROUND() 함수: 실수 반올림 함수
- TRUNC() 함수: 실수 버림 함수
두번째 옵션은 소수점 자리 수를 의미한다.
14. SQL문의 실행 순서
정답은 (2)이다.
15. Oracle과 SQL Server
오라클은 AUTO COMMIT이 FALSE이다. (DDL은 자동 COMMIT, DML은 직접 COMMIT)
SQL SERVER는 AUTO COMMIT이 TRUE이다. (DML, DDL 자동 COMMIT)
정답은 (4)이다.
원래 SQL은 BEGIN TRANSACTION과 COMMIT (TRANSACTION)이 존재한다.
이를 명시적 TRANSACTION이라고 한다.
TRANSACTION은 처리과정을 의미한다.
16. SQL문 실행 계획을 읽는 순서
정답은 (1)이다.
17. PL/SQL에서 FETCH 이후에 수행해야 하는 것
정답은 (3)이다.
커서는 반복작업을 위한 단위이다.
SQL문은 데이터를 가져오기 위한 절차를 기술하지 않는다.
하지만 PL/SQL을 통해서 SQL을 절차적으로 사용할 수 있다. (PL: PROCEDURAL LANGUAGE)
DECLARE는 변수를 선언하는 부분이다.
SELECT employee_id, first_name, last_name, salary FROM HR.employees WHERE salary > 14000;
의 결과(테이블)을 CURSOR emp_cursor IS 의 emp_cursor로 저장한다.
이렇게 커서와 자료형 변수들을 만들어 준다.
BEGIN 부터 로직이 실행된다.
OPEN emp_cursor; 는 CURSOR를 열겠다는 의미이다.
FETCH는 CURSOR의 데이터 결과(테이블)을 하나씩 꺼내서 사용하겠다는 의미이다.
그래서 변수에 하나 하나씩 넣어주는 것이다.
그리고 이 변수들을 활용한 로직 처리가 가능할 것이다.
로직이 종료되면
CLOSE emp_cursor; 로 CURSOR를 닫아주어야 한다.
닫는 이유는 자원 낭비를 방지하기 위함이다. (메모리 부족 현상 방지)
EXCEPTION WHEN OTHERS THAN DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM); END
명령어는 예외가 발생하면 이쪽으로 보내겠다는 명령어이다.
흐름을 알고 있으면 좋다.
18. SQL SERVER 문제
오라클에서 볼 수 없는 내용들이 나올 것이다.
오라클에는 TOP() 함수가 없다. 아쉬운 부분이다.
MySQL, MS SQL 등은
WITH TIES를 사용을 하면
동일한 순위 팀을 같이 뽑을 수 있다.
19. LIKE 함수
ORACLE은 regular expression이 따로 있다. regexp_like 정규식이다.
MS SERVER는 regular expression은 []를 사용한다.
K%는 K가 첫글자이고 이후에 0개 이상의 문자들이 나오는 것이다.
%K%는 K 사이에 0개 이상의 문자들이 나오는 것이다.
[__K]%는 오라클의 경우 [를 문자로 간주한다. 하지만 MS SERVER에서는 []를 regular expression으로 사용을 한다.
그래서 오라클의 경우에는 '[AAK]AA' 등을 출력할 수 있다.
MS SERVER는 _,_,K 를 _ 또는 _또는 K인 첫 글자 중 %이므로 0개 이상의 문자를 출력한다.
__K%는 K가 세번째이고, %이므로 다음이 0개 이상의 문자를 출력한다.
20. 해시 조인 문제
감사합니다.
'Oracle' 카테고리의 다른 글
[이것이 오라클이다] 09장 1교시: [Oracle] 인덱스 개념, 종류, 자동생성 (2) | 2024.11.07 |
---|---|
[이것이 오라클이다] 08장 4교시: [Oracle] 뷰, 구체화된 뷰 (3) | 2024.11.06 |
[이것이 오라클이다] 08장 3교시: [Oracle] 임시 테이블 및 테이블 삭제/수정 및 제약 조건 실습 (2) | 2024.11.05 |
[이것이 오라클이다] 08장 2교시: [Oracle] 제약 조건 (2) | 2024.11.05 |
[이것이 오라클이다] 08장 1교시: [Oracle] 테이블 생성 (SQL Developer 및 SQL문) (3) | 2024.11.05 |