# 데이터베이스 데이터 조회
데이터베이스 안에 있는 데이터를 조회하기 위한 문법은 다음과 같다.
SELECT 칼럼명1, 칼럼명2
[FROM 테이블명 ]
[GROUP BY 칼럼명]
[ORDER BY 칼럼명 [ASC | DESC]]
[LIMIT offset, 조회 할 행의 수]
상기 코드 블럭 안에서 []안에 들어있는 것들은 모두 생략이 가능하다, 제일 처음 select의 컬럼혹은 *만으로도 데이터를 선택하고 조회할 수 있다.
where은 대상이 되는 행을 지정할 때 사용한다, select는 아주 중요하다
SELECT * FROM student LIMIT 1,1;
상기 코드블럭에서 LIMIT 옆에 두개의 숫자는 각각 오프셋(Offset)과 가져오는 갯수인데, 여기서 오프셋은 인덱스의 출발점을 의미한다.
# 그룹핑 (group by)
group by는 특정 칼럼을 기준으로 데이터를 그룹핑하는 기법이다. 문법은 다음과 같다.
SELECT * FROM 테이블명 GROUP BY 그룹핑 할 기준 칼럼명
그룹핑이란, student라는 테이블에서 gender와 관련된 값만을 불러오고, 값을 묶어주게된다.
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` tinyint(4) NOT NULL,
`name` char(4) NOT NULL,
`gender` enum('남자','여자') NOT NULL,
`address` varchar(50) NOT NULL,
`distance` INT NOT NULL,
`birthday` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `student` VALUES (2, '박재숙', '남자', '서울', 10, '1985-10-26 00:00:00');
INSERT INTO `student` VALUES (1, '이숙경', '여자', '청주', 200, '1982-11-16 00:00:00');
INSERT INTO `student` VALUES (3, '백태호', '남자', '경주', 350, '1989-2-10 00:00:00');
INSERT INTO `student` VALUES (4, '김경훈', '남자', '제천', 190, '1979-11-4 00:00:00');
INSERT INTO `student` VALUES (8, '김정인', '남자', '대전', 200, '1990-10-1 00:00:00');
INSERT INTO `student` VALUES (6, '김경진', '여자', '제주', 400, '1985-1-1 00:00:00');
INSERT INTO `student` VALUES (7, '박경호', '남자', '영동', 310, '1981-2-3 00:00:00');
select gender from student group by gender;
// gedner
//
// 남자
// 여자
결론적으로 성별은 남자와 여자만 중복이 됨으로 어떠한 값만이 있는지 는 상기와 같이 남자, 여자로 나타나게된다 이것이 바로 그룹핑이다. 이 기능은 하나의 Column에서 어떠한 값들이 있는지 추출해보기 위하여 사용하는 기능이다.
데이터들이 어떠한 구성을 갖고있는지 알 수가 있다.
다음 예제)
select gender,sum(distance), avg(distance) from student group by gender;
// gender sum(distance) avg(distance)
남자 1060 212.0000
여자 600 300.0000
sum은 합계이고, avg는 평균값이다. 상기 코드블럭은 성별 column에 남자에 해당되는 데이터의 distance들의 합과 평균, 그리고 여자에 해당되는 데이터의 distance의 합과 평균에 대해서 정리하여 볼 수 있는 예제이다.
그룹핑은 하나의 Column을 기준으로 다른 Column의 합계나 평균 등 다른 수치들을 비교하고자 할 때 사용할 수 있는 유용한 기능이다.
'Language > mySQL' 카테고리의 다른 글
공부 내용 정리 mySQL :: 예제 정리 2 (0) | 2021.05.18 |
---|---|
공부 내용 정리 mySQL :: 예제 정리 1 (0) | 2021.05.18 |
공부 내용 정리 mySQL :: 기초 III (0) | 2021.05.17 |
공부 내용 정리 mySQL :: 기초 II (0) | 2021.05.17 |
공부 내용 정리 mySQL :: 기초 I (0) | 2021.05.17 |