SQL 5일차 16,생각2

박철민·2021년 7월 24일
0

제로베이스SQL100제

목록 보기
7/19

수강날짜 2021-07-23

16강의명 : 실습 문제-2
강의명 : 생각대로 SQL-2

문제 : 고객들에게 단체 이메일을 전송 하고자 한다. CUSTOMER 테이블에서 고객의 EMAI주소를 추출하고, 이메일 형식에 맞지 않는 이메일 주소는 제외시켜라. (이메일 형식은 '@'가 존재해야 하고 '@'로 시작하지 말아야 하고 '@'로 끝나지 말아야 한다.)

풀이
이메일에 형식을 LIKE 연산자를 이용해야 한다.
중간에 '@'가 있어야한다. '%@%'이렇게 하면 모든 것에 대하여 대응한다. 그러나 앞과 뒤에 아무것도 없으면 안된다.
이걸 단순하게 해결하면

WHERE email LIKE '%@%' 
  AND NOT LIKE '@%'
  AND NOT LIKE '%@'

이런 식으로 모든 @가 들어간 경우에서 앞에 @가 들어간 경우와 뒤에 @가 들어간 경우를 빼줄 수 있다.

결과 화면


생각대로2

문제1번) film 테이블을 활용하여, film 테이블의 100개의 row 만 확인해보세요.

select *
  from film
 limit 100;

문제2번) actor 의 성(last_name) 이 Jo 로 시작하는 사람의 id 값이 가장 낮은 사람 한사람에 대하여, 사람의 id 값과 이름, 성 을 알려주세요.

select actor_id, first_name, last_name 
  from actor
 where last_name like 'Jo%'
 order by actor_id
 limit 1;

문제3번)film 테이블을 이용하여, film 테이블의 아이디값이 1~10 사이에 있는 모든 컬럼을 확인해주세요.

select *
  from film
 where film_id between 1 and 10;

문제4번) country 테이블을 이용하여, country 이름이 A 로 시작하는 country 를 확인해주세요.

select *
  from country
 where country like 'A%';

문제5번) country 테이블을 이용하여, country 이름이 s 로 끝나는 country 를 확인해주세요.

select *
  from country
 where country like '%s';

문제6번) address 테이블을 이용하여, 우편번호(postal_code) 값이 77로 시작하는 주소에 대하여, address_id, address, district ,postal_code 컬럼을 확인해주세요.

select address_id, address, district, postal_code 
  from address
 where postal_code like '77%';

문제7번) address 테이블을 이용하여, 우편번호(postal_code) 값이 두번째글자가 1인 우편번호의 address_id, address, district ,postal_code 컬럼을 확인해주세요.

select address_id, address, district, postal_code 
  from address
 where postal_code like '_1%';

문제8번) payment 테이블을 이용하여, 고객번호가 341에 해당 하는 사람이 결제를 2007년 2월 15~16일 사이에 한 모든 결제내역을 확인해주세요.

select *
  from payment
 where customer_id = 341
   and date(payment_date) between '2007-02-15' and '2007-02-16';

문제9번) payment 테이블을 이용하여, 고객번호가 355에 해당 하는 사람의 결제 금액이 1~3원 사이에 해당하는 모든 결제 내역을 확인해주세요.

select *   
  from payment
 where customer_id = 355
   and amount  between 1 and 3;

문제10번) customer 테이블을 이용하여, 고객의 이름이 Maria, Lisa, Mike 에 해당하는 사람의 id, 이름, 성을 확인해주세요.

select customer_id, first_name, last_name 
  from customer
 where first_name in ('Maria', 'Lisa', 'Mike');

문제11번) film 테이블을 이용하여, film의 길이가 100~120 에 해당하거나 또는 rental 대여기간이 3~5일에 해당하는 film 의 모든 정보를 확인해주세요.

select *
  from film
 where length between 100 and 120
    or rental_duration between 3 and 5;

문제12번) address 테이블을 이용하여, postal_code 값이 공백('') 이거나 35200, 17886 에 해당하는 address 에 모든 정보를 확인해주세요.

select *
  from address
 where postal_code in ('','35200','17886');

문제13번) address 테이블을 이용하여, address 의 상세주소(=address2) 값이 존재하지 않는 모든 데이터를 확인하여 주세요.

select *
  from address
 where address2 is null;

문제14번) staff 테이블을 이용하여, staff 의 picture 사진의 값이 있는 직원의 id, 이름,성을 확인해주세요. 단 이름과 성을 하나의 컬럼으로 이름, 성의형태로 새로운 컬럼 name 컬럼으로 도출해주세요.

select staff_id, first_name || ' ' || last_name as name 
  from staff
 where picture is not null;

문제15번) rental 테이블을 이용하여, 대여는했으나 아직 반납 기록이 없는 대여건의 모든 정보를 확인해주세요.

select *
  from rental
 where return_date is null;

문제16번) address 테이블을 이용하여, postal_code 값이 빈 값(NULL) 이거나 35200, 17886 에 해당하는 address 에 모든 정보를 확인해주세요.

select *
  from address
 where postal_code is null
   or postal_code in('35200','17886');

문제17번) 고객의 성에 John 이라는 단어가 들어가는, 고객의 이름과 성을 모두 찾아주세요.

select first_name, last_name 
  from customer
 where last_name like '%John%'

문제18번) 주소 테이블에서, address2 값이 null 값인 row 전체를 확인해볼까요?

select *
  from address
 where address2 is null; 

profile
취준좀비 컴공

0개의 댓글