일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- http
- redshift
- 데이터 파이프라인
- 데브코스
- TIL
- Django
- Docker
- airflow.cfg
- 컴퓨터 네트워크
- airflow
- 정리
- Go
- sql
- 자료구조
- AWS
- 가상환경
- 컴퓨터네트워크
- HADOOP
- 운영체제
- 파이썬
- 종류
- 데이터엔지니어링
- 데이터 엔지니어링
- linux
- PYTHON
- S3
- 데이터베이스
- 데이터 웨어하우스
- TCP
- dockerfile
- Today
- Total
홍카나의 공부방
[ORACLE] 오라클 SQL 세부 정리 노트 - 1 본문
Oracle SQL 공부 도중 몰랐던 부분들을 정리하는 글.
1. WHERE 절에서 OR와 AND 연산자의 우선순위는 AND가 우위
> 이를 고려하지 않으면 원하지 않는 결과가 나올 수 있으므로, 괄호를 적극적으로 활용할 것
예를 들어서 사는 지역이 서울 또는 경기고, 성별이 남성인 사용자를 조건으로 했을때
WHERE 지역 = '서울' or 지역 = '경기' AND 성별 = '남자'
이렇게하면 의도치 않게 지역이 서울이거나, 경기면서 남자인 사용자를 고르게 된다.
2. 대표적인 와일드카드의 종류는 %, _, [], ^ 등이 있음.
%는 임의의 수의 문자를 의미
_는 단 한 개의 문자를 의미
[ ]는 문자들을 하나의 집합으로 지정해 사용
예를들어, [JK]면 J또는K로 시작하는 레코드를 찾는 것
^는 캐럿 기호라고 부르고, 반대의 효과를 가져오는 와일드카드
꼭 필요한 경우가 아니라면, 검색 패턴 시작에 와일드카드는 사용하지 말 것.
와일드카드로 시작하는 검색 패턴은 처리가 가장 느림.
3. Oracle에서 여러 값을 연결하려면 || 기호를 사용한다.
> RTRIM, LTRIM, TRIM()과 같은 공백제거 함수를 같이 사용해서 원하는 결과를 SELECT하자.
4. Oracle의 DATE 타입에서 '년도'만 추출하는 방법
(1) SELECT절에서 EXTRACT() 함수를 사용한다.
SELECT EXTRACT(YEAR FROM START_DATE)
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE > TO_DATE('2022-10-01', 'YYYY-MM-DD');
(2) TO_CHAR 함수와 DATE 포맷을 이용한다.
-- 코드를 입력하세요
SELECT TO_CHAR(start_date, 'YYYY')
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY;
MySQL처럼 YEAR() 함수는 지원하지 않는다.
5. 레코드마다 특정 컬럼에 값이 존재하는 레코드만을 세려면 COUNT({column_name})을 쓴다.
6. Where 절은 데이터가 그룹핑되기 전에 필터링하고, HAVING 절은 데이터가 그룹핑된 후에 필터링한다.
> 그룹핑한 결과를 기반으로 필터링을 해야할 때는 HAVING 절을 적극 활용하자.
7. 서브쿼리보다는 셀프 조인이 연산 속도가 더 빠르다.
> 서브쿼리는 뷰(view)처럼 일종의 가상 테이블을 만드는 것이다.
이처럼 가상 테이블을 만들 때 추가적인 I/O 비용이 발생할 수도 있고,
서브쿼리는 처리 속도를 높이기 위한 인덱스 정보를 가지고 있지 않을 가능성이 높기 때문에 속도차이가 날 가능성이 높다.
그래서 똑같은 테이블을 두 번 이상 참조할 때는 서브쿼리가 아닌 셀프 조인 활용을 권장한다.
SELECT C1.CUST_ID
, C1.CUST_NAME
, C1.CUST_CONTACT
FROM CUSTOMERS C1,
INNER JOIN CUSTOMERS C2
ON C1.CUST_NAME = C2.CUST_NAME
AND C2.CUST_CONTACT = 'SHAWN KIM';
출처 : <손에 잡히는 10분 SQL> 책
'Data Engineering > Database' 카테고리의 다른 글
[DuckDB] Python DuckDB 사용법 - 1. 기본 사용법 (0) | 2024.06.08 |
---|---|
[ORACLE] 정규표현식(REG_EXP) 예시 (0) | 2024.01.09 |
[MySQL] SQL로 titanic 데이터 처리하기 예시들 (1) | 2023.07.13 |
데이터 웨어하우스에서 Primary Key Uniquess 보장하기 (0) | 2023.06.21 |
[SQL] NULL 처리법 (0) | 2023.06.14 |