조건 조합하기
1. AND로 조합하기
a열과 b열이 모두 0이 아닌 행을 검색하였다
2개의 조건식(a<>0과 b<>0)을 AND로 연결하였음
=> AND로 조건식을 연결하면 모든 조건을 만족하는 행을 검색할 수 있다(AND는 교집합)
2. OR로 조합하기
a가 0이 아니거나 b가 0이 아닌 행을 검색하였다
=> OR로 조건식을 연결하면 어느 쪽이든 조건을 만족하는 행을 모두 검색할 수 있다.(OR은 합집합)
3. AND와 OR를 사용할 경우 주의할 점
a<>0 AND b<>0 이라는 조건식을 a=1 OR a=2 AND b=1 OR b=2 로 변경한 결과이다.
a와 b의 값이 0~2 사이의 값이므로
이렇게 쿼리문을 작성해도 같은 결과가 나오길 기대했지만 다른 결과가 나오게 된다.
그 이유는 AND 연산자가 OR 연산자보다 우선순위가 높기 때문이다
즉, a =1 OR (a=2 AND b=1) OR b=2 같이 3개의 조건식이 연결된 것처럼 되어버린다.
일반적으로 OR 조건식은 괄호로 묶어 지정하는 경우가 많다. OR을 사용할 때는 괄호로 묶는 습관을 들이자.
=> AND는 OR에 비해 우선순위가 높다
4. NOT으로 조합
a열이 0이 아니거나 b열이 0이 아닌 행을 제외한 나머지 행을 검색하였다
NOT 연산자는 오른쪽에만 항목을 지정하는 '단항연산자'이다.
주로 ~아닌, ~외에, ~를 제외한 나머지 등의 조건을 지정할 경우 사용한다.
패턴 매칭에 의한 검색
특정 문자나 문자열이 포함되어 있는지를 검색할 때 패턴 매칭을 사용한다.
1. LIKE로 패턴 매칭하기
열명 LIKE '패턴' 과 같은 식으로 사용한다.
패턴을 정의할 때는 %와 _ 같은 메타문자를 사용할 수 있다.
SQL%는 전방일치 : text의 값이 SQL로 '시작'하는 행을 가져왔다.
%SQL%는 중간 일치 : text의 값이 SQL이란 단어를 '포함'하는 행을 가져왔다. SQL앞에 빈 문자열이 있어도 가져왔다.
나오지는 않았지만 %SQL은 후방 일치. SQL 앞쪽에 임의의 문자열(빈 문자열도 가능)이 존재.
=> %는 임의의 문자열과 매치하며, 빈 문자열에도 매치한다
2. LIKE로 %를 검색하기
메타문자를 검색할 때는 이스케이프 문자(\)를 앞에 붙인다.
3. 문자열 상수 '의 이스케이프
'을 문자열 상수 안에 포함할 경우는 '를 2개 연속해서 기술한다
ex) It's -> 'It''s'
' -> ''''
간단한 패턴매칭이라면 LIKE에 의한 패턴 매칭을 사용하는게 좋지만
더 복잡한 패턴을 매칭하는 경우는 정규표현식을 사용하는 편이 낫다고 한다
'SQL > SQL 첫걸음' 카테고리의 다른 글
11강[결과 행 제한하기 - LIMIT], 12강[수치 연산] (0) | 2022.10.03 |
---|---|
9강[정렬 - ORDER BY], 10강[복수의 열을 지정해 정렬하기] (0) | 2022.10.02 |
5강[테이블 구조 참조하기], 6강[검색 조건 지정하기] (1) | 2022.09.28 |
3강[데이터베이스 서버], 4강[Hello World 실행하기] (0) | 2022.09.27 |
1강[데이터베이스], 2강[다양한 데이터베이스] (0) | 2022.09.26 |