본문 바로가기

SQL 기초

SQL 처음으로 배우기 - SELECT/ FROM / WHERE/ ORDER BY

 SQL을 맨 처음으로 배우는 사람을 위해 글을 쓴다.

 

 예전 회사에 Business Analyst라는 타이틀을 가지고 있는 동료가 있었다. 실제 하는 일은 타이틀과는 좀 거리가 있었지만 말이다. 어쨌든 그 친구가 일하는 걸 보니 SQL 쿼리로 데이터를 뽑고 있는 게 아닌가. 신기해서 어떻게 배웠냐고 물었더니 독학으로 배웠다고 한다. '대박! 멋진 녀석이었군! 혼자 코딩 배우는 신기한 사람들이 있다더니 여기 있었구먼.' 티는 안 냈지만 내심 부러우면서 아주 살짝 경외심도 들었다.

 

 그렇게 몇 년이 지나고 우연한 기회에 SQL 기초 강의를 듣게 되었다. 그리고 한 시간도 안되어서 예전에 내가 생각했던게 무색해졌다. 기초는 그만큼 쉬웠다. 지금 당장 여기 있는 글을 읽고 나면 바로 데이터를 뽑아볼 수 있다. 물론 원하는 형태의 데이터를 얻는 건 쉽지 않을 수 있지만, 어쨌든 뭔가 하긴 할 수 있다. 

 

SELECT와 FROM

 SQL 쿼리를 짠다면, 무조건 SELECT와 FROM부터 쓰자. SELECT는 어떤 항목을 불러올 것인지, FROM은 어떤 테이블에서 불러올 것인지를 지정해준다. 지난 글에서 다운받은 Lahman Baseball Database 테이블을 무료 편집기인 DBeaver에서 열어 놓고 시작하겠다. ('무료 편집기 설치 - DBeaver' 참고)

 

 화면 왼쪽편의 데이터베이스 탐색기에 있는 'Lahmansbaseballdb.sqlite' 파일을 펼치면, 'Tables'가 있고, 그 하위로 데이터 데이블 목록이 보인다. (2019 데이터세트를 받아 두었었다.) 

 

아무거나 골라서 한 번 해보겠다. 돈, 연봉이 궁금해졌으니, 'salaries'라고 되어 있는 테이블을 보겠다.

 

 salaries 테이블에 뭐가 있는지 모르니, 그냥 일단 다 불러보자. 아래와 같이 쓰고 실행하면 된다. 참고로 실행은 DBeaver에서는 'Ctrl + Enter' 누르거나 SQL 스크립트 왼쪽편에 있는 주황색 재생 버튼 ('Execute SQL Statement')을 클릭해주면 된다. 마이크로소프트 SSMS (SQL Server Management Studio)에서는 'F5'를 누르거나,  초록색 재생 버튼 ('실행' 또는 'Execute')을 클릭하면 된다. 

 

SELECT *
FROM salaries

 

 'SELECT *'는 모든 항목들을 선택하겠다는 것이고, FROM 뒤에는 어떤 테이블에서 불러올 것인지 테이블 이름을 적어주면 된다. 실행해 보면 아래와 같은 데이터 테이블을 샘플로 볼 수 있다. DBeaver에서는 기본 설정으로 200행의 데이터를 보여준다. 

 

 

전부 불러보니 항목이 몇 개 되지 않는다. 'ID' / 'yearID' / 'teamID' / 'team_ID' / 'lgID' / 'playerID' / 'salary' 가 있다. 데이터가 나왔다. 쉽다. 

 

WHERE를 통한 필터링과 ORDER BY로 정렬

 

여기서 조금만 더 들어가보자. 'yearID'가 연도인 듯 하니, 2016년 데이터만 골라서, 연봉이 높은 순서대로 'playerID'를 나열해 보자. 

 

 필요한 걸 다시 정리하자면, 

 

  • 2016년 데이터만 필터링하고,
  • 'playerID'와 'salary'를 보이되,
  • 'salary'가 높은 순서대로 보여야 한다. 
SELECT yearID
	, playerID 
	, salary 
FROM salaries
WHERE yearID = 2016
ORDER BY salary DESC;

 

 위의 쿼리를 보면 WHERE와 ORDER BY가 어떻게 쓰였는지 알 수 있다. WHERE는 필터링할 조건을 입력해 주고, ORDER BY는 어떤 항목을 내림차순 (DESC)으로 정렬할지, 아님 오름차순 (기본으로 설정되어 있어 DESC를 안 써주면 된다)으로 정렬할지를 지정해 준다.

 

 쿼리를 돌려 나온 결과물을 보자. 3천3백만불의 연봉을 받은 'kershcl01'이 해당 시즌 가장 높은 연봉을 받는 선수이다. 다음 글에서는 대체 이 사람의 이름이 뭔지 알아보자. 야구에 관심이 있는 사람이라면, 누구인지 대충 감이 왔을 것이다. 

 

 

나도 3천3백만불 혼자 벌고 싶다.