[SQL첫걸음]181031
SELECT
- 열을 한정할 때 이용
- SELECT 열1, 열2, ... FROM 테이블명
- 입력한 열들을 출력한다. 순서는 입력한 순서대로
WHERE
- 특정 조건의 행을 선택할 때 이용
- SELECT 열 FROM 테이블명 WHERE 조건식
- 조건식이 참인 행만 출력한다.
- 문자와 날짜는 싱클쿼트(' ')로 둘러싸 표기해야 한다. 자료형에 맞게 표기한 상수값을 리터럴 이라고 한다.
- NULL값을 검색할 때는 IS NULL을 이용한다.
ex. SELECT * FROM sample21 WHERE birthday IS NULL; - NULL값이 아닌걸 검색하고 싶으면 IS NOT NULL을 쓴다.
- 연산자의 종류
- = 좌변과 우변의 값이 같은 경우 참
- <> 좌변과 우변의 값이 같지 않은 경우 참
- > 좌변의 값이 우변의 값보다 클경우 참 (< 는 반대)
- >= 좌변의 값이 우변의 값보다 크거나 같을 경우 (<=는 반대)
- =은 <, >의 뒤에 붙인다. 반대로 쓰면 틀린표기다. (=< , =>는 틀림)
AND, OR, NOT
- 조건식1 AND 조건식2
- 조건식1, 2가 모두 만족해야 참 / 교집합
- 조건식1 OR 조건식2
- 조건식1, 2중 하나만 만족하면 참 / 합집합
- 완벽한 조건을 양쪽 모두 입력해야 원하는 결과를 출력할 수 있다.
- SELECT * FROM sample24 WHERE no=1 OR 2; (x)
- SELECT * FROM sample24 WHERE no=1 OR no=2; (o)
- AND는 OR에 비해 우선 순위가 높다.
- WHERE a=1 OR a=2 AND b=1 OR b=2 는 WHERE a=1 OR (a=2 AND b=1) OR b=2 을 의미한다. a열이 2이고 b열이 1인 행과 a가 1인행, b가 2인행을 출력한다.
- WHERE (a=1 OR a=2) AND (b=1 OR b=2) 는 a가 1 또는 2이고 b가 1또는 2인 행을 출력한다.
- 이런 실수를 없애기 위해 OR조건식은 괄호로 묶어 지정하는 경우가 많다. 습관을 들이자.
- NOT 조건식
- 조건식이 거짓인 값을 출력
- NOT은 오른쪽에만 조건식이 있는 '단항 연산자' AND와 OR는 양쪽에 조건식이 있어야 하는 '이항 연산자'
LIKE
- '특정 문자나 문자열이 포함되어 있는지를 검색하고 싶은 경우' 사용한다. 이런 방식을 '패턴 매칭' 또는 '부분 검색'이라고 한다.
- cf. = 연산자는 열 값이 완전히 일치할 때 참이 된다.
- 열명 LIKE '패턴'
- 패턴은 문자열로 지정한다. 수치형 상수는 지정할 수 없다.
- 메타문자도 사용할 수 있다.
- %는 임의의 문자열을 의미
- _는 임의의 문자 하나를 의미
- WHERE text LIKE 'SQL%'
- text열에서 SQL이 가장 앞에 있는 행을 출력
- 출력예: SQL은 RDBMS를....
- WHERE text LIKE '%SQL%'
- text열에서 SQL이 중간에 있는 행을 출력
- text열에서 SQL앞 뒤에 문자열이 없거나 빈 문자열이라도 출력한다. 즉 SQL이 들어간 모든 행을 출력한다.
- 출력예: LIKE는 SQL에서 사용되는.... / SQL은 RDBMS를.... / ....입문 SQL
- WHERE text LIKE '%SQL'
- text열에서 SQL이 가장 뒤에 있는 행을 출력
- 출력예: ....입문 SQL
- LIKE로 메타문자와 동일한 문자를 검색하려면 '이스케이프'해야 한다.
- \(역슬래쉬) 뒤에 메타문자를 쓰면 메타문자가 아닌 문자가 된다.
- WHERE text LIKE '%\%%'
- text열에서 %가 포함된 모든 행을 출력
- 출력예: LIKE에서 메타문자 %와 _를 사용할 수 있다.
- 문자열 안에 ' 작은따옴표가 있는 경우에는 작은 따옴표를 하나 더 붙여준다.
- ex. It's 을 문자열 상수로 사용할 때
LIKE 'It's' (x) LIKE 'It''s' (o)
댓글
댓글 쓰기