SQL-select

전준형·2021년 8월 3일
0

Database

목록 보기
2/2

보편적으로 가장 많이 사용하게 될 SQL문이라고 생각한다. 실습용도 말고는 내가 직접 테이블을 모델링 하거나 생성할 일은 잘 없을듯 하니 말이다.
중요한 내용이고 양이 많으니 자세히 정리하고 넘어가야겠다.


select COLUM
from TABLE
where [조건]

select문의 가장 기본적인 형태다.
크게 select절, from절, where절 세 부분으로 나눈다.

select

테이블에서 조회하고 싶은 컬럼을 선택하는 절이다.
테이블에 존재하는 컬럼 뿐 아니라, 여러 연산이 포함된 집계함수도 사용할 수 있다.

집계함수

  • count() - 개수
  • avg() - 평균
  • first() - 첫번째 값
  • sum() - 합

선정한 컬럼명을 원하는 이름으로 명명할 수도 있다.
Alias 라는 기능으로, 줄여서 as [별칭] 으로 명명할 수 있다

Alias

select student as 학생

마지막으로, 중복된 값을 제거하는 기능이다.
Distinct 명령어로, select 절 맨 앞에 적어주면 컬럼의 값이 중복된 행은 하나만 출력된다.

Distinct

select distinct student


From

조회하고 싶은 테이블을 선택하는 절이다.
하나의 테이블을 선택해도 되고, 여러개의 테이블을 선택해도 된다.

여러개의 테이블을 선택한다면 해당 테이블들의 모든 가짓수의 집합으로 새로운 테이블을 생성하여 조회한다. 이를 지칭하여 테이블들의 카티션 프로덕트라고 한다.

여러개의 테이블을 선택할때는 카티션 프로덕트보다 Join구문을 이용하게 된다. 두 테이블의 중복 칼럼을 통해 테이블을 매치시켜 새로운 테이블을 생성하는 방법이다.

Join

select * from A join B on A.C = B.D

위 문장에선 A 테이블과 B 테이블을 조인시키는데, A의 컬럼 C와 B의 컬럼 D중 컬럼 값이 같은 행끼리 매치시킨 테이블을 생성하게 된다.

조인은 보통 Inner 조인으로 이뤄지는데, Outer 조인을 명시하여 사용할 수 있다.
Left Outer Join과 Right Outer Join으로 나눠지며, 해당 조인을 시행하였을 때 중복값을 통한 Inner 조인이 시행 된 후 Left라면 왼쪽, Right라면 오른쪽 테이블 중 조인되지 못한 행이 모두 출력된다.


Where

조회할 조건을 명시하는 절이다. 기본적인 비교 연산자 모두 사용 가능하며, 특수한 연산자가 몇 개 존재한다.

in

select * from TABLE where A in (B,C)

조건에 맞는 것을 모두 반환하는 연산자로 A칼럼의 값이 B이거나 C인 행을 모두 출력한다.

like

select * from TABLE where A like '%B_'

부분적으로 일치하는 문자열을 가진 값을 반환하는 연산자이다. %_기호가 있는데, %는 글자 수가 정해져있지 않다는 뜻이고, _는 글자수가 정해져있다는 뜻이다.

위의 예제로 생각해보면 A칼럼의 값이 B와 아무런 문자 하나로 끝나는 행을 출력한다.


Select절, From절, Where절의 인자엔 모두 새로운 Select 구문이 들어갈 수 있다. 이를 서브쿼리라고 하며, 반환하는 행의 개수가 맞아야 서브쿼리로 사용될 수 있음을 명심한다.

추가적으로 세 파트의 절이 아닌 추가적인 쿼리가 존재한다.


Group by

select A, count(*) from TABLE group by A

집계 함수를 능동적으로 사용할 수 있게 하는 Group by 절이다. 해당 컬럼의 값이 같은 행끼리 묶어주는 기능을 한다.

위 구문에선 A컬럼이 같은 행끼리 그룹이 형성되었고, 집계함수 count를 통해 묶인 그룹들의 갯수를 출력하는 SQL문이다.

group by를 행한 컬럼은 반드시 출력될 컬럼으로 명시되어야 한다.


Order by

select * from TABLE order by A asc

출력될 행들을 정렬 시켜주는 절이다. 정렬 기준은 선택한 컬럼의 값이며, 오름차순과 내림차순으로 정하여 asc이나 desc를 명시한다.

명시하지 않는다면 기본값은 asc이다.


포스팅 하나로 select 문을 전부 정리하기엔 상당히 날림이기도 하고, 내용이 부실하긴 하지만 머리에 든 내용을 한번 쭉 정리해보는 것도 꽤 유익했다.

profile
한방에 맞게 해주세요

0개의 댓글