2024.06.13. THU. JOIN, Subquery
A.JOIN
1. equal join (등가조인 , 교집합)
select c.first_name, c.last_name ,
r.rental_date, r.return_date
from customer c
inner join rental r
on c.customer_id = r.customer_id
where c.first_name = 'MARY'
and date(r.rental_date = '2005-05-25');
select last_name, left(last_name,1)
from customer
where left (last_name, 1) = 'Q';
select c.first_name, c.last_name, a.address
from customer c join address a on c.address_id = a.address_id
where a.postal_code = 52137;
select e1.empno , e1.ename, e1.mgr,
e2.empno as mgr_emono, e2.ename as mgr_ename
from emp e1 inner join emp e2
on (e1.mgr = e2.EMPNO);
select e1.empno, e1.ename, e1.mgr,
e2.empno as mgr_emono, e2.ename as mgr_ename
from emp e1 left outer join emp e2
on (e1.mgr = e2.empno);
B. 필터링.
1. 동등 조건
SELECT rental_date
FROM rental
where date(rental_date) = '2005-06-14';
SELECT rental.rental_date
FROM rental
where date(rental_date) <> '2005-06-14';
SELECT rental_date
FROM rental
where date(rental_date) < '2005-05-28';
SELECT rental_date
FROM rental
where rental_date <= '2005-06-16'
and rental_date >= '2005-06-14';
SELECT rental_date
FROM rental
where rental_date between '2005-16-14' and '2005-06-16';
C. 데카르트 곱.
select count(*) from customer; /* 599건 */
select count(*) from address; /* 603건 */
select count(*) from customer c join address a; /*361,197*/
select customer_cnt.cnt ,address_cnt.cnt, cartesian_cnt.cnt
from
(select count(*) cnt from customer) customer_cnt,
(select count(*) cnt from address) address_cnt,
(select count(*) cnt
from customer c join address ) cartesian_cnt;