[Leaning SQL] select

반응형
반응형

select절은 sql구문에서 가장 빈번하게 사용되는 구문입니다.
왜냐하면 select는 조회를 목적으로 만들어진 구문이기 때문입니다.
삽입 : insert같은 경우를 생각해보면 insert를 할 수 있는 경우의 수는 생각보다 없다고 생각합니다.
기껏해야 하나의 테이블에서 삽입을 하기 때문입니다.
하지만 조회는 하나의 테이블에서만 조회도 가능하지만,
하나가 아닌 여러개의 테이블에서 새로운 테이블을 만들어서 사용하던가, 또는 다른 테이블을 참조하는 경우가 흔치 않습니다.
즉, 조회는 다른 방법에 비해 무수히 많기 때문에 다른 구문에 비해 추가적인 노력이 필요하다고 생각합니다.

select 절의 요소

select : 열
from : 테이블 or 조인할 방법
where : 조건
group by : 그룹화
having : 그룹 조건
order by : 정렬

가장 간단하게 조회하는 방법은 다음과 같습니다.

select * from block;

select 뒤에는 검색할 열을 입력하고,
from뒤에는 그 열들의 테이블을 넣습니다.
지금 열이 *로 되어있는데 이는 모든 열을 다 사용하겠다는 의미입니다.

특정한 열을 입력해도 무관합니다.

이것을 그림으러 표현하면 다음과 같을 것 같습니다.

이것은 테이블 하나에서 정보를 읽었다는 뜻입니다.

그러면 where은 어떻게 표현 할 수 있을까요?

where

wehre은 특정 정보만 보고 싶을떄 사용되어집니다.
위 그림을 다시 그려 봅시다.

여기서 나는 갈색상자만 가져오고 싶다고 해봅시다.
이것을 sql구문으로 작성해보면

select * from block where color = 'brown';

그러면 다음과 같은 결과를 확인 할 수 있습니다.

계속 가봅시다.

group by

이 구문은 그룹을 지정하는 방법입니다.
어떻게 보면 where절과 같아 보일 수는 있지만, 
가장 큰 차이점은 where같은 경우 특정 정보만 가져오는것에 비해
group by는 그룹을 지정해서 보여준다는 점이 다릅니다.

어차피 칼럼이 하나뿐이라 sql구문을 작성해보겠습니다.

select * from block group by color;

색상으로 그룹을 지정하겠다는 의미입니다.
그러면 

색상이 구문되어 보여준다는 것을 알 수 있습니다.

having

이것을 할려면 그림을 조금 수정하겠습니다.

이것을 where절과 비교하면서  sql구문을 작성해보겠습니다.

select * from block where deco = 'triangle'

이것의 결과는

select * from block group by color having deco = 'triangle'

그렇다면 익것은 어떻게 될까요?

어떻게 보면 같아 보일 수 있겠지만, max()키워드를 사용해보면 답이 다르게 나옵니다.
전자는 4가 나오지만 (갯수가 4개이기 때문에...)
후자는 3과 1이 나옵니다. 녹색 : 3개, 갈색 : 1개
따라서 집합 함수와 사용하면 더욱더 좋습니다.

order by

이번에는 인덱스를 추가해서 그려봤다.

정렬하는 방법은 크게 2가지가 존재하는데,
asc 내림차순과 desc 오름차순이 존재합니다.
오름차순은 생략해도 상관없습니다.
즉,

select * from block order idx;

이런식으로 어떻게 정렬을 할지 결정하지 않아도 된다는 뜻입니다.
하지만 내림 차순을 하려면 asc를 넣어줘야 합니다.

select * from block order idx asc;

오름 차순으로 출력을 해보면

라고 나옵니다.

지금은 하나의 테이블에서 조회하는 방법을 소개하였지만, 검색할 테이블이 하나일 필요는 없습니다.
여러개의 테이블을 하나의 sql구문에서 사용할수 도 있습니다.
이는 추후에 천천히 공부해봅시다.

반응형

'sql' 카테고리의 다른 글

[LearningSql] 다중 테이블 쿼리  (0) 2021.04.13
[LearningSql] 필터링  (0) 2021.04.11
데이터 베이스 설계  (0) 2020.09.11
복수의 테이블 다루기  (0) 2020.09.11
데이터베이스 객체 작성과 삭제  (0) 2020.09.10

댓글

Designed by JB FACTORY