MySQL

SELECT 구문과 조건절

ryeonng 2024. 5. 31. 16:43

조건절 (WHERE)

MySQL에서 WHERE 절은 SELECT, UPDATE, DELETE, INSERT 문에서 조건을 지정하여 해당하는 데이터를 선택, 수정하거나 삭제할 때 사용하는 절이다.

 

WHERE 절은 기본적으로 조건식을 포함하며, 조건식은 연산자와 피연산자로 이루어져 있다.

연산자는 비교 연산자(=, <>, <, <=, >, >=)나 논리 연산자(AND, OR, NOT)등이 있으며, 피연산자는 컬럼명, 상수값, 서브쿼리 등이 올 수 있다.

 

예를 들어, 아래의 SELECT문에서는 WHERE절에 " age >= 20 " 이라는 조건식을 포함하고 있다.

SELECT * FROM users WHERE age >= 20;

 

이렇게 WHERE 절을 사용하여 쿼리를 작성하면 해당하는 조건을 만족하는 데이터만 선택되어 결과로 반환된다.

WHERE 절을 사용하지 않으면 모든 데이터가 선택되어 반환된다.

 

또한, WHERE절은 여러 조건식을 조합하여 사용할 수도 있다.

이 때 논리 연산자인 AND나 OR, NOT을 사용하여 조건식들을 연결한다.

예를 들어, 아래의 SELECT 문에서는 WHERE절에 " age >= 20 AND gender = 'M' " 이라는 두 개의 조건식을 AND로 연결하여 사용하고 있다.

 

AND 그리고는 논리 곱 → 두 개 조건식 전부 true 여야 한다.

OR 또는 → 논리 합 → 둘 중 하나라도 참이면 true이다.

SELECT * FROM users WHERE age >= 20 AND gender = 'M';

 

이렇게 WHERE 절을 사용하여 쿼리를 작성할 때는 조건식을 명확히 지정해야 하며, 잘못된 조건식을 사용하면 의도하지 않은 결과가 나올 수 있다. 

따라서 조건식을 작성할 때는 문법적인 오류를 방지하기 위해 괄호를 사용하거나, 필요한 경우 서브쿼리를 사용해 복잡한 조건식을 작성할 수 있다.

 


 

조건절에서 사용할 수 있는 대표 연산자

  • = (equal)
  • > (greater than)
  • < (less than)
  • >= (greater than or equal to)
  • <= (less than or equal to)
  • <> or != (not equal to)
  • BETWEEN (between a range of values)
  • LIKE (search for a pattern) → 서울%
  • IN (search for multiple values) → 여러 조건을 한 번에 선택할 때 사용 가능 → age in (10, 13, 15)

 


select * from student;
desc student;

-- student 샘플 데이터 
INSERT INTO student (student_id, name, grade, major)
VALUES
  (13, '박영희', 2, '경영학과'),
  (14, '이민수', 4, '전자공학과'),
  (4, '홍길동', 1, '디자인학과'),
  (5, '임성민', 3, '컴퓨터공학과'),
  (6, '한지원', 2, '경영학과'),
  (7, '박준형', 4, '전자공학과'),
  (8, '김민지', 1, '디자인학과'),
  (9, '이현수', 3, '컴퓨터공학과'),
  (10, '정미경', 2, '경영학과'),
  (11, '김성진', 4, '전자공학과'),
  (12, '임승환', 1, '디자인학과');
  
  select student_id, name
  from student
  where major = '컴퓨터공학과'; 
  
   -- 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 != '홍길동';
  
  -- 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);
  select * from student where grade != 2;

'MySQL' 카테고리의 다른 글

DELETE 구문과 조건절  (0) 2024.05.31
UPDATE 구문과 조건절  (0) 2024.05.31
테이블 생성과 제약 사항  (0) 2024.05.31
데이터베이스 구축 절차  (2) 2024.05.30
데이터베이스  (0) 2024.05.29