2021-04-27(Tue)
ํญ๋ชฉ
๋ด์ฉ
ํ์ต ๋ ์ง
2021-04-27(ํ)
ํ์ต ์๊ฐ
09:00~23:00
ํ์ต ๋ฒ์ ๋ฐ ์ฃผ์
AWS EC2
ํ์ต ๋ชฉํ
Rails ์๋น์ค ๋ฐฐํฌํ์.
๋๋ฃ ํ์ต ๋ฐฉ๋ฒ
-
์์ธ ํ์ต ๋ด์ฉ
๊ฐ๋จํ๊ฒ ํธ๋ ์ผ๋์ค ํ๋ก์ ํธ๋ฅผ AWS EC2๋ก ๋ฐฐํฌํ์๋ค!
๋ฐฐํฌ ๋งํฌ: https://bit.ly/3sU04CL
Nginx ์ Capistrano ์กฐํฉ์ ์ด์ฉํด์ ์์ฉ ์๋น์ค์ฒ๋ผ ๋ฐฐํฌํ๋ ๊ฒ๋ ๊ณ ๋ คํด๋ณด์์ผ๋, ์ง๊ธ ํด์ผํ ํ๋ก์ ํธ๊ฐ ๋ง์์ ์ฐ์ ์์์์ ๋ฏธ๋ค๋ค.
์ฐธ๊ณ
https://kbs4674.tistory.com/126
๊ทธ๋ฆฌ๊ณ SQL์ ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ ์ก๊ธฐ ์ํด ์ฑ ์ ์ฝ์๋ค.
SQL ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ ์ก์
RDBMS๋ก ๊ฐ์ฒด ๋ค๋ฃจ๋ฏ ํ๋ค๋ณด๋ SQL ๋ฌธ๋ฒ์ด ํท๊ฐ๋ฆฐ๋ค.
์กฐ์ธ(Join)
์กฐ์ธ ๊ธฐ๋ฒ์ ์ข ๋ฅ
๊ณฑ์งํฉ(cartesian product)
๊ฐ๋ฅํ ๋ชจ๋ ํ์ ์กฐ์ธ
๋๋ฑ ์กฐ์ธ(equi join or inner join)
์กฐ์ธ ์กฐ๊ฑด์ด ์ ํํ ์ผ์นํ๋ ๊ฒฝ์ฐ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ
๋น๋๋ฑ ์กฐ์ธ(non equi join)
์กฐ์ธ ์กฐ๊ฑด์ด ์ ํํ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ
์ธ๋ถ ์กฐ์ธ(outer join)
์กฐ์ธ ์กฐ๊ฑด์ด ์ ํํ ์ผ์นํ์ง ์์๋ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ
์์ฒด ์กฐ์ธ(self join)
์์ฒด ํ ์ด๋ธ์์ ์กฐ์ธํ๊ณ ์ ํ ๋ ์ฌ์ฉ
๋๋ฑ ์กฐ์ธ ์์
-- employees ํ
์ด๋ธ๊ณผ departments ํ
์ด๋ธ๊ณผ locations ํ
์ด๋ธ์ ์กฐ์ธ ์์
โ
SELECT A.employee_id, A.department_id, B.department_name, C.location_id, C.city
FROM employees A, departments B, locations C
WHERE A.department_id = B.department_id
AND B.location_id = C.location_id;
์ธ๋ถ ์กฐ์ธ
์ธ๋ถ ์กฐ์ธ์ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์์ ํ๋ ๋ชจ๋ ์ถ๋ ฅํ๊ธฐ ์ํ ์กฐ์ธ ๊ธฐ๋ฒ.
-- employees ํ
์ด๋ธ๊ณผ departments ํ
์ด๋ธ์ department_id๋ก ์ธ๋ถ ์กฐ์ธํ์ฌ department_id๊ฐ null ๊ฐ์ธ Kimberely Grant๋ ํจ๊ป ์ถ๋ ฅํด๋ผ.
โ
SELECT A.employee_id, A.first_name, A.last_name, B.department_id, B.department_name
FROM employees A, departemnts B
WHERE A.department_id = B.department_id(+)
ORDER BY A.employee_id;
์๋์ฒ๋ผ ์ฝ๊ฒ ์๊ฐํด๋ณด์.
์์ชฝ ํ ์ด๋ธ ์ค ์ ๋ถ ์ถ๋ ฅํ๊ณ ์ถ์ ํ ์ด๋ธ ์ชฝ์ ๋จผ์ ์๊ฐํ๋ค.
(+)๋ ๋ค๋ฅธ ์ชฝ ํ ์ด๋ธ ์ชฝ ์กฐ์ธ ์กฐ๊ฑด์ ๋ถ์ธ๋ค.
์์ฒด ์กฐ์ธ
์์ฒด ์กฐ์ธ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ณ์นญ์ ์ฌ์ฉํด์ผ ํ๋ค.
-- employees ํ
์ด๋ธ์ ์์ฒด ์กฐ์ธํ์ฌ ์ง์๋ณ ๋ด๋น ๋งค๋์ ๊ฐ ๋๊ตฌ์ธ์ง ์กฐํํ์.
SELECT A.employee_id, A.first_name, A.last_name, A.manager_id, B.first_name || ' ' B.last_name manger_name
FROM employees A, employees B
WHERE A.manager_id = B.employee_id
ORDER BY A.employee_id;
์งํฉ ์ฐ์ฐ์
์งํฉ ์ฐ์ฐ์๋ฅผ ์ด์ฉํด๋ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ ์ ์๋ค. ๊ฐ๋จํ๊ฒ ํฉ์งํฉ, ๊ต์งํฉ, ์ฐจ์งํฉ์ด๋ผ ์๊ฐํ๋ฉด ๋๋ค.
์ข ๋ฅ
UNION
SELECT ๋ฌธ์ ์กฐํ ๊ฒฐ๊ณผ์ ํฉ์งํฉ. ์ค๋ณต๋๋ ํ์ ํ ๋ฒ๋ง ์ถ๋ ฅํ๋ค. (ํฉ์งํฉ)
UNION ALL
SELECT ๋ฌธ์ ์กฐํ ๊ฒฐ๊ณผ์ ํฉ์งํฉ. ์ค๋ณต๋๋ ํ๋ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ค. (ํฉ์งํฉ)
INTERSET
SELECT ๋ฌธ์ ์กฐํ ๊ฒฐ๊ณผ์ ๊ต์งํฉ. ์ค๋ณต๋๋ ํ๋ง ์ถ๋ ฅํ๋ค. (๊ต์งํฉ)
MINUS
์ฒซ ๋ฒ์งธ SELECT ๋ฌธ์ ์กฐํ ๊ฒฐ๊ณผ์์ ๋ ๋ฒ์งธ ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ๋บ๋ค. (์ฐจ์งํฉ)
-- employees ํ
์ด๋ธ์ department_id ์งํฉ๊ณผ departments ํ
์ด๋ธ์ department_id ์งํฉ์ UNION ์ฐ์ฐ์๋ฅผ ์ด์ฉํด ํฉ์ณ ๋ณด์ธ์.
โ
SELECT department_id
FROM employees
UNION
SELECT department_id
FROM departments;
์๋ธ์ฟผ๋ฆฌ
์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ ๋ฉ์ธ ์ฟผ๋ฆฌ์ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉ๋๋ค.
๋ฉ์ธ ์ฟผ๋ฆฌ์ ์๋ธ ์ฟผ๋ฆฌ์ ์ฐ๊ฒฐ ํํ๋ ์ฐ์ฐ์์ ๋ฐ๋ผ ์๋ฏธ๊ฐ ๋ค๋ฅด๋ค.
์ฐ์ฐ์ ๊ตฌ๋ถ
์ข ๋ฅ
์ฌ์ฉ์ฒ
๋จ์ผ ํ ์ฐ์ฐ์
=, >, >=, <, <=, <>, !=
๋จ์ผ ํ ์๋ธ์ฟผ๋ฆฌ, ๋ค์ค ์ด ์๋ธ์ฟผ๋ฆฌ
๋ค์ค ํ ์ฐ์ฐ์
IN, NOT IN, EXISTS, ANY, ALL
๋ค์ค ํ ์๋ธ์ฟผ๋ฆฌ, ๋ค์ค ์ด ์๋ธ์ฟผ๋ฆฌ
๋จ์ผ ํ ์๋ธ์ฟผ๋ฆฌ
-- employees ํ
์ด๋ธ์ last_name์ด 'De Haan'์ธ ์ง์๊ณผ salary๊ฐ ๋์ผํ ์ง์์๋ ๋๊ฐ ์๋์ง ๋จ์ผ ํ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํด์ ์ถ๋ ฅํด๋ณด์.
โ
SELECT *
FROM employees A
WHERE A.salary = (
SELECT salary
FROM employees
WHERE last_name = 'De Haan'
)
๋ค์ค ํ ์๋ธ์ฟผ๋ฆฌ
-- employees ํ
์ด๋ธ์์ department_id๋ณ๋ก ๊ฐ์ฅ ๋ฎ์ salary๊ฐ ์ผ๋ง์ธ์ง ์ฐพ์๋ณด๊ณ , ์ฐพ์๋ธ salary์ ํด๋นํ๋ ์ง์์ด ๋๊ตฌ์ธ์ง ๋ค์ค ํ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํด ์ฐพ์๋ณด์.
โ
SELECT *
FROM employees A
WHERE A.salary = IN (
SELECT MIN(salary) ์ต์ ๊ธ์ฌ
FROM employees
GROUP BY department_id
)
ORDER BY A.salary DESC;
๋ค์ค ์ด ์๋ธ์ฟผ๋ฆฌ
-- employees ํ
์ด๋ธ์์ job_id๋ณ๋ก ๊ฐ์ฅ ๋ฎ์ salary๊ฐ ์ผ๋ง์ธ์ง ์ฐพ์๋ณด๊ณ , ์ฐพ์๋ธ job_id๋ณ salary์ ํด๋นํ๋ ์ง์์ด ๋๊ตฌ์ธ์ง ๋ค์ค ์ด ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํด ์ฐพ์๋ณด์.
โ
SELECT *
FROM employees A
WHERE (A.job_id, A.salary) IN (
SELECT job_id, MIN(salary) ๊ทธ๋ฃน๋ณ๊ธ์ฌ
FROM employees
GROUP BY job_id
)
ORDER BY A.salary DESC;
FROM ์ ์๋ธ์ฟผ๋ฆฌ: ์ธ๋ผ์ธ ๋ทฐ
FROM ์ ์์๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค!
-- ์ง์ ์ค์์ department_name์ด IT์ธ ์ง์์ ์ ๋ณด๋ฅผ ์ธ๋ผ์ธ ๋ทฐ๋ฅผ ์ด์ฉํด์ ์ถ๋ ฅํด ๋ณด๋ผ.
โ
SELECT *
FROM employees AS A,
(
SELECT department_id
FROM departments
WHERE department_name = 'IT'
) AS B
WHERE A.departemnt_id = B.department_id;
ํ์ต ๋ด์ฉ์ ๋ํ ๊ฐ์ธ์ ์ธ ์ดํ
๋ค์ ํ์ต ๊ณํ
Last updated
Was this helpful?