2023. 3. 10. 13:21ㆍSQLD 정리
IN(값1, 값2, 값3,...) >>> IN 안에 있는 값이 하나라도 일치하면 TRUE 아니면 FALSE
EX) SELECT '출력됨' FROM DUAL WHERE 3 IN(1,2,3) >>> '출력됨'
NOT IN(값1, 값2, 값3,...) >>> NOT IN 안에 있는 값이 하나라도 일치하면 FALSE 아니면 TRUE
EX) SELECT '출력됨' FROM DUAL WHERE 5 NOT IN(1,2,3) >>> '출력됨'
IS NULL >>> NULL 이면 TRUE 아니면 FALSE
EX) SELECT '출력됨' FROM DUAL WHERE '이것은 NULL이 아니다' IS NULL >>> 출력되지 않음
IS NOT NULL >>> NULL이 아니면 TRUE 아니면 FALSE
EX) SELECT '출력됨' FROM DUAL WHERE '이것은 NULL이 아니다' IS NOT NULL >>> '출력됨'
BETWEEN a AND b >>> a와 b 사이에 값이 있으면 TRUE 아니면 FALSE
EX) SELECT '출력됨' FROM DUAL WHERE 45 BETWEEN 40 AND 50 >>> '출력됨'
연산자(=, <, >, <=, >= )
EX) SELECT '출력됨' FROM DUAL WHERE 45 < 50 >>> '출력됨'
문자열 조건문 관련 연산자
- A LIKE B >>> A에 대하여 B와 유사한 문자열 찾아줌
- % >>> 문자 1개 이상이 존재한다는 의미
- _ >>> 문자 한 개
EX)
SELECT *
FROM TEST
WHERE SUBJECT LIKE '%S_'
TEST라는 테이블에 끝에서 두번째 문자는 S인 값들을 출력
ANY, ALL
ANY >>> 어느 하나라도 참이면 TRUE, 모두 거짓이면 FALSE
EX)
SELECT 컬럼명 FROM 테이블명 WHERE 60000 > ANY(10999999, 2312312, 1)
ANY안에 숫자 세개중에 1이 60000보다 작으니 TRUE 반환
SELECT 컬럼명 FROM 테이블명 WHERE 60000 > ANY(10999999, 2312312, 676767676767)
ANY안에 숫자 세개 모두 60000보다 크니 FALSE 반환
ALL >>> 모두 참이면 TRUE, 모두 거짓이면 FALSE
EX)
SELECT 컬럼명 FROM 테이블명 WHERE 60000 > ALL(10999999, 2312312, 1)
ANY안에 숫자 세개중에 1빼고 모두 60000보다 크니 FALSE 반환
SELECT 컬럼명 FROM 테이블명 WHERE 60000 > ALL(1, 2, 3)
ANY안에 숫자 세개 모두 60000보다 작으니 TRUE 반환
참고) WITH 문
- 서브쿼리를 사용해서 임시테이블이나 뷰처럼 사용 가능
- 별칭 지정 가능
- 인라인뷰나 임시테이블로 판단
WITH 테이블별명 AS(
SELECT * FROM 테이블명
)
위에서 만든 테이블별명을
SELECT * FROM 테이블별명
와 같이 사용할 수 있다.
참고) 서브쿼리
- 서브쿼리 : SELECT 문 내에 SELECT 문이 있는 쿼리
- 인라인뷰 : 서브쿼리가 FROM 절 내에 쓰여진 것 ( SELECT에 서브쿼리가 있으면 스칼라 서브쿼리)
- 서브쿼리가 출력되는 행의 개수에 따라 단일행 서브쿼리(1개출력), 다중행 서브쿼리(여러개 출력)으로 나뉨
- 서브쿼리에서는 정렬을 수행하는 ORDER BY를 사용할 수 없다(사용은 가능하나 사용해도 효과가 없음).
- 여러 행을 반환하는 서브쿼리는 다중 행 연산자를 사용해야 한다.
- EXISTS에 있는 서브쿼리가 반환하는 값은 True 혹은 False이다.
ex) WHERE EXISTS ( SELECT 1 FROM 나는 = '천재') >>> True 반환
참고) 뷰 VIEW
- 가상테이블로 실제 데이터가 하드웨어에 저장되는것은 아님
- 실제 데이터를 가지고 있지 않다.
- 테이블 구조가 변경되더라도 독립적으로 존재
- 사용자의 편의, 속도의 향상, SQL 성능 향상, 임시적인 작업, 보안관리를 위해 사용
- 서브쿼리는 메인쿼리의 컬럼을 모두 사용할 수 있지만 메인쿼리는 서브쿼리의 컬럼을 사용할 수 없다.
'SQLD 정리' 카테고리의 다른 글
SQL - Group By (0) | 2023.03.13 |
---|---|
SQL - NULL 관련 함수 (0) | 2023.03.12 |
SQL - DECODE, CASE WHEN (0) | 2023.03.10 |
SQL - 문자형 함수, 숫자형 함수, 날짜형 함수, 형변환 함수 (0) | 2023.03.10 |
DML(Data Manipulation Language), TCL(Transaction Control Language) (0) | 2023.03.10 |