Oracle DB - Query 구문 (DISTINCT ~ WHERE)
▣ 쿼리 구문
◎ DISTINCT - 중복 제거
: SELECT (DISTINCT/ALL(default)) 칼럼
FROM 테이블;
◎ ORDER BY - 정렬
: SELECT 칼럼
FROM 테이블
ORDER BY (정렬할 칼럼) (ASC(default)/DESC) 오름차순 / 내림차순
- 정렬할 칼럼의 순서대로 우선 적용
- Oracle DB는 RDB
◎ WHERE - 조건 검색
: SELECT 칼럼
FROM 테이블
WHERE 조건
- 조건의 좌변에 수식이 들어가는 것은 좋지 않음
→ 좌변에 우변과 맞지 않는 데이터 형이 비교된다면 좌변의 내용은 모두 숫자로 바뀌어 비교된다 (full table scan)
→ 데이터 자동 형 변환을 통해 모든 데이터를 오류없이 스캔해주지만, 그 속도에 있어서 매우 비효율적이 된다.
→ 왠만하면 스캔을 적게해주는 방식으로
→ 칼럼을 제외한 수식을 우변으로 옮기자
- 스캔의 종류는 두 가지
① Full table scan - 모든 레코드를 다 읽어야하므로, 모든 테이블을 스캔하는 시간과 동일한 시간을 소비
② index scan - 임의의 테이블을 생성해서 정렬이 안되어있는 기본 테이블을 복사하여, 정렬이 된 상태로 붙여넣는다
- binary search를 사용 : 절반의 위치를 질의 낮으면 아래로, 높으면 위로 재검색
→ 그러나 RDB에서는 b* tree 방식을 이용하기에 binary search보다 훨씬 빠름
- 모든 레코드(row)에는 rowid가 존재
- rowid는 64^18가지로 이만큼의 row를 생성할 수 있음 (extended row의 경우)
- NULL과의 비교 연산
→ NULL은 결정된 값이 아니므로 비교 연산자가 사용될 수 없음
→ 보너스 컬럼이 NULL인 사원의 검색 (IS NULL / IS NOT NULL)
: SELECT * FROM emp WHERE comm IS NULL
→ 입사일의 비교
: SELECT * FROM emp WHERE hdate > '1995/12/31'; - RDB에서는 시간값이 분 단위로 기록되기에 수식연산 가능
◎ DISTINCT - 중복 제거
: SELECT (DISTINCT/ALL(default)) 칼럼
FROM 테이블;
◎ ORDER BY - 정렬
: SELECT 칼럼
FROM 테이블
ORDER BY (정렬할 칼럼) (ASC(default)/DESC) 오름차순 / 내림차순
- 정렬할 칼럼의 순서대로 우선 적용
- Oracle DB는 RDB
◎ WHERE - 조건 검색
: SELECT 칼럼
FROM 테이블
WHERE 조건
- 조건의 좌변에 수식이 들어가는 것은 좋지 않음
→ 좌변에 우변과 맞지 않는 데이터 형이 비교된다면 좌변의 내용은 모두 숫자로 바뀌어 비교된다 (full table scan)
→ 데이터 자동 형 변환을 통해 모든 데이터를 오류없이 스캔해주지만, 그 속도에 있어서 매우 비효율적이 된다.
→ 왠만하면 스캔을 적게해주는 방식으로
→ 칼럼을 제외한 수식을 우변으로 옮기자
- 스캔의 종류는 두 가지
① Full table scan - 모든 레코드를 다 읽어야하므로, 모든 테이블을 스캔하는 시간과 동일한 시간을 소비
② index scan - 임의의 테이블을 생성해서 정렬이 안되어있는 기본 테이블을 복사하여, 정렬이 된 상태로 붙여넣는다
- binary search를 사용 : 절반의 위치를 질의 낮으면 아래로, 높으면 위로 재검색
→ 그러나 RDB에서는 b* tree 방식을 이용하기에 binary search보다 훨씬 빠름
- 모든 레코드(row)에는 rowid가 존재
- rowid는 64^18가지로 이만큼의 row를 생성할 수 있음 (extended row의 경우)
- NULL과의 비교 연산
→ NULL은 결정된 값이 아니므로 비교 연산자가 사용될 수 없음
→ 보너스 컬럼이 NULL인 사원의 검색 (IS NULL / IS NOT NULL)
: SELECT * FROM emp WHERE comm IS NULL
→ 입사일의 비교
: SELECT * FROM emp WHERE hdate > '1995/12/31'; - RDB에서는 시간값이 분 단위로 기록되기에 수식연산 가능
댓글
댓글 쓰기