MySQL/SQL문법

[기초] SQL 초보자가 꼭 알아야 하는 10가지 문법. 무료 강의. 편안하게 들어보세요

묘걍 2023. 9. 2. 20:05

Table

- 행과 열로 구성

- Excel과 비슷

- 행은 row

- 열은 column

- 특정 주제 단위로 저장되어 있다

     - 테이블의 종류는 다양할 수 있다

     → 그래서 우리는 SELECT 문을 활용해 내가 원하는 테이블에 저장된 데이터를 확인할 수 있다

 

✅SELECT

- 선택하다

- 내가 보고 싶은 데이터를 고를 때 사용

     Ex) 부동산 데이터 → 아파트 거래 데이터 보고 싶어, 다세대 거래 데이터 보고 싶어

- 내가 보고 싶은 데이터 주제

- 데이터는 테이블에 저장되어있다

 

👉🏻지정 방법

*

- 아스타라고도 함 (asterisk)

- 테이블에 들어있는 모든 항목을 다 보겠다는 내용

특정 컬럼

- 명시해서 컬럼 명을 정해주면 전부 다 가져오는 게 아니라 지정한 컬럼에 대해서만 가져옴

 

✅FROM

- 테이블명을 적는다

- SELECT와 FROM까지 적으면 데이터를 조회할 수 있다

 

✅LIMIT

- MySQL에서만 사용되는 문법

- 몇 개의 행만 보고 싶다는 것을 지정해줄 수 있다.

 

✅ORDER BY

- SELECT 문을 사용해 선택한 데이터를 정렬할 때 사용

- 가장 마지막에 적는다고 생각

   `LIMIT`보다만 위에 적어주면 된다.

- ORDER BY 내가 정렬하고 싶은 컬럼 명

- 여러개의 컬럼을 사용하고 싶으면 ,를 사용해서 나열해주기만 하면 된다

- 기본적으로는 오름차순

- 내림차순으로 하려면 desc를 붙여준다

👉🏻오름차순

- 1, 2, 3

- 가, 나, 다

- 낮은 것 부터 보고 싶을 때

👉🏻 내림차순

- 10, 9, 8

- 하, 파, 타

- 높은 것 부터 보고 싶을 때

 

✅ COUNT

- (행의) 개수를 세고 싶을 때

- GROUP BY 와 함께 자주 쓰인다

- SELECT 컬럼명, count(*) 혹은 SELECT count(*) 등으로 쓰임

- GROUP BY와 함께 많이 쓰인다

 

✅ GROUP BY

- 테이블 전체가 아닌 특정 항목들에 대한 개수, 평균 등을 확인

- 중복 제거할 때도 사용

- 우리 동네에서 발생한 아파트 매매 건수, 연도별 아파트 매매 건수

- GROUP BY 컬럼명

 

✅ WHERE

- 테이블에 들어있는 모든 데이터가 아닌, 일부 데이터만 보고 싶을 때

- Ex. 학생들 리스트 중 여성만 보고 싶다, 나이가 30 미만인 사람들만 보고 싶다 ...

- 조건을 줄 때 사용

- WHERE 조건

 

👉🏻컬럼에 들어가는 데이터 타입

간단하게 보면

  • 숫자
    • 그냥 쓰면 된다
  • 문자
    • ' '를 붙여준다

👉🏻 두 개의 조건을 주려면

  • and
    • WHERE 조건 and 조건
    • 동시조건: 두 조건 다 충족하는 리스트만 나오게 된다
  • or
    • WHERE 조건 or 조건
    • 두 조건 중 하나라도 충족하는 리스트가 모두 나온다

✅ CASE WHEN

- 데이터 값이 특정한 조건일 때 다르게 표현해주는 문법

- Ex. 다양한 나이 데이터를 10대, 20대, ... 로 표현해주는 문법

- Grouping에서 자주 사용

- case when 조건 then 표현 내용

           when 조건 then 표현 내용

           when 조건 then 표현 내용

           end

- SELECT column명, case when ~ 이런식으로 사용하기도 함

- else문법과도 자주 사용됨, 위에 적은 어느 조건에도 해당하지 않는 경우 end 전에 ELSE 기타 표현내용 으로 적어주면 됨

 

✅ LIKE

- Ex. 학생 이름 중 '영희'라는 이름을 가진 학생만 보고 싶다...

- 특정 단어가 포함되는 조건

- LIKE 조건 단어

- WHERE column명 LIKE '조건 단어' 이런 식으로...

- %를 활용하여 조건 단어의 앞이나 뒤에 어떤 단어가 와도 괜찮다는 것을 나타냄

     - '%조건 단어%' : 조건 단어 앞뒤로 어떤 단어가 와도 괜찮다

     - '조건 단어%': 조건 단어가 무조건 맨 앞쪽에 나와야하며 그 뒤에는 어떤 단어가 와도 괜찮다

     - '%조건 단어': 조건 단어 앞에 어떤 단어가 와도 괜찮으나 맨 마지막 부분은 조건단어가 나와야 한다

 

✅ NOT LIKE

- Ex. '김'씨가 아닌 학생만 보고 싶다 ...

- 특정 단어가 포함되지 않는 조건

- 나머지는 LIKE와 같음!

 

🧩 Sub Query

출처: 강사님 화면

- FROM() 안에 있는 내용이 하나의 테이블이라고 봐도 된다

- () 안은 동별로 아파트 매매 건수를 보고자 함

- () 안 내용을 토대로 만들어진 결과를 하나의 테이블로서 재활용하는 것

- 결론적으로는 동별 아파트 매매 건수가 100건 초과인 경우

 

출처: 강사님 화면

- 새로운 컬럼이 하나 더 생겨 해당 지역이 200건 이상 거래지역인지 200건 미만 거래 지역인지 나타냄

 

- 내가 가공한 쿼리를 재사용할 수 있게 해줌

- 복잡해지긴 하겠지만 서브쿼리는 여러번 사용 가능

 

🧩 JOIN

- 하나의 쿼리에 여러 테이블 정보를 엮어 사용할 때 쓰이는 문법

- 보통 테이블은 특정 주제에 대한 데이터만 담고 있기 때문에 다양한 정보를 한 번에 보고 싶다면 여러 테이블의 정보를 결합해야 하는 경우가 자주 발생한다

👉🏻 테이블 별명

- 테이블을 여러개 사용할 경우 동일한 컬럼명이 있을 수도 있다. 별칭을 사용해서 어떤 테이블의 컬럼인지 구분(명시)해줘야 한다

- From 테이블명.테이블 별칭, 테이블명.테이블 별칭 ...

👉🏻 JOIN Key

- 테이블 간의 연결고리를 정해주는 부분

- a에 있는 정보와 b에 있는 정보를 매핑하려면 서로 연결할 수 있는 key 값이 필요하다.

- foreign key라고도 한다

- Ex. a테이블(주민번호, 거주지), b테이블(주민번호, 직장명)이 있을 때 주민번호, 거주지 주소, 직장 명을 한 번에 보고 싶다면 주민번호라는 key값을 활용해 두 테이블을 join

- WHERE 테이블1별칭.연결고리컬럼명 = 테이블2별칭.연결고리컬럼명 ...

- 위 예시는 inner join

     - 양쪽 테이블에 join key 기반으로 데이터가 모두 존재할 경우 .. 대충 교집합!

 

🧩 Outer Join

👉🏻 Null

- 빈 데이터

- 조건에 해당하지 않는 데이터가 들어가게 될 때

     - 아래 예시의 경우 2020년에 건축된 아파트 조건이 추가되어, 특정 시구에는 데이터가 없을 수 있다

     - a테이블을 기준으로 하기 때문에 b테이블에서는 조건에 맞는 데이터는 표시, 맞지 않는 데이터는 Null

- Outer join은 이처럼 양쪽에 데이터가 모두 존재하지 않더라도 Null값으로 표시해주면서 기준이 되는 테이블의 데이터는 모두 표시

👉🏻 ON

- Outer join과 ON은 함께 쓰이는 문법

- on 테이블1별칭.연결고리컬럼명 = 테이블2별칭.연결고리컬럼명

     - 테이블 간의 연결고리

출처: 강사님 화면

- 해석: area_cd에 있는 시, 구 별로 2020년에 건축된 아파트 매매건의 아파트 명, 사이즈, 매매 가격을 보고 싶다

👉🏻 left outer join

- form 다음에 나오는 테이블 기준으로 결과를 보겠다 (한 번만 쓸 경우)

👉🏻 right full outer

- 나중에...

 

✅ SUM

- 합계

- SUM(컬럼명)

- SELECT SUM(컬럼명)

 

✅ MIN

- 최솟값

- MIN(컬럼명)

- SELECT MIN(컬럼명)

 

✅ MAX

- 최댓값

- MAX(컬럼명)

- SELECT MAX(컬럼명)

 

✅ AVG

- 평균

- AVG(컬럼명)

- SELECT AVG(컬럼명)

 

👉🏻 sum, min, max, avg는 group by와 함께 자주 사용된다

출처: 강사님 화면

- 연도별 가격 합계, 최소값, 최대값, 평균

출처: 강사님 화면

- 동별 아파트 매매가 합계, 최소값, 최대값, 평균

 

 

 

 

 

 

 

 

 

출처: https://youtu.be/ZsYnTSSuSiw?si=AyVcp6uTj-82SeLz