SELECT * FROM 도서대출내역2
WHERE~
위는 기본 형태입니다. WHERE 조건절을 몇 개 더 추가할 수 있습니다.
SELECT * FROM 도서대출내역2
WHERE
조건1
AND 조건2
AND 조건3
AND (조건4 OR 조건5);
이렇게 다양한 조건을 추가할 수 있습니다.
WHERE 조건절 안에서 쓸 수 있는 몇 가지를 살펴보겠습니다.
도서대출내역2 테이블에서 문씨 형제의 결과만 가져오겠습니다.
SELECT * FROM 도서대출내역2
WHERE 이름 LKIE "문%";
for row in c.execute('SELECT * FROM 도서대출내역2 WHERE 이름 LIKE "문%" ;'):
print(row)
>>>
('101', '문강태', '2020-06', '20일')
('103', '문상태', '2020-06', '8일')
LIKE는 문자열 컬럼에서 사용할 수 있습니다. 해당 문자를 포함하거나 해당 문자로 시작 또는 종료를 불러올 수 있습니다.
문자열은 꼭 큰 따옴표 "" 를 사용해 감싸주어야합니다.
SELECT * FROM 도서대출내역
WHERE 대출일 >= "2020-06-01"
AND 대출일 <= "2020-06-07" ;
for row in c.execute('SELECT * FROM 도서대출내역 WHERE 대출일 >= "2020-06-01" AND 대출일 <= "2020-06-07" ;'):
print(row)
>>>
('101', '문강태', 'aaa', '2020-06-01', '2020-06-05')
('102', '고문영', 'bbb', '2020-06-01', None)
('103', '문상태', 'ccc', '2020-06-01', '2020-06-05')
위처럼 부등호를 사용해 결과를 조회할 수 있고, BETWEEN 이라는 함수를 사용해 활용할 수 있습니다.
SELECT * FROM 도서대출내역
WHERE 대출일 BETWEEN "2020-06-01" AND "2020-06-07" ;
for row in c.execute('SELECT * FROM 도서대출내역 WHERE 대출일 BETWEEN "2020-06-01" AND "2020-06-07" ;'):
print(row)
>>>
('101', '문강태', 'aaa', '2020-06-01', '2020-06-05')
('102', '고문영', 'bbb', '2020-06-01', None)
('103', '문상태', 'ccc', '2020-06-01', '2020-06-05')
SELECT *, CAST(SUBSTR(대출일수, 1, (length(대출일수)-1)) AS INT) AS 대출일수수정
FROM 도서대출내역2
WHERE 대출일수수정 > 5;
for row in c.execute('SELECT *, CAST(SUBSTR(대출일수, 1, (length(대출일수)-1)) AS INT) AS 대출일수_수정 FROM 도서대출내역2 WHERE 대출일수_수정 > 5'):
print(row)
>>>
('101', '문강태', '2020-06', '20일', 20)
('102', '고문영', '2020-06', '10일', 10)
('103', '문상태', '2020-06', '8일', 8)
NULL(NONE)은 정보가 없는 상태입니다.
SELECT * FROM 도서대출내역
WHERE 반납일 IS NOT NULL;
for row in c.execute('SELECT * FROM 도서대출내역 WHERE 반납일 IS NOT NULL;'):
print(row)
>>>
('101', '문강태', 'aaa', '2020-06-01', '2020-06-05')
('101', '문강태', 'ccc', '2020-06-20', '2020-06-25')
('103', '문상태', 'ccc', '2020-06-01', '2020-06-05')
WHERE 반납일 IS NOT NULL 은 반납일이 NULL이 아닌 값의 조회를 원한다는 뜻입니다. 반납일이 NULL이라는 것은 미반납 상태 또는 반납일에 대한 정보가 없다는 뜻입니다. NULL 값이 아닌 사람들은 반납을 한 사람들이겠죠.
NULL인 사람도 조회해보겠습니다.
SELECT * FROM 도서대출내역
WHERE 반납일 IS NULL ;
for row in c.execute('SELECT * FROM 도서대출내역 WHERE 반납일 IS NULL;'):
print(row)
>>>
('102', '고문영', 'bbb', '2020-06-01', None)
('102', '고문영', 'ddd', '2020-06-08', None)
('104', '강기둥', None, None, None)
Q3. '도서대출내역' 테이블에서 다음 조건들을 만족하는 사용자의 이름을 구하는 쿼리를 작성해 보세요.
SELECT 이름 FROM 도서대출내역
WHERE 이름 LIKE "%태"
AND 대출일 >= "2020-06-19"
AND ID < 102
AND 반납일 IN NOT NULL
여기까지 실습을 따라오느라 수고 많으셨습니다!👏 시작의 발걸음을 뗀 그대에게 박수를 드립니다.🥳