[기초] SQL 초보자가 꼭 알아야 하는 10가지 문법. 무료 강의. 편안하게 들어보세요
✅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