슬기로운 개발생활

[MySQL] 조건에 따른 SELECT문 활용

by coco3o
반응형

SELECT 문은 기본적으로 데이터를 검색하는 기능으로 CRUD 중 READ에 해당되는 기능을 수행합니다.
기본적인 구문은 아래와 같습니다.

SELECT (속성1, 속성2, ... ) FROM (테이블명) WHERE (조건식);
(조건식)에 의해 해당하는 행(가로)을 선택하고 (속성1, 속성2, ... )에 의해 열(세로)을 보여줍니다.

SELECT * FROM (테이블명);
WHERE 조건문이 없으므로 모든 행을 선택하고, * 을 통해 모든 열을 보여줍니다.
즉, (테이블명)의 이름을 가진 테이블의 모든 데이터를 확인하는 명령어입니다.


SELECT * FROM (테이블명) WHERE (조건1) AND (조건2);
(테이블명)의 테이블에서 (조건1)과 (조건2)를 모두 만족하는 행의 모든 열을 보여줍니다.

SELECT * FROM (테이블명) WHERE (속성1) BETWEEN (값1) AND (값2);
(테이블명)의 테이블에서 (속성1)의 값이 (값1)과 (값2)의 사이인 행의 모든 열을 보여줍니다.

아래의 명령어를 예로 비교해봅니다.
SELECT * FROM Company WHERE age > 23 AND age < 35;
SELECT * FROM Company WHERE age BETWEEN 23 AND 35;
두 명령어를 통한 결과 값은 같지만 성능은 BETWEEN을 사용한 명령어가 더 좋습니다.

단순히 AND만 사용한 첫번째 쿼리는 전체 데이터에서 age가 23보다 큰 값과 35보다 작은 데이터를 각각 구해 이들의 교집합을 구하는 연산이며,

BETWEEN을 사용한 두번째 쿼리는 age라는 속성에서 23라는 값부터 시작하여 35라는 값보다 작은 값을 찾는 연산이기 때문입니다.


SELECT * FROM (테이블명) WHERE (조건1) OR (조건2);
(테이블명)의 테이블에서 (조건1)과 (조건2) 중 하나라도 만족하는 행의 모든 열을 보여줍니다.

SELECT * FROM (테이블명) WHERE (속성1) IN (조건1, 조건2, ... );
SELECT * FROM (테이블명) WHERE (속성1) NOT IN (조건1, 조건2, ...);
(테이블명)의 테이블에서 (속성1)의 값이 (조건1)이거나 (조건2) 인 행의 모든 열을 보여줍니다.
(테이블명)의 테이블에서 (속성1)의 값이 (조건1)이나 (조건2)에 포함되지 않는 값을 보여줍니다.

여기서 IN을 사용한 구문 또한 BETWEEN을 사용한 구문과 같이 OR 보다 성능이 좋습니다.
아래의 명령어를 예로 비교해봅니다.
SELECT * FROM Company WHERE age = 23 OR age = 24 OR age = 25;
SELECT * FROM Company WHERE age IN (23,24,25);
두 명령어를 통한 결과 값은 같지만 성능은 IN을 사용한 명령어가 더 좋습니다.


SELECT * FROM (테이블명) WHERE NOT (조건1);
(테이블명)의 테이블에서 (조건1)을 만족하지 않는 행의 모든 열을 보여줍니다.

SELECT * FROM (테이블명) WHERE (속성1) LIKE 'A_';
(테이블명)의 테이블에서 (속성1) 중 ' A + 1글자' 값을 가진 행의 모든 열을 보여줍니다.

SELECT * FROM (테이블명) WHERE (속성1) LIKE 'A__';
(테이블명)의 테이블에서 (속성1) 중 ' A + 2글자' 값을 가진 행의 모든 열을 보여줍니다.


SELECT * FROM (테이블명) WHERE (속성1) LIKE 'A%';
(테이블명)의 테이블에서 (속성1) 중 'A' 로 시작하는 값을 가진 행의 모든 열을 보여줍니다.

SELECT * FROM (테이블명) WHERE (속성1) LIKE '%A';
(테이블명)의 테이블에서 (속성1) 중 'A'로 끝나는 값을 가진 행의 모든 열을 보여줍니다.

SELECT * FROM (테이블명) WHERE (속성1) LIKE '%A%';
(테이블명)의 테이블에서 (속성1) 중 'A'를 포함하는 값을 가진 행의 모든 열을 보여줍니다.


SELECT * FROM (테이블명) ORDER BY (속성1) (순서);
(테이블명)의 테이블에서 (속성1)의 (순서)에 따라 모든 열을 보여줍니다.
이때 (순서)에는 DESC(내림차순) 또는 ASC(오름차순)을 입력하며 이를 생략시 default 값은 ASC(오름차순) 입니다.

SELECT (속성1) AS '별명1', (속성2) AS '별명2', FROM (테이블명);
(테이블명)의 테이블에서 (속성1)은 별명1이란 이름으로, (속성2)는 별명2라는 이름으로 보여줍니다.


SELECT DISTINCT (속성1), (속성2), ... FROM (테이블명);(테이블명)의 테이블에서 (속성1), (속성2) ...를 선택하는데 이 때 중복되는 값은 제외합니다.


참고

반응형

블로그의 정보

슬기로운 개발생활

coco3o

활동하기