컴퓨터/MySQL

MySQL (2) - 정보를 탐색해보자 (Select)

달서비 2021. 12. 7. 00:43

MySQL에서 다른 문법도 엄청나게 많지만 가장 주요하다고 생각하는 Select문에 대하여 알아보도록 하겠습니다

 

Select란?

SQL에서 가장 기본적인 기능 중 하나는 해당 데이터를 찾아보는 것입니다. 해당 테이블에서 모든 정보를 찾을 수도 있지만 조건을 줄여서 상세한 정보도 찾을 수 있습니다. 이번에는 간단하게 Select를 이용하여 여러 가지 정보를 찾아보는 시간을 가져보도록 하겠습니다.

※mytable이 있다고 가정하고 계속 진행하겠습니다

※가칭으로 table의 값을 구성하였습니다. 처음의 값을 기점으로 어떤 변화가 있는지 보시면 될 것 같습니다.

 

select * from mytable;
class name price score
1 minsu 1500 30
1 minji 3400 23
2 minsu 1500 22
2 seob 6200 8
3 yuri 11400 15
3 minsu 3300 150

가장 간단하게 위의 방식을 통하여 select를 찾을 수 있습니다.

해당 소스코드는 "mytable에 있는 모든 값(*)을 찾아라"라는 뜻을 가지고 있습니다. *만 사용하면 우리가 1000개 이상 있는 것을 볼 때 힘듭니다. 그럴 경우를 대비하여 조건을 줄일 필요가 있습니다.

 

select * from mytable where price=1500;
class name price score
1 minsu 1500 30
2 minju 1500 22

where을 사용하면 범위를 줄일 수 있습니다. 여기서는 "mytable에 있는 모든 값(*) 중 price가 1500인 것을 찾아라" 정도로 해석할 수 있습니다. where을 통하여 조절할 수 있고 한 가지 조건뿐만이 아닌 여러 가지를 같이 둘 수 있습니다.  and, or, not으로 여러 개의 조건을 둘 수 있습니다. 

 

select * from mytable 
where price=1500 and name='minsu';
class name price score
1 minsu 1500 30

데이터를 조건으로 찾을 수도 있고 내림차순 올림차순을 통하여 찾을 수도 있습니다. 순서대로 정리하고 싶으면 "order by"를 통하여 찾을 수 있습니다. ASC - 순서, DESC - 역순

select * from mytable 
order by price DESC;
class name price score
3 yuri 11400 15
2 seob 6200 8
1 minji 3400 23
3 minsu 3300 150
1 minsu 1500 30
2 minsu 1500 22

위의 명령어의 뜻은 다음과 같습니다. "mytable에 있는 모든 값 (*) 중 price가 큰 값부터 차례대로 추출하라." order by를 통하여하고 싶은 순서대로 출력합니다. 

 

 

마지막으로 "group by"와 "having"을 통하여 데이터를 정렬할 수 있습니다. 

select class, sum(score) from mytable
group by class;
class sum(score)
1 53
2 30
3 165

group by를 통하여 같은 값들을 기준으로 묶어서 출력한다. 여기서는 "mytable에 있는 class와, score의 합을 class의 기준으로 묶어 출력한다"는 뜻을 가지고 있습니다. group by절도 조건을 설정할 수 있는데 이것을 having 절을 이용하여 출력한다. 

select class, sum(score) from mytable
group by class
having sum(score)<140
class sum(score)
1 53
2 30

이용하여 출력 값을 줄인 것을 알 수 있다. 위의 소스코드의 뜻은 "mytable에 있는 class와, score의 합을 class의 기준 중 score의 합이 140 이하로 묶어 출력한다"이다. having을 이용하여 score의 합이 140 이하인 값만 나올 수 있도록 조절한다. 

 

요약

  • select : 검색할 요소 입력하기
  • from : 검색할 테이블을 가져온다
  • where : 검색한 테이블 중 조건을 넣을 수 있다.
  • group by : 테이블 중 조건으로 묶는다
  • having : group by로 묶은 기준 중 조건을 넣는 역할을 한다. (where절과 비슷한 역할)
  • order by : 결과로 나오는 값을 순서대로 정리하는 역할

 

 

마지막

select가 가장 기본적인 기능이지만 해당 기능을 응용하여 수많은 데이터를 가져옵니다. 프로그램을 연동할 때 select로 데이터를 가져와 출력합니다. 탐색을 만드는 것과 더불어 중요한 것이 생성, 수정, 삭제인데 해당 부분은 다음에 다뤄보도록 하겠습니다.