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로 데이터를 가져와 출력합니다. 탐색을 만드는 것과 더불어 중요한 것이 생성, 수정, 삭제인데 해당 부분은 다음에 다뤄보도록 하겠습니다.
'컴퓨터 > MySQL' 카테고리의 다른 글
MySQL (6) - 무결성 제약조건 (0) | 2022.06.18 |
---|---|
MySQL (5) - 테이블을 만져보자 (CREATE, ALTER, DROP) (0) | 2022.04.30 |
MySQL (4) - 데이터를 수정해보자 (Insert, Update, Delete) (0) | 2022.04.06 |
MySQL (3) - DDL, DML, DCL 이란? (0) | 2022.03.24 |
MySQL (1) - DBMS는 무엇인가 (0) | 2021.09.19 |