🫅스파르타 코딩클럽/SQL

2022-11-06 SQL 4주차

박필중 2022. 11. 6. 21:24
728x90

문법 정리


  • SELECT
select * from 필중 a

select 친구이름, 주소, 연락처, 나이 from 필중 a

1-> 필중의 테이블에서 모든 필드와 데이터를 보여달라.

1->테이블 필중을 이하 a라고 부르겠다. (알리아스, Alias라고 한다. 알리아스=줄임말)

3->테이블 에서 친구이름, 주소, 연락처, 나이 필드만 따로 보여달라.


  • WHERE
select 친구이름 from 필중 a
where a.나이 = 25

1-> 필중 테이블에서 친구이름을 보여달라.

2-> 다만 나이가 25살에 해당하는 친구나이가 조건이다.


  • LIKE, SUBSPRING
select 친구이름 from 필중 a
where 친구 주소 like '%광역시%'

select 친구이름, SUBSPRING_INDEX(이메일, '@', -1) from 필중 a

select 친구이름, SUBSPRING(만난날짜, 1, 10) from 필중 a

1-> 필중 테이블에서 친구이름을 보여달라.

2->다만 친구주소에 앞뒤 상관없이 광역시가 포함된 친구주소가 조건이다.

4-> 필중 테이블에서 친구이름과 이메일 필드에서 @ 문자 뒤에 오는 데이터를 나타내라.

6-> 필중 테이블에서 친구이름과 만난날짜 필드에서 첫번째 문자부터 열번째 문자 데이터를 나타내라.


  • GROUP BY
select 친구이름 from 필중 a
group by 만난장소

1-> 필중 테이블에서 친구이름을 보여달라.

2-> 필중이와 만난 장소를 기준으로 보여달라.

 


  • ORDER BY
select 친구이름 from 필중 a
group by 만난장소
order by 만난날짜

1-> 필중 테이블에서 친구이름을 보여달라.

2-> 필중이와 만난 장소를 기준으로 보여달라.

3-> 필중이와 만난 날짜를 오름차순으로 보여달라.


  • COUNT, MIN, MAX, AVG, SUM
select count(*) from 필중 a
group by 성별

seselect min(a.나이) from 필중 a
group by 친구나이

select max(a.나이) from 필중 a
group by 친구나이

select avg(a.나이) from 필중 a
group by 친구나이

select sum(도움 횟수) from 필중 a
group by 친한정도

1-> 테이블 필중에서 범주만큼 개수를 구하라.

2-> 성별에 따라 범주를 묶어라.

5-> 테이블 필중에서 범주에서 가장 최솟값을 구하라.

6-> 친구나이에 따라 범주를 묶어라.

8-> 테이블 필중에서 범주에서 가장 최댓값을 구하라.

9-> 친구나이에 따라 범주를 묶어라.

11->테이블 필중에서 범주에서 평균값을 구하라.

12-> 친구나이에 따라 범주를 묶어라.

14->테이블 필중에서 범주에서 도움받은 횟수를 모두 더하라.

15->> 친한 정도에 따라 범주를 묶어라.


  • JOIN
select * from 필중 a
inner join 성후 b on b.친구이름 = a.친구이름

select * from 필중 a
left join 박씨네 b on b.가족이름 = a.가족이름

1->테이블 필중의 데이터를 보여라.

2->성후 테이블과 필중의 테이블을 합치되, 공통된 필드명 친구이름을 기준으로 합친다.

4->테이블 필중의 데이터를 보여라.

5->필중 테이블에 성후의 테이블을 붙이되, 공통된 필드명 가족이름을 기준으로 합친다.

5-> 다만 모든 필드가 데이터로 채워져있지 않을 수 있기 때문에 조건문 is NULL 혹은 is not NULL을 사용해서 결과를 도출한다.


  • UNION
(
select * from 상반기 결산
group by 날짜
)
union all
(
select * from 하반기 결산
group by 날짜
)

2-> 테이블 상반기 결산 데이터를 보여라.

3-> 날짜를 범주로 묶어서 나타내라.

5-> 수평적으로 해당되는 테이블을 연결한다.

7-> 테이블 하반기 결산 데이터를 보여라.

8-> 날짜를 범주로 묶어서 나타내라.


  • SUBQUERY
select a.친구이름,
	   a.친구나이,
       a.친구연봉,
       (
       select avg(친구연봉) from 필중
       ) as 평균연봉
from 필중 a

1-> 친구이름 필드를 보여라

2-> 친구나이 필드를 보여라

3-> 친구연봉 필드를 보여라

5-> 서브쿼리로서 테이블 필중에서 친구연봉의 평균을 보여라.

6->친구연봉의 평균을 평균연봉으로 필드명을 바꿔라

7->필중 테이블에서 각 데이터를 보여라


  • WITH
with table1 as 
(select avg(친구연봉) from 필중)
select a.친구이름,
	   a.친구나이,
       a.친구연봉,
       (table1) as 평균연봉
from 필중 a

1-> 아래와 같은 테이블을 tabel1이라 칭하겠다.

2-> 테이블 필중에서 친구연봉의 평균을 나타내라

3-> 친구이름 필드를 보여라

4-> 친구나이 필드를 보여라

5-> 친구연봉 필드를 보여라

6-> table1을 평균연봉 필드명으로 바꿔 나타내라

7-> 테이블 필중에서 각 데이터를 보여라.


  • CASE
with table1 as 
(select avg(친구연봉) from 필중)
select a.친구이름,
	   a.친구나이,
       ( case when a.친구연봉> (table1) then '비결이 뭐지?'
              when a.친구연봉= (table1) then '그렇군'
              else '열심히 살아야겠네.' end) as msg
from 필중 a

 

1-> 아래와 같은 테이블을 tabel1이라 칭하겠다.

2-> 테이블 필중에서 친구연봉의 평균을 나타내라

3-> 친구이름 필드를 보여라

4-> 친구나이 필드를 보여라

5-> 친구연봉이 table1보다 크다면 '비결이 뭐지?'라고 나타내고

6-> 친구연봉이 table1과 같다면 '그렇군'라고 나타내고

7-> 그게 아니라면 나머지는 전부 '열심히 살아야겠네'라고 나타낸다.

7-> 이 필드명은 msg라고 표시한다.

8-> 테이블 필중에서 각 데이터를 보여라.

728x90