์๋ฌด ์๊ฐ์์ด select, from(์ด๋์ ์ค๋์ง) ์ ๋จผ์ ์น๊ณ ,
์ค์ ๋ค์ด๊ฐ๋ ๊ฒ์ ๊ณ ๋ฏผํ๊ณ ,
์ปฌ๋ผํ ๋ช ์ฌ๋ฅผ ๊ณ ๋ฏผํ๊ณ ,
Select
1) ์ง๋ฌธ์ ๊ฐ์? --> Sub Query
2) Table์ ๊ฐ์? --> Join (N-1๊ฐ)
3) ์กฐ๊ฑด์ ๊ฐ์, ์์น, ์ ํ?
- 1) ์ผ๋ฐ ์กฐ๊ฑด : from / where (where) <== Table์ column
- 2) ๊ทธ๋ฃน ์กฐ๊ฑด: group by / having (์กฐ๊ฑด) <== ์ง๊ณํจ์ ๊ฒฐ๊ณผ๊ฐ
์ ํ
1. Join ์กฐ๊ฑด
2. pont ์กฐ๊ฑด : ๋ฑ ์ด ๊ฐ์ด๋ค.
3. Range ์กฐ๊ฑด: ๋ฒ์ ์กฐ๊ฑด (>, <, =, between and ๋ฑ ํํ ๋ง์ด ์ฌ์ฉ)
4. ์ด๊ฑฐ ์กฐ๊ฑด: in( , , )
5. ์ํ ์กฐ๊ฑด: is null
6. ํจํด ์กฐ๊ฑด: like _ (ํ์๋ฆฌ ์๋ฌด๊ฑฐ๋), % (์ฌ๋ฌ์๋ฆฌ ์๋ฌด๊ฑฐ๋) ์ด๋ฆ์ด a๋ก ์์ํ๋ ์ฌ๋์ ๊ณจ๋ผ์ฃผ์ธ์
and / or / not ์กฐ๊ฑด $
์ ์คํฌ๋ฆฝํธ ๋ง๋ค๋ฉด ์ด๊ฑฐ ๋ฐ๊ฟ์ค์ผ!
Where01.sql
USE empdb;
SELECT ename
FROM emp
WHERE(ename = 'smith')
-- clerk ์
๋ฌด๋ฅผ ํ๋ ์ง์๋ค์ ์ด๋ฆ, ์
๋ฌด, ์ฌ๋ฒ์?
SELECT ename, job, enpno
FROM emp
WHERE (job = 'clerk');
-- ๊ธ์ฌ๊ฐ 3000 ์ด์์ธ ์ง์๋ค์ ์ด๋ฆ, ์ฌ๋ฒ, ๊ธ์ฌ๋?
SELECT ename, empno, sal
FROM emp
WHERE (sal >=3000);
-- ๊ธ์ฌ๊ฐ 1550~3000์ฌ์ด์ธ ์ง์๋ค์ ์ด๋ฆ, ์ฌ๋ฒ, ๊ธ์ฌ๋?
SELECT ename, empno, sal
FROM emp
WHERE(sal between 1550 and 3000);
-- 30๋ฒ ๋ถ์์์ salesman์ธ ์ง์๋ค์ ์ด๋ฆ, ๋ถ์๋ฒํธ, job์?
SELECT ename, deptno, job
FROM emp
WHERE (deptno = 30)
and (job = 'salesman');
-- ๊ธ์ฌ๊ฐ 1200 ~ 3000 ์ฌ์ด์ ์ง์๋ค ์ค ์
๋ฌด๊ฐ salesman ์ธ
-- ์ง์๋ค์ ์ด๋ฆ, ์ฌ๋ฒ, ์
๋ฌด, ๊ธ์ฌ๋?
select ename, empno, job, sal
from emp
where (sal between 1200 and 3000)
and (job = 'salesman');
-- ๊ธ์ฌ๊ฐ 1250, 1600, 3000 ์ธ ์ง์๋ค ์ค ์
๋ฌด๊ฐ analyst์ธ ์ง์๋ค์ ์ด๋ฆ, ์ฌ๋ฒ, ์
๋ฌด, ๊ธ์ฌ๋?
-- ๋ฐฉ๋ฒ 1.
select ename, empno, job, sal
from emp
where (sal = 1250 or sal = 1600 or sal = 3000)
and (job = 'analyst');
-- ๋ฐฉ๋ฒ 2.
select ename, empno, job, sal
from emp
where sal in (1250, 1600, 3000)
and (job = 'analyst');
-- S๋ก ์์ํ๋ ์ด๋ฆ์ ๊ฐ์ง ์ง์๋ค์ ์ด๋ฆ ์ฌ๋ฒ, ๊ธ์ฌ๋?
select ename, empno, sal
from emp
where(ename like 's%') ; -- % ์ฌ๋ฌ์๋ฆฌ ์๋ฌด๊ฑฐ๋, _ ํ ์๋ฆฌ ์๋ฌด๊ฑฐ๋
-- ์์์ ๋ ๋ฒ์งธ ์๋ฆฌ๊ฐ A๋ก ์์ํ๋ ์ด๋ฆ์ ๊ฐ์ง ์ง์๋ค์ ์ด๋ฆ ์ฌ๋ฒ?
select ename, empno, sal
from emp
where (ename like '_A%');
-- ๋ค์์ ๋ ๋ฒ์งธ ์๋ฆฌ๊ฐ A๋ก ์์ํ๋ ์ด๋ฆ์ ๊ฐ์ง ์ง์๋ค์ ์ด๋ฆ ์ฌ๋ฒ?
select ename, empno, sal
from emp
where (ename like '%A_');
SQL ์ฌ๋ฐ๋ค!!!!
null๊ฐ์์ผ๋ฉด ๊ณ์ฐ ๊ฐ ์ ๋๋ก ์๋์ค๋๊น,
๋ช ์ฌ ๊ฐ์ด null์ด๋ฉด 0์ผ๋ก ๋์ฒดํ์ => ifnull( ๋ช ์ฌ, 0)
GroupByHaving01.sql
-- GroupByHaving01.sql --
-- ๋ชจ๋ ์ง์๋ค์ ๊ธ์ฌ ํฉ๊ณ, ๊ธ์ฌ ํ๊ท , ์ต๋ ๊ธ์ฌ, ์ต์ ๊ธ์ฌ;
SELECT sum(sal), avg(sal), max(sal), min(sal) -- ์ด๋ฐ ๊ฒ๋ค์ด ์ง๊ณ(๊ทธ๋ฃน)ํจ์
from emp;
-- ์
๋ฌด ๋ณ ์ง์๋ค์ ๊ธ์ฌ ํฉ๊ณ, ๊ธ์ฌ ํ๊ท , ์ต๋ ๊ธ์ฌ, ์ต์ ๊ธ์ฌ;
SELECT job, sum(sal), avg(sal), max(sal), min(sal) -- ์ด๋ฐ ๊ฒ๋ค์ด ์ง๊ณ(๊ทธ๋ฃน)ํจ์
from emp
group by job; -- ๊ทธ๋ฃน๋ฐ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ์์ ์จ์ค๋ค. ๊ตฌ๋ถํด์ฃผ๊ธฐ ์ํด์!
-- ๋ถ์๋ฒํธ ๋ณ ํ๊ท ๊ธ์ฌ?
select deptno, avg(sal)
from emp
group by deptno ;
-- ์
๋ฌด๋ณ ํ๊ท ๊ธ์ฌ๊ฐ 3000 ์ด์์ธ ์
๋ฌด์ ํ๊ท ์?
select job, AVG(sal)
from emp
-- WHERE ( ํ๊ท ๊ธ์ฌ๊ฐ 3000์ด์? <-- ํ
์ด๋ธ์๋ ํ๊ท ๊ฐ ์๋์์์ผ๋ฏ๋ก where์๋ having์ ์ด๋ค)
group by job
having (avg(sal)>=3000);
-- ๋ถ์๋ฒํธ๋ณ ํ๊ท ๊ธ์ฌ๊ฐ 2000์ด์์ธ ๋ถ์๋ฒํธ์ ํ๊ท ๊ธ์ฌ๋?
SELECT deptno, avg(sal)
from emp
group by deptno
having (AVG(sal)>2000);
-- ์
๋ฌด๋ณ 1๋
์๋ํ๊ท ์ด 30000 ์ด์์ธ ์
๋ฌด์ ํ๊ท ์? ( 1๋
์๋ => 12๊ฐ์ ๊ธ์ฌ + ์ปค๋ฏธ์
)
SELECT job, avg(sal * 12 + ifnull(comm,0)) as "์๋ํ๊ท "
from emp
group by job
having avg(sal * 12 + ifnull(comm,0))>=30000;
-- salesman ์
๋ฌดํ๋ ์ง์๋ค์ ํ๊ท ๊ธ์ฌ๋?
SELECT job, AVG(sal)
from emp
where job = 'salesman'
์ง๊ณํจ์ having!
ํ ์ด๋ธ๊ฐ where!
'PlayData > MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Day 18 | MySQL] DAO, VO๋ฑ (์ดํด ing) (2) | 2021.12.02 |
---|---|
[Day 16 | MySQL] Table, Variable, ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง, (0) | 2021.12.01 |
[Day 15 | MySQL] SubQuery, DML, Table and ๊ณผ์ (0) | 2021.11.29 |
[Day14 | MySQL] Join(ANSI Join, inner join, outer join, cross join etc.) (0) | 2021.11.26 |
[Day12 | MySQL] MySQL, Workbench, ํ๊ฒฝ๋ณ์ ์ค์ , select, order by, distinct, ๋ณ๋ช (0) | 2021.11.24 |