MySQL

MySQL - WHERE 조건 절과 SELECT 구문

jiyoon12 2025. 5. 9. 10:43

1. WHERE

  • SELECT, UPDATE, DELETE 등의 구문에서 조건을 지정해 원하는 데이터 처리만 하는 데 시용된다. 
  • 기본 구조는 아래와 같다.
SELECT 컬럼명 FROM 테이블명 WHERE 조건식;

 

 

2. 주요 연산자

 

 2-1. 비교 연산자

  • = : 같다.
  • != 또는 <> : 같지 않다.
  • > : 초과
  • < : 미만
  • >= : 이상
  • <= : 이하

 2-2. 논리 연산자

  • AND : 모든 조건이 참이어야 한다.
  • OR : 조건 중 하나라도 참이면 된다.
  • NOT : 조건을 부정한다.

 2-3. 특수 연산자

  • BETWEEN a AND b : a와 b 사이의 값
  • IN (값1, 값2, ...) : 지정된 값들 중 하나
  • LIKE '패턴' : 문자열 패턴 매칭 (예: '%서울%')
  • IS NULL : NULL 값 확인
  • IS NOT NULL : NULL이 아닌 값 확인

 

3. WHERE절 실습

  • 테이블 설계하기
create database mydb;

-- 고객 테이블 설계
create table customer(
	id int primary key auto_increment,
    name varchar(50),
    email varchar(50),
    address varchar(100)
);

select * from customer;

INSERT INTO customer (name, email, address) VALUES
		('김철수', 'kim@example.com', '서울시 강남구'),
		('박영희', 'park@example.com', '서울시 서초구'),
		('이민수', NULL, '경기도 성남시'),
		('최영진', 'choi@example.com', '서울시 송파구'),
		('한미영', 'han@example.com', '경기도 수원시'),
		('강종현', 'kang@example.com', '서울시 강서구');

 

  • 기본 조회하기
-- 1. 기본 조회

-- 1.1문제 : 서울시 강남구에 사는 고객을 조회하시오.
select *
from customer
where address = '서울시 강남구';

-- 1.2문제 : 이메일이 null인 고객을 조회
-- 주요! (null을 조회할 때 = 으로는 비교할 수 없다 is null 또는 is not null 을 사용해야 한다)
select *
from customer
where email is null;

-- 1.3문제 : 이름이 박영희인 고객을 조회
select *
from customer
where name = '박영희';

 

  • 복합 조건 조회
-- 2. 복합 조건

-- 2.1문제 : 서울시에 사는 id 3이하인 고객들을 조회 하시오.
select *
from customer
where  address like '서울시%' and id <= 3; 

-- 2.2문제 : 서울시 또는 경기도에 사는 고객을 조회 하시오.
select *
from customer
where address like '서울시%' or address like '경기도%';

 

  • 특수 연산자 조회
-- 3. 특수 연산자

-- 3.1문제 : id가 2 ~ 5인 고객들을 조회 하시오. 
select *
from customer
-- where id = 2 or id = 3 or id = 4 or id = 5;
where id between 2 and 5;

-- 3.2문제 : 서울시 강남구, 서울시 서초구, 서울시 송파구에 사는 고객을 조회 하시오.
select *
from customer
-- where address = '서울시 강남구' or address = '서울시 서초구' or address = '서울시 송파구';
where address in ('서울시 강남구', '서울시 서초구', '서울시 송파구');

-- 3.3문제 : 이메일이 null이 아닌 고객들만 조회 하시오.
select *
from customer
where email is not null;

 


  • 샘플 데이터 활용해서 문제 풀어보기
-- student 샘플 데이터 
INSERT INTO student (student_id, name, grade, major)
VALUES
  (2, '박영희', 2, '경영학과'),
  (3, '이민수', 4, '전자공학과'),
  (4, '홍길동', 1, '디자인학과'),
  (5, '임성민', 3, '컴퓨터공학과'),
  (6, '한지원', 2, '경영학과'),
  (7, '박준형', 4, '전자공학과'),
  (8, '김민지', 1, '디자인학과'),
  (9, '이현수', 3, '컴퓨터공학과'),
  (10, '정미경', 2, '경영학과'),
  (11, '김성진', 4, '전자공학과'),
  (12, '임승환', 1, '디자인학과');

 

-- student 
-- 1. grade가 3인 학생들 조회 하기 (특정 데이터를 지정하지 않으면 전부 출력 - 컬럼)
select *
from student
where grade = 3;


-- 2. 이름이 홍길동인 학생 조회 하기 
select *
from student
where name = '홍길동';


-- 3. 학번이 1부터 10까지인 학생들 조회하기 (between )
select *
from student
where student_id between 1 and 10;


-- 4. 학과가 컴퓨터 공학과 그리고, 학년이 2학년인 학생들만 조회 해줘 
select *
from student
where major = '컴퓨터공학과' and grade = 2; 


-- 5. 학과가 컴퓨터공학과 이거나(또는) 학년이 2학년인 학생들을 조회 해주세요 
select *
from student
where major = '컴퓨터공학과' or grade = 2;


-- 6. 학생 이름이 홍길동이 아닌 학생들을 조회해주세요
select *
from student
where name != '홍길동';
-- where name <> '홍길동';


-- 7. 학생들의 학년이 2학년 이상인 사람들을 조회 
select *
from student
where grade >= 2;


-- 8. 학생들의 학년이 2학년 미만인 사람들을 조회 
select *
from student
where grade < 2;


-- 9. 학년이 1학년 이거나 3학년인, 4학년 학생들 조회하기 
-- IN 으로 사용 
  select *
  from student
  where grade in (1, 3, 4);

 

 

  • 스스로 문제 만들어서 풀어보기
-- 스스로 문제 만들어서 풀어보기
  
-- 문제 1 학생 이름이 김민지 이거나 2학년인 학생들 조회하기
  select * 
  from student
  where name = '김민지' or grade = 2;
  
  
  -- 문제 2 전자공학과 또는 디자인학과 학생들 조회
  select * 
  from student
  where major like '전자공학과' or major like '디자인학과';
  
  
  -- 문제 3 2학년 부터 3학년까지의 학생들 조회
select *
from student
where grade between 2 and 3;


-- 문제4 3학년이고 컴퓨터공학과 학생들 조회
select *
from student
where grade = 3 and major = '컴퓨터공학과';