SELECT 구문과 조건절

조건절(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;