티스토리 뷰
연산자 우선 순위
- 괄호()
- NOT 연산자
- 비교 연산자, SQL 연산자
- AND
- OR
비교 연산자
- 모든 자료형에 대해 적용 가능
- NOT, AND, OR (우선순위: NOT > AND > OR)
- 다음 SQL문 중 실행 결과가 나머지 두 가지와 다른 것은?
SELECT player_name, position, height FROM player
WHERE position <> 'GK' AND height > 180;
SELECT player_name, position, height FROM player
WEHRE NOT(position = 'GK') AND height > 180;
SELECT player_name, position, height FROM player
WHERE NOT(position = 'GK' AND height > 180); -- == NOT(position = 'GK') OR NOT(height > 180);
IN
특정 경우에는 여러 가능한 값을 확인해야 할 수도 있다.
IN 연산자를 사용하여 다중 옵션 목록에 값이 포함되어 있는지 확인하는 조건을 만들 수 있다.
value_1 IN (option1, option2, ..., option_n)
LIKE & ILIKE
- LIKE 연산자를 사용하면 와일드카드 문자를 이용하여 문자열 데이터에 대한 패턴 매칭을 수행할 수 있다.
- % : 임의의 문자열을 대체한다.
- _ : 하나의 문자를 대체한다.
- LIKE는 대소문자를 구분하므로 대소문자를 구분하지 않는 ILIKE를 사용할 수 있다.
LIKE 예시
A로 시작하는 모든 이름
WHERE name LIKE 'A%'
a로 끝나는 모든 이름
WHERE name LIKE '%a'
모든 시리즈의 미션 임파서블 영화 조회
WHERE name LIKE 'Mission Impossible _'
'Version#A4', 'Version#B7' 등의 형식으로 버전 문자열 코드 조회
WHERE name LIKE 'Version#__'
패턴 매칭 연산자를 결합하여 더 복잡한 패턴을 생성할 수 있다.
-- Cheryl, Theresa, Sherri
WHERE name LIKE '_her%'
PostgreSQL은 LIKE 및 ILIKE 외에 전체적인 정규표현식 기능을 지원한다.
ROW_NUMBER() OVER()
사용자가 아닌 시스템이 관리하는 Pseudo Column으로 출력 개수 지정 등에 활용 가능하다.
Oracle에서 사용하는 ROWNUM을 PostgreSQL에서 ROW_NUMBER() OVER() 함수로 대체해서 사용할 수 있다.
SELECT ROW_NUMBER() OVER() AS rownum, name FROM users;
USERS 테이블의 ROW 개수만큼 각 ROW에 순번을 매겨준다.
SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY NAME) AS rownum, name FROM users) T
WHERE rownum % 2 = 0;
행 순서를 나타내려면 ROW_NUMBER() OVER(ORDER BY column) 구분을 사용하면 되고, 서브쿼리를 통해 해당 값에 조건을 매길 수 있다.
위는 짝수 번째 행만 조회하는 쿼리이다.
'DB > DB 문법' 카테고리의 다른 글
| JOINS와 집합 연산자 (0) | 2023.05.16 |
|---|---|
| 서브쿼리(Sub Query) (1) | 2023.05.16 |
| 시간 데이터 유형 (0) | 2023.05.16 |
| GROUP BY와 집계 함수 (0) | 2023.05.15 |
| SELECT (0) | 2023.05.15 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- annotation
- socket
- 넥스트스탭
- Java
- EKS
- Kafka
- 분산 락
- 구름톤챌린지
- nginx configuration
- sql
- Synchronized
- 구름톤 챌린지
- TDD
- postgresql
- redis session
- 카프카
- 비관적 락
- NeXTSTEP
- mdcfilter
- 람다
- 트랜잭션
- jvm 메모리 구조
- 낙관적 락
- nginx
- pessimistic lock
- spring webflux
- spring session
- transaction
- mysql
- Redisson
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
글 보관함
