- [ MySQL ] - SELECT의 다양한 기능들

민짜이·2025년 2월 4일

데이터베이스

목록 보기
7/11

SELECT 에서는 문자열 함수 외에 다양한 기능을 제공하는 함수들이 있습니다. 포스팅을 위해 테이블을 생성하겠습니다.

CREATE TABLE user(
	user_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	username VARCHAR(50) NOT NULL,
	address VARCHAR(100) 
);

그리고 데이터들을 테이블에 삽입하겠습니다.

INSERT INTO user(username, address) 
VALUES ('A', '서울'),
			 ('B', '대전'),
			 ('C', '경기도'),
		   ('D', NULL),
			 ('E', NULL),
			 ('F', '서울'),
			 ('G', '경기도'),
			 ('H', '대구'),
			 ('I', '부산'),
			 ('J', '전주'),
			 ('K', '광주');

ISNULL

ISNULL 은 값이 NULL이면 1, 아니면 0을 반환하는 함수입니다. ISNULL 은 다음과 같이 사용합니다.

SELECT address, ISNULL(address) FROM user;

위 코드의 결과는 다음과 같습니다.

address 에서 값이 NULL 이면 1 아니면 0이 반환되는 것을 확인할 수 있습니다.

IFNULL

IFNULL 은 값이 NULL이면 NULL 을 대신 다른 값으로 표현하는 함수입니다.

SELECT username, IFNULL(address, '주소없음') FROM user;

위 코드의 결과는 다음과 같습니다.

값이 NULL 인 경우는 주소없음 으로 다른 값이 대체된 것을 확인할 수 있습니다.

IF

IF 는 조건식을 통해 값을 표현할 때 사용하는 함수입니다.

SELECT address, IF(address='경기도' OR address='서울', '수도권', '지방') AS region FROM user;

위 코드의 결과는 다음과 같습니다.

위 사진과 코드를 보면 address 가 경기도 혹은 서울인 경우 수도권을, 아니면 지방으로 값이 설정되어 출력이 된 것을 확인할 수 있습니다.

CASE WHEN THEN

CASE WHEN THEN 은 여러 조건의 표현식을 구현할 때 사용하는 함수입니다. IF 문으로 표현이 가능하나 쿼리가 복잡해지기 때문에 조건식이 여러 개일 경우에 CASE WHEN THEN 을 사용합니다.

SELECT 
	stock_quantity,
	CASE
		WHEN stock_quantity >= 50 THEN '재고 많음'
		WHEN stock_quantity >= 30 THEN '재고 중간'
		ELSE '재고 부족'
	END AS 'quantity_level'

위 코드의 결과는 다음과 같습니다.

DISTINCT

DISTINCT 은 중복된 데이터를 제거해줍니다.

SELECT author_lname FROM books;


위 코드는 중복을 제거하지 않은 채 검색한 결과입니다.

SELECT DISTINCT author_lname FROM books;


위 코드는 중복을 제거한 결과입니다. 두 결과를 비교하시면 중복이 제거가 된 것을 확인할 수 있습니다.

ORDER BY

ORDER BY 는 데이터를 정렬할 때 사용하는 기능입니다. 원래 데이터베이스에서 데이터가 정렬되는 기준은 삽입된 순서이지만 ORDER BY 를 통해 원하는 기준대로 데이터를 정렬할 수 있습니다.

SELECT book_id, title, pages FROM books ORDER BY pages ASC;

위 코드는 pages속성을 오름차순으로 정렬하여 book_id, title, pages 를 조회합니다. 위 코드의 결과는 다음과 같습니다.

위 사진을 보면 pages 를 기준으로 데이터가 정렬된 것을 확인할 수 있습니다.
만약 내림차순으로 확인하고 싶다면 ASC 대신 DESC 를 사용하면 됩니다.

SELECT book_id, title, pages FROM books ORDER BY pages DESC;

위 코드의 결과는 다음과 같습니다.

두 개 이상의 컬럼을 기준으로 데이터를 정렬할 수 있습니다.

SELECT author_fname, title, pages FROM books ORDER BY author_fname ASC, pages DESC;

위 코드의 의미는 author_fname 은 오름차순으로, pages 은 내림차순으로 정렬하는 코드입니다.
위 코드의 결과는 다음과 같습니다.

LIMIT

LIMIT 은 데이터를 조회할 때 지정한 일부만 볼 때 사용하는 기능입니다.

SELECT book_id, title, author_lname FROM books LIMIT 10;

위 코드는 첫 번째부터 10개의 데이터를 보는 코드입니다.
위 코드의 결과는 다음과 같습니다.

만약 세 번째 부터 7개의 데이터를 조회하려면 LIMIT 에 범위를 지정하면 됩니다.

SELECT book_id, title, author_lname FROM books LIMIT 2, 7;

위 코드의 결과는 다음과 같습니다

profile
꼬박꼬박

0개의 댓글