조건절(WHERE)이란 무엇입니까?
MySQL에서 WHERE 절은 SELECT, UPDATE, DELETE 문에서 조건을 지정하여 데이터를 선택, 수정, 삭제할 때 사용하는 절이다.
WHERE 절은 기본적으로 조건식을 포함하며, 조건식은 연산자와 피연산자로 구성됩니다. 연산자에는 비교 연산자(=, <>, <, <=, >>=) 또는 논리 연산자(AND, OR, NOT) 및 피연산자에는 열 이름, 상수 값 및 하위 쿼리가 포함될 수 있습니다.
예를 들어, 다음 SELECT 문에서 조건식 “age >= 20″은 WHERE 절에 포함됩니다.
SELECT * FROM users WHERE age >= 20;
이와 같이 WHERE 절로 쿼리를 작성하면 조건을 만족하는 데이터만 선택되어 결과로 반환된다.
WHERE 절을 사용하지 않으면 모든 데이터가 선택되어 반환됩니다.
AND, then AND —> 두 조건식이 모두 참이어야 합니다.
OR 또는 논리합 —> 둘 중 하나가 참이면 참입니다.
SELECT * FROM users WHERE age >= 20 AND gender="M";
또한, WHERE 절은 여러 조건식과 함께 사용할 수도 있습니다. 현재 AND, OR 및 NOT과 같은 논리 연산자는 조건식을 연결하는 데 사용됩니다. 예를 들어, 다음 SELECT 문에서 두 조건식 “age >= 20 AND gender=”M””은 WHERE 절에서 AND 처리됩니다.
조건절에서 사용할 수 있는 대표 연산자
- = (동일)
- > (보다 큰)
- < (미만)
- >= (크거나 같음)
- <=(작거나 같음)
- <> / != (같지 않음)
- BETWEEN(값 범위 사이)
- LIKE(패턴 검색)
- IN( , ) (여러 값 검색)
-- WHERE 사용해보기
-- 학과가 '컴퓨터공학과' 학생들의 이름과 학번을 조회하고 싶을 때
-- 사용하는 쿼리문 작성해 보자.
SELECT * FROM student;
SELECT student_id, name
FROM student
WHERE major="컴퓨터공학과";
WHERE 절 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 = 1;
-- 5. 학과가 컴퓨터공학과 이거나, 학년이 2학년인 학생들을 조회해줘alter
SELECT * FROM student WHERE major="컴퓨터공학과" OR grade = 2;
-- 6. 학생 이름이 홍길동이 아닌 학생들을 조회하기
SELECT * FROM student WHERE name != '홍길동';
SELECT * FROM student WHERE name <> '홍길동';
-- 7. 학생들의 학년이 2학년 이상인 사람들을 조회하기
SELECT *
FROM student
WHERE grade >= 2;
-- 8. 학생들의 학년이 2학년 미만인 사람들을 조회
SELECT * FROM student WHERE grade < 2;
-- 9. 학년이 1학년 이거나 3학년, 4학년인 학생들 조회
SELECT * FROM student WHERE grade IN(1,3,4);
WHERE 절 연습 2
-- subject
-- 1. 과목 이름이 '미국사'인 데이텋를 조회하는 쿼리
SELECT * FROM subject WHERE subject_name="미국사";
-- 2. 학점이 3점인 과목 데이터를 조회하는 쿼리
SELECT * FROM subject WHERE credit = 3;
-- 3. 국어국문학과에서 개설된 과목 데이터를 조회하는 쿼리
SELECT * FROM subject WHERE department="국어국문학과";
-- 4. 과목 이름이 '영어회화'이거나 교수명이 '이승호'인 과목 데이터를 조회하는 쿼리
SELECT *
FROM subject
WHERE subject_name="영어회화" OR professor="이승호";
-- 5. 과목 번호가 5보다 큰 데이터를 조회하는 쿼리
SELECT * FROM subject WHERE subject_id > 5;
-- 6. 과목 이름이 '데이터베이스 개론'이 아닌 데이터를 조회하는 쿼리
SELECT * FROM subject WHERE subject_name != '데이터베이스 개론';
-- mysql에 문자열 값을 다룰 때는 공백도 하나의 값으로 생각한다.
-- 7. 학과가 '컴퓨터공학과'이고 교수명이 '박철수'인 과목 데이터를 조회하는 쿼리
SELECT *
FROM subject
WHERE department="컴퓨터공학과" AND professor="박철수";
-- 8. 교수명이 '김현진'이거나 '최영식'이면서(AND) 학과가 '외국어학과'인 과목 데이터를 조회하는 쿼리
SELECT *
FROM subject
WHERE professor IN ('김현진','최영식') AND department="외국어학과";
SELECT *
FROM subject
WHERE (professor="김현진" OR professor="최영식")
AND department="외국어학과";
-- 습관적으로 검증 쿼리를 출력해 볼 수 있다.
SELECT * FROM subject WHERE professor="홍길동";
도전 – 1
고객 테이블과 입력된 데이터로 자신의 문제를 만들고 쿼리 구문을 작성하십시오. 최소 5개의 문제가 있습니다.
-- 1. 주소가 서울시 강남구인 사람을 조회하는 쿼리
SELECT * FROM customer WHERE address="서울시 강남구";
-- 2. 이름이 '임진우'이거나 주소가 '경기도 부천시'인 사람을 조회하는 쿼리
SELECT *
FROM customer
WHERE name="임진우" OR address="경기도 부천시";
-- 3. email이 NULL인 사람을 조회하는 쿼리
SELECT *
FROM customer
WHERE email IS NULL;
-- 4. 주소가 서울시 송파구가 아닌 사람을 조회하는 쿼리
SELECT *
FROM customer
WHERE address <> '서울시 송파구';
-- 5. id가 4보다 큰 데이터를 조회하는 쿼리
SELECT *
FROM customer
WHERE id > 4;
문제 제출 - 학생
-- 1. 강남 3구 사는 사람들을 조회(서초구,송파구,강남구)
SELECT * FROM customer WHERE address LIKE '서울시%';
-- 2. email을 입력하지 않은 사람의 데이터를 출력하세요
SELECT * FROM customer WHERE email IS NULL;
-- 3. id가 5이상이며 주소가 서울시에 거주하는 사람 이름을 검색해라
-- 단, 서울시는 다음과 같은 주소가 있다 강남구, 서초구, 송파구, 강서구 종로구
SELECT name
FROM customer
WHERE id >= 5
AND address LIKE '서울시%';
-- 4. email이 NULL인 사람을 조회하는 쿼리 (IS NULL 을 사용해보세요)
SELECT * FROM customer WHERE email IS NULL;
-- 5. 이메일이 NULL 이 아니고 주문 번호가 2번이 넘으며 종로구에 사시는분을 조회하세요
SELECT *
FROM customer
WHERE email IS NOT NULL
AND id > 2
AND address="서울시 종로구";
-- 6. 주소가 '서울'이면서 id가 5이하인 고객 조회하는 쿼리
SELECT *
FROM customer
WHERE
address LIKE '서울%'
AND id <= 5;
-- 7. 서울시에 사는 고객들을 조회하는 쿼리 (LIKE 사용해보기)
SELECT *
FROM customer
WHERE address LIKE '서울%';
-- 8. 아이디가 3에서 8까지의 사람 중 '경기도 의정부'에 거주하고 있는 사람 중 이메일을 입력한 사람을 출력하시오
SELECT *
FROM customer
WHERE id between 3 AND 8
AND address="경기도 의정부시"
AND email IS NOT NULL;