SQL 첫걸음- 7 ~ 8 강

2장. 테이블에서 데이터 검색

7강. 조건 조합하기

  • AND: 교집합
  • OR: 합집합

ANDOR를 사용할 경우 주의할 점

  • no열의 값이 2나 3인 행을 추출하고 싶을 때, 다음과 같이 입력한다면
    모든 행이 반환되어 올바른 결과를 얻을 수 없다.
1
MySQL> SELECT * FROM 테이블명 WHERE no = 2 OR 3; # 모든 행이 반환된다.
  • 이유: 상수 3는 논리 연산으로 항상 참이 되기 때문에 모든 행을 반환하게 된다.

  • 올바른 조건식은 아래와 같다.

1
MySQL> SELECT * FROM 테이블명 WHERE no = 2 OR no = 3; # no열의 값이 2 또는 3인 행이 추출된다.

연산자의 우선순위

  • ANDOR보다 우선순위가 높다.
  • 일반적으로 OR조건식은 괄호로 묶어서 지정하는 경우가 많다.

NOT으로 조합

  • NOT 연산자
    • 오른쪽에만 항목을 지정하는 단항 연산자이다.
    • 오른쪽에 지정한 조건식의 반대값을 반환한다.

8강. 패턴 매칭에 의한 검색

패턴 매칭(부분 검색)

특정 문자나 문자열이 포함되어 있는지를 검색하고 싶을 때 사용하는 부분 검색

1. LIKE로 패턴 매칭하기

=연산자 VS LIKE 술어

  • =연산자: 열 값완전히 일치할 때 -> 참
  • LIKE 술어: 열 값부분적으로 일치할 때 -> 참
1
2
열명 LIKE '패턴'
# 매칭 대상 LIKE '문자열'

LIKE에서 사용할 수 있는 메타문자

  • 퍼센트(%): 임의의 문자열
  • 언더스코어(_): 임의의 문자 하나

주의할 점

  • 수치형 상수는 지정할 수 없다.
  • 와일드카드로 자주 쓰이는 *는 LIKE에서는 사용할 수 없다.

%의 특성

%는 임의의 문자열과 매치하며, 빈 문자열에도 매치한다!

%의 위치에 따른 분류

  • 전방 일치: 지정한 문자 뒤로 임의의 문자열이 존재
    • ex) ABC%
  • 중간 일치: 지정한 문자열이 중간에 위치
    • ex) %ABC%
  • 후방 일치: 지정한 문자 앞쪽에 임의의 문자열이 존재
    • ex) ABC%

2. LIKE로 %를 검색하기

데이터 안에 %_가 포함되어 있을 경우, LIKE 검색하기

  • 이스케이프를 이용해서 처리
  • %가 들어있는 데이터를 LIKE로 검색할 경우, \%
  • _를 LIKE 검색할 경우, \_
1
WHERE 컬럼명 LIKE '%\%%';
    1. %(메타문자 = 임의의 문자열)
    1. \%(% 그 자체의 문자)
    1. %(메타문자 = 임의의 문자열)

3. 문자열 상수 '의 이스케이프

  • 문자열 상수 안에 '를 포함하고 싶을 경우
    ''를 2개 연속해서 적는 것으로 이스케이프 처리를 할 수 있다.

  • ex) ‘I’m’ -> ‘I’’m’

  • 문자열 상수 안에 '을 넣고 싶을 때는 '를 2번 연속한 ''를 적어준다.