이번 글에서는
WHERE절에 줄 수 있는 조건들에 대해서
다양한 문제를 통해 심도있게 배워보겠습니다.
CREATE DATABASE testdb;
USE testdb;
DROP TABLE IF EXISTS member;
DROP TABLE IF EXISTS product;
CREATE TABLE member(
id BIGINT AUTO_INCREMENT NOT NULL PRIMARY KEY,
member_id VARCHAR(30),
name VARCHAR(10),
address VARCHAR(10),
phone_number VARCHAR(20),
create_date datetime,
update_date datetime
);
CREATE TABLE product(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20),
qty INT,
price INT,
create_date datetime,
update_date datetime
);
INSERT INTO `testdb`.`member`
( `member_id`, `name`, `address`, `phone_number`, `create_date`, `update_date`)
VALUES
('member1', 'A', 'Seoul', '010-1111-1111', NOW(), NOW()),
('member2', 'B', 'Seoul', '010-1111-2222', NOW(), NOW()),
('member3', 'C', 'Daegu', '010-1111-3333', NOW(), NOW()),
('member4', 'D', 'Daegu', '010-1111-4444', NOW(), NOW()),
('member5', 'D', 'Daegeon', '010-1111-5555', NOW(), NOW()),
('member6', 'E', 'Daegeon', '010-2222-1111', NOW(), NOW()),
('member7', 'F', 'Daegeon', '010-2222-1111', NOW(), NOW()),
('member8', 'F', 'Seoul', '010-2222-2222', NOW(), NOW());
INSERT INTO `testdb`.`product`
(`name`, `qty`, `price`, `create_date`, `update_date`)
VALUES
('carrot', 10, 1000, NOW(), NOW()),
('apple', 100, 500, NOW(), NOW()),
('pear', 30, 800, NOW(), NOW()),
('orange', 50, 800, NOW(), NOW()),
('honey', 10, 3000, NOW(), NOW()),
('cabage', 15, 3000, NOW(), NOW()),
('pine', 20, 5000, NOW(), NOW()),
('mellon', 10, 10000, NOW(), NOW());
1. 비교연산자
'컬럼' = 값
'컬럼' > 값
'컬럼' >= 값
2. BETWEEN A TO B : 컬럼 값이 A이상 B이하
'컬럼' BETWEEN 10 TO 20
3. LIKE : 문자열에 조건 줄 수 있음
'컬럼' LIKE 'c%' # 컬럼의 값이 c로 시작
'컬럼' LIKE '%c' # 컬럼의 값이 c로 끝남
'컬럼' LIKE '%c%' # 컬럼의 값이 c를 포함
4. IN : 포함연산자
'컬럼' IN ('A','B','C', ...) # 컬럼의 값이 A or B or C, ...
4. AND, OR 연산자
(조건1) OR (조건2) # 조건1 과 조건2 중 하나라도 만족하는
(조건1) AND (조건2) # 조건1 과 조건2 모두 만족하는
member 테이블에서 address가 Daegu인 사람의 모든 정보를 가져오세요.
member 테이블에서 phone_number가 '010-1111-1111' 인 사람의 name을 가져오세요.
member 테이블에서 address가 Daegeon인 사람의 member_id와 phone_number를 가져온다.
product 테이블에서 name이 carrot인 상품의 가격 가져온다.
product 테이블에서 price가 3000원 보다 큰 상품의 모든 정보를 가져온다.
member 테이블에서 D로 시작하는 address를 가진 사람의 name을 가져온다.
member 테이블에서 phone_number가 '1111'로 끝나는 사람의 member_id, address를 가져온다.
product 테이블에서 qty가 20보다 크거나 같고 가격이 2000원 이상인 상품의 name을 가져온다.
member 테이블에서 Seoul에 살거나 phone_number가 '2222'이 들어가는 사람의 name을 가져온다
SELECT
*
FROM
member
WHERE
address = 'Daegu';
SELECT
*
FROM
member
WHERE
phone_number = '010-1111-1111';
SELECT
member_id, phone_number
FROM
member
WHERE
address = 'Daegeon';
SELECT
price
FROM
product
WHERE
name = 'carrot';
SELECT
*
FROM
product
WHERE
price > 3000;
SELECT
name
FROM
member
WHERE
address LIKE 'D%';
SELECT
member_id, address
FROM
member
WHERE
phone_number LIKE "%1111";
SELECT
name
FROM
product
WHERE 1=1
AND qty >= 20
AND price >= 2000;
SELECT
name
FROM
member
WHERE
address = "Seoul"
OR phone_number LIKE '%2222%';