0. 개요
SQL 쿼리문의 비교 연산자를 학습하여, 내가 원하는 범위내의 값을 출력할 수 있도록 한다.
1. 참고
구분 | 버전 |
OS | Windows 11 |
DBMS | HeidiSQL 12.3.0.6589 |
본문에서 사용한 샘플 DBMS 다운로드
본문에서 사용된 샘플 DBMS 입니다.
필자가 직접 제작한 샘플 데이터베이스로, 상업적 용도를 제외하고 자유로운 사용이 가능합니다.
-- pratice 데이터베이스 구조 내보내기
CREATE DATABASE IF NOT EXISTS `pratice` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */;
USE `pratice`;
-- 테이블 pratice.student 구조 내보내기
CREATE TABLE IF NOT EXISTS `student` (
`STU_IDX` int(10) DEFAULT NULL,
`STU_NAME` varchar(5) DEFAULT NULL,
`STU_GENDER` varchar(5) DEFAULT NULL,
`STU_AGE` varchar(5) DEFAULT NULL,
`STU_ADR` varchar(5) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- 테이블 데이터 pratice.student:~10 rows (대략적) 내보내기
DELETE FROM `student`;
INSERT INTO `student` (`STU_IDX`, `STU_NAME`, `STU_GENDER`, `STU_AGE`, `STU_ADR`) VALUES
(1, '홍길동', '남자', '10', '서울'),
(2, '김길동', '남자', '20', '서울'),
(3, '최길동', '여자', '15', '서울'),
(4, '이길동', '여자', '16', '경기'),
(5, '왕길동', '남자', '12', '경기'),
(6, '허길동', '여자', '11', '대구'),
(7, '너길동', '남자', '9', '부산'),
(8, '나길동', '남자', '5', '부산'),
(9, '다길동', '여자', '3', '대구'),
(10, '마길동', '남자', '25', '제주');
-- 테이블 pratice.student_grade 구조 내보내기
CREATE TABLE IF NOT EXISTS `student_grade` (
`STU_IDX` int(11) DEFAULT NULL,
`STU_GRADE` varchar(5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- 테이블 데이터 pratice.student_grade:~10 rows (대략적) 내보내기
DELETE FROM `student_grade`;
INSERT INTO `student_grade` (`STU_IDX`, `STU_GRADE`) VALUES
(1, '22'),
(2, '64'),
(3, '45'),
(4, '12'),
(5, '48'),
(6, '45'),
(7, '99'),
(8, '5'),
(9, '0'),
(10, '100');
2. 비교 연산자
연산자 | 설명 |
X = Y | X와 Y는 동일 |
X > Y | X는 Y보다 크다 |
X >= Y | X는 Y보다 크거나 같다 |
X < Y | X는 Y보다 작다 |
X <= Y | X는 Y보다 작거나 같다 |
X <> Y 또는 X != Y | X는 Y와 같지 않다 |
기본적으로 위와 같은 비교 연산자가 존재한다. 그 외에도 종류는 많겠지만, 우선 기초 학습을 위해 상기와 같은 기본적인 비교 연산자를 알아보도록 하자.
특별한 내용은 없지만 SQL에서는 X <> Y
와 X != Y
가 같은 의미를 가진다. 둘 중 어떤 것을 사용하느냐는 상관이 없지만, 가독성을 위해 하나의 연산자로 통일하여 작업하는 것을 권장한다.
2. 예제
▣ 나이가 0살 ~ 12살인 사람의 이름만 출력하시오.
SELECT STU_NAME AS 학생이름
FROM student
WHERE STU_AGE >= 0 AND STU_AGE <= 12;
위와 같이 사용을 할 수 있지만, 아래와 같이 사용도 가능하다.
SELECT STU_NAME AS 학생이름
FROM student
WHERE STU_AGE BETWEEN 0 AND 12;
BETWEEN 연산자를 사용하면 보다 깔끔하게 SQL 쿼리문 정리를 할 수 있다. 하지만, 이는 검색 범위를 지정한 값이 연속적인 값을 가졌기 때문에 BETWEEN 연산이 가능했다.
연속적인 값을 가지지 않은 경우의 연산은 아래를 참고하자.
▣ 지역이 경기, 대구, 제주인 사람의 이름과 나이를 출력하시오.
SELECT
STU_NAME AS 이름,
STU_AGE AS 나이
FROM
student
WHERE STU_ADR='경기' OR STU_ADR='대구' OR STU_ADR='제주';
위와 같이 사용을 할 수도 있겠지만, 같은 필드에 하나하나 값을 지정 해 주어야만 하므로 여간 귀찮은 것이 아니다. 같은 필드에 여러 값을 지정하여 검색을 하고 싶을 때는 아래의 방법을 사용하면 보다 편리하게 검색할 수 있다.
SELECT
STU_NAME AS 이름,
STU_AGE AS 나이
FROM
student
WHERE
STU_ADR IN ('경기', '대구', '제주');
훨씬 쿼리문이 깔끔해졌고, 사용하기도 편리해졌다. 같은 필드에 여러 값을 지정하여 검색할 때에는 상기와 같이 IN 연산자도 사용할 수 있음을 알아두자.