SQL 정리글을 작성하는 이유
- 알고리즘 코딩테스트를 위함
- 인턴 중, SQL Query관련 업무가 있기 때문
이 글의 목적
- 다 잊었더라도 한 번만 읽고 따라쳐도 어느정도 익힐 수 있도록 하기 위함
- sql 공부할 때마다 보는 youtube 영상 보면서 따라치기 위함
중요!
- 이 글은 youtube강좌를 보면서 따라 적으며 공부한 글입니다. 이 글을 보는 것보다 링크 걸어둔 youtube영상이 100만배 더 도움이 될 듯합니다.
- https://www.youtube.com/watch?v=vgIc4ctNFbc
1. city 테이블에 있는 전체 컬럼에 대해서 보여줌
SELECT * FROM CITY;
2. city 테이블에 있는 name, population 열 칼럼에 대해서 보여줌
select name, population from city;
3. city 테이블에서 population이 80이 넘는 데이터만 출력
select *
from city
where population > 80;
4. and, or로도 검색을 할 수 있다.
select *
from city
where population < 80
and population > 70;
5. between ~ and 으로 연속적인 범위를 지정할 수 있다.
select *
from city
where population between 70 and 80;
말 그대로 population이 70~80인 데이터를 보여준다.
6. or의 다른 편한 표현 -> in을 사용하여 이 중에 속하는 것 하나라도 있으면 출력하도록 해줌
select *
from city
where name in ('Seoul', 'New York', 'Tokyo');
7. 문자열에 서브문자열이 포함되어 있는지 아닌지 검색을 위한 것 -> like
select *
from city
where countrycode like 'KO_';
_를 추가하면 한 글자를 의미한다. 즉, KO뒤에 한글자가 오는 단어를 검색한다.
select *
from city
where name like 'Tel %';
%는 _와 다르게 몇개의 문자가 와도 상관이 없다.
select *
from city
where countrycode like '%tel%';
양쪽에 %가 있으면 tel이 포함된 문자열 모두를 뜻한다.
8. SubQuery
select *
from city
where countrycode = (select countrycode from city where name = 'seoul');
의미: seoul이라는 이름을 가진 citycode를 검색
9. ani -> subquery 에서 값이 여러개가 나올 경우, or연산 처럼 한가지라도 만족하면 출력
select *
from city
where population > any (select population from city where district = 'NEW YORK');
의미 : district의 이름이 뉴욕인 도시들의 인구수 중에서 하나라도 큰 값이 있다면 그 값을 출력
10. all -> subquery 에서 값이 여러개가 나올 경우, and 연산 처럼 모두 만족하면 출력
select *
from city
where population > all (select population from city where dictrict = 'New York');
의미: 말 그대로, new york 도시들의 인구수보다 큰 도시들만 출력
11. 오름차순 asc
select *
from city
order by population asc;
의미: Population을 기준으로 오름차순 (asc)는 생략 가능
12. 내림 차순 desc
select *
from city
order by population desc;
13. 내림차순, 오름차순 우선순위
select *
from city
order by countrycode desc, name asc;
의미: countrycode을 기준으로 내림 차순 하되, 같은 값이 있을 때는 2순위로 name을 기준으로 오름차순으로 진행한다.
14. 중복 제거 distinct
select distinct countrycode
from city;
countrycode를 중복제거하여 출력해줌
15. Limit 상위 몇개만 볼 수 있음
select *
from city
order by population desc
limit 2;
의미: Population을 오름차순으로 정렬한 후, 상위 2개만 보여줌
16. 그룹으로 묶어줌 group by
select countrycode, max(population)
from city
group by countrycode;
의미: countrycode가 같은 것들 기리 묶은 다음에, 가장 큰 population 출력
17. group by 집계 함수에 대해서 조건을 제한하는 having
select Countrycode, max(population)
from city
group by countrycode
having max(population) > 800;
의미: countrycode로 집계해서, 각 countrycode의 max(population)의 값이 800보다 클 경우만 출력한다.
'개발 공부 > SQL' 카테고리의 다른 글
[Programmers - SQL고득점 Kit] Join (0) | 2022.03.19 |
---|---|
[SQL 정리] - 총 정리2 (0) | 2022.03.19 |
[Programmers - SQL고득점 Kit] String, Date (0) | 2022.03.18 |
[SW 마에스트로] SQL 코테 준비 (0) | 2022.03.11 |
내가 보려고 쓰는 SQL 기본 정리 (0) | 2022.01.19 |