📕 들어가며

이번 글에서는

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 모두 만족하는











📕 WHERE절 연습 문제

문제 1

member 테이블에서 address가 Daegu인 사람의 모든 정보를 가져오세요.

문제 1 정답











문제 2

member 테이블에서 phone_number가 '010-1111-1111' 인 사람의 name을 가져오세요.

문제 2 정답











문제 3

member 테이블에서 address가 Daegeon인 사람의 member_id와 phone_number를 가져온다.

문제 3 정답











문제 4

product 테이블에서 name이 carrot인 상품의 가격 가져온다.

문제 4 정답











문제 5

product 테이블에서 price가 3000원 보다 큰 상품의 모든 정보를 가져온다.

문제 5 정답











문제 6

member 테이블에서 D로 시작하는 address를 가진 사람의 name을 가져온다.

문제 6 정답











문제 7

member 테이블에서 phone_number가 '1111'로 끝나는 사람의 member_id, address를 가져온다.

문제 7 정답











문제 8

product 테이블에서 qty가 20보다 크거나 같고 가격이 2000원 이상인 상품의 name을 가져온다.

문제 8 정답











문제 9

member 테이블에서 Seoul에 살거나 phone_number가 '2222'이 들어가는 사람의 name을 가져온다

문제 9 정답






















문제1 정답

SELECT 
    *
FROM 
    member
WHERE 
    address = 'Daegu';

돌아가기





















문제2 정답

SELECT
    *
FROM 
    member
WHERE
    phone_number = '010-1111-1111';

돌아가기





















문제3 정답

SELECT 
    member_id, phone_number
FROM 
    member
WHERE 
    address = 'Daegeon';

돌아가기





















문제4 정답

SELECT 
    price
FROM 
    product
WHERE 
    name = 'carrot';

돌아가기





















문제5 정답

SELECT 
    *
FROM 
    product
WHERE 
    price > 3000;

돌아가기





















문제6 정답

SELECT 
    name
FROM 
    member
WHERE 
    address LIKE 'D%';

돌아가기





















문제7 정답

SELECT 
    member_id, address
FROM 
    member
WHERE 
    phone_number LIKE "%1111";

돌아가기




















문제8 정답

SELECT 
    name
FROM 
    product
WHERE 1=1
    AND qty >= 20
    AND price >= 2000;

돌아가기




















문제9 정답

SELECT 
    name
FROM
    member
WHERE 
    address = "Seoul" 
    OR phone_number LIKE '%2222%';

돌아가기




















profile
1.01^365

0개의 댓글