[강의명]
패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반
[수강목록]
2주차 과제 풀이 (SQL 21~38번 문제)
[강의내용]
문제30번) customer 테이블을 이용하여 이름이 Maria, Lisa, Mike에 해당하는 고객의 id, 이름, 성을 확인해주세요.
이름이 3개 중 하나라도 해당되는 고객들의 정보를 출력해야 한다.
WHERE ~ IN (문자열 집합)을 사용하면 된다.
SELECT customer_id, first_name, last_name
FROM customer c
WHERE first_name IN ('Maria', 'Lisa', 'Mike');
문제31번) film 테이블을 이용하여, film의 길이가 100~120 에 해당하거나
rental 대여기간이 3~5일에 해당하는 film 의 모든 정보를 확인해주세요.
조건 A이고B를 나타내기 위해 AND를 사용했다면, 조건 A또는B를 나타내기 위해서는 OR를 사용한다.
SELECT *
FROM film f
WHERE length BETWEEN 100 AND 120
OR rental_duration BETWEEN 3 AND 5;
두 조건 중 하나만 만족해도 쿼리 결과로 출력된다.
(쿼리 결과 생략)
문제32번) address 테이블을 이용하여, postal_code 값이 공백('') 이거나
35200, 17886 에 해당하는 address 에 모든 정보를 확인해주세요.
postal_code의 35200, 17886 또한 텍스트타입이므로, IN 절에서 공백과 묶어서 사용할 수 있다.
공백('')은 NULL값과 다른것을 유의해야 한다. (NULL값은 아무 값도 입력 안된 상태)
SELECT *
FROM address a
WHERE postal_code IN ('', '35200', '17886');
문제33번) address 테이블에서 address의 상세주소(=address2)값이 존재하지 않는 모든 데이터를 확인해 주세요.
값이 존재하지 않는 상태는 NULL을 의미한다.
공백인 상태는 값이 존재 하는 것이다. (스페이스바 또는 엔터 또는 공백특수문자가 존재)
NULL인지 아닌지를 보기 위해서는 IS NULL을 사용한다. (이퀄 기호를 쓰지 않음에 주의한다)
SELECT *
FROM address a
WHERE address2 IS NULL;
문제34번) staff 테이블을 이용하여, staff의 사진의 값이 있는 직원의 id, 이름, 성을 확인해주세요.
단 이름과 성을 하나의 컬럼으로 이름, 성의 형태로 새로운 컬럼 name 컬럼으로 도출해주세요.
텍스트를 잇는 방법은 concat함수 또는 || 기호(| : bar, 키보드에서 \기호의 윗첨자)를 사용하는 2가지의 방법이 있다.
그리고 생성된 SELECT 컬럼을 Alias를 통해 새롭게 이름지어주면 된다.
SELECT first_name || ', ' || last_name AS name
FROM staff s
WHERE picture IS NOT NULL;
문제35번) rental 테이블을 이용하여, 대여는 했으나 아직 반납 기록이 없는 대여건의 모든 정보를 확인해주세요.
rental 테이블의 rental_date는 대여일, return_date는 반납일을 나타낸다.
대여일에 값은 존재하나(NOT NULL) 반납일에는 값이 없는(NULL) 조건을 부여하면 된다.
SELECT *
FROM rental r
WHERE rental_date IS NOT NULL
AND return_date IS NULL;
문제36번) address 테이블을 이용하여, postal_code 값이 35200, 17886이거나
address2가 빈 값(NULL)에 해당하는 address 에 모든 정보를 확인해주세요.
앞서 살펴본 조건을 병렬적으로 OR를 사용해 조건을 부여하면 된다.
SELECT *
FROM address a
WHERE postal_code IN ('35200', '17886')
OR address2 IS NULL;
문제37번) 고객의 성에 John 이라는 단어가 들어가는, 고객의 이름과 성을 모두 찾아주세요.
앞서 해결한 유형과 비슷하다. 이번에는 이름에 John이 아무곳에나 들어가는 고객의 성명을 찾는다.
aJohn, Johna, aJohna, John 과 같이 John 앞뒤로 어떤 문자가 존재하든 출력이 되어야 한다.
SELECT customer_id, first_name, last_name
FROM customer c
WHERE last_name LIKE '%John%';
문제38번) 주소 테이블에서, address2 값이 null 값인 row 전체를 확인해볼까요?
SELECT *
FROM address a
WHERE address2 IS NULL;