1 분 소요

SQL문 사용할 사이트 : MySQL Tryit Editor v1.0 (w3schools.com)


1. 테이블 보기 및 선택(select문)

1) select * from [TABLE] : from절의 [TABLE]의 모든 colums 선택

SELECT * FROM OrderDetails;
  • ✨ SQL에서 *은 모든 것을 뜻한다. 즉, 위 구문은 “OrderDetails”라는 테이블에 있는 모든 컬럼들을 선택한다라는 것.


01

아래와 같은 결과가 나옴. 즉, OrderDtails라는 테이블의 모든 데이터를 보고 싶다는 뜻


02

Ctrl+A를 통해 원형의 데이터가 모두 선택된 것과 다름없다.


  • ✨ 일부 컬럼만 가져오고 싶을 때
    SELECT OrderDetailID, OrderID FROM OrderDetails;
    

03

적은 컬럼만을 가져와서 표를 형성해준다.


04

엑셀에서 일부 컬럼만 떼다 쓰는 것과 같다.


2) WHERE절 : WHERE절에 조건을 적어 “filter”를 하여 선택

SELECT * FROM OrderDetails WHERE productID = 11;

05

ProductID컬럼의 값이 11인 것만 선택된 모습


06

자동필터에 의해 ProductID 11인 것만 선택된 모습


  • ✨ 주의할 점은 where절은 엑셀의 “자동필터” 같이 숨겨져 있다는 개념보다, 엑셀의 “고급 필터”를 통해 생성된 별개의 테이블이라 이해하는 것이 좋다. 또한 "고급필터"처럼 엑셀의 내장함수를 활용해 수식을 만들어 이용하듯, WHERE절도 SQL의 내장함수를 이용하여 조건을 만드는 것이 가능하다. 아래에서 추가 예시를 들겠다.


  • ✨ 수식을 활용한 예시
    SELECT * FROM OrderDetails WHERE ProductID < 11 AND OrderID < 10500;
    

07

두가지 조건 모두 충족된 줄만 나타나는 모습


08

[왼쪽] 원본 데이터에서, 고급필터를 통해 만들어진 [오른쪽] 필터링된 테이블


3) ORDER BY절 : 데이터 정렬

  • ✨ 어떠한 절보다 마지막으로 실행되어야 하는 절(적혀야 하는 절)
  • 이게 갑자기 무슨소리냐? 복잡해진다. 생각하기 이전에 본인이 엑셀을 다룰때 순서를 생각하면 좋다. 피벗 테이블(Group by + 집계함수)을 하든 새로운 변수를 만들던 말던 일반적으로 모든 데이터 취합한 뒤, 마지막으로 정렬을 한다. 고로 ORDER BY절은 그 어떤 절보다 마지막에 실행된다.
SELECT * FROM OrderDetails
WHERE ProductID < 11 AND OrderID < 10500
ORDER BY ProductID ASC, OrderDetailID DESC;  # ASC 오름차순(생략가능), DESC 내림차순
  • ✨ 이쯤되면 구문이 복잡해 보이겠지만 엑셀로 보시면 별거 없는 행위이다.(물론 SQL쪽은 수식 함께 써서 더욱 고차원의 정렬 행위도 가능하나, 결국 엑셀처럼 가상의 한 열에 수식을 짜서 그 값을 토대로 정렬하는 것처럼 원리는 동일하다)


09

ProductID를 첫 번째 기준으로 ASC(오름차순), OrderDetailID를 두 번째 기준으로 DESC(내림차순)을 해줬을 뿐이다.


10

엑셀에서 정렬 순서대로 넣고 오름차순/내림차순을 정하듯하면 동일한 결과가 된다.

태그: ,

카테고리:

업데이트:

댓글남기기