데이터 필터링(Filtering)
여러 데이터들 중에서 원하는 것만 걸러내는 것
WHERE절을 사용해서 걸러낼 수 있음!
단일 조건
WHERE 조건
비교연산자
!=, >, >=, = <=, <
다중 조건 필터링
논리 연산자(AND, OR, NOT, ***)를 사용하여 필터링
- AND (교집합 / 모든 조건에 해당하면)
WHERE 조건1 AND 조건2
- OR (합집합 / 조건들 중 하나라도 해당하면)
WHERE 조건1 OR 조건2
학생 테이블 생성
-- 학생 테이블 생성
CREATE TABLE students (
id INTEGER,
nickname VARCHAR(50),
math_score INTEGER,
english_score INTEGER,
programming_score INTEGER
);
학생 레코드 추가
-- 학생 레코드 추가
INSERT INTO
students(id, nickname, math_score, english_score, programming_score)
VALUES
(1, 'Spakles', 98, 96, 93),
(2, 'Soldier', 82, 66, 98),
(3, 'Lapooheart', 84, 70, 82),
(4, 'Slick', 87, 99, 98),
(5, 'Smile', 75, 73, 70),
(6, 'Jellyboo', 84, 82, 70),
(7, 'Bagel', 97, 91, 87),
(8, 'Queen', 99, 100, 88);
전체 학생 정보
-- 전체 학생 정보**
SELECT
*
FROM
students;
모든 과목 성적이 90점 이상이어야 함으로 AND연산자를 활용하여 교집합을 구함
-- 모든 과목 성적이 다 90점 이상인 학생 정보
SELECT
*
FROM
students
WHERE
math_score >= 90
AND
english_score >= 90
AND
programming_score >= 90;
75점 미만 과목이 하나라도 있는 학생을 구하여야 함으로 OR연산자를 활용하여 합집합을 구함
-- 75점 미만 과목이 하나라도 있는 학생 정보
SELECT
*
FROM
students
WHERE
math_score < 75
OR
english_score < 75
OR
programming_score < 75;
산술 연산자를 활용하여 총점을 구하고 AS를 활용하여 별칭 지정
-- 모든 학생별 정보와 성적 총점
SELECT
*, -- 모든 컬럼을 보여줘!
math_score + english_score + programming_score AS total -- AS > 별칭 지정
FROM students
;
산술 연산자를 활용하여 총점을 구하고 AS를 활용하여 별칭 지정
-- 모든 학생별 정보와 성적 평균
SELECT
*, -- 모든 컬럼을 보여줘!
(math_score + english_score + programming_score)/3 AS average -- 성적 평균
FROM students
;
산술 연산자를 활용하여 총점을 구하고 AS를 활용하여 별칭 지정하고
WHERE 조건문을 통해 총점이 270점 이상인 학생을 구함
-- 총점이 270점 이상인 학생의 이름, 성적 총점, 성적 평균
SELECT
nickname,
math_score + english_score + programming_score AS total,
(math_score + english_score + programming_score)/3 AS average
FROM
students
WHERE
math_score + english_score + programming_score >= 270;