개발 공부/SQL

[SQL 정리] - 총 정리1

sunjungAn 2022. 3. 19. 01:18

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보다 클 경우만 출력한다.