반응형
SQL ; Structured Query Language
- 관계형 DB가 표의 형태로 정리정돈 되어 있는 상태이기 때문에, Structured
- DB에게 데이터를 어떻게 해달라고 요청하기 때문에, Query
- DB도 이해할 수 있고 사용자도 이해할 수 있는 공통의 언어이기 때문에, Language
- 어떤 컴퓨터 언어보다도 쉽다.
- 중요하다 (?) - 관계형 DB를 제어할 수 있는 표준화된 언어이기 때문에 매우 중요함
Table
- 행 = row, record
- 열 = column
SELECT
- 데이터를 테이블로부터 조회할 때 사용됨
- 데이터 분석가라면, 가장 많이 사용하게 될 것이므로 Advanced 파트까지 완벽하게 알아야 함!
[기본 문법]
SELECT column1, column2
FROM table
GROUP BY column
ORDER BY column ASC | DESC
LIMIT offset
-- CREATE TABLE
CREATE TABLE `student` (
`id` tinyint(4) NOT NULL,
`name` char(4) NOT NULL,
`sex` enum('남자','여자') NOT NULL,
`address` varchar(50) NOT NULL,
`birthday` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- INSERT DATA
INSERT INTO `student` VALUES (2, '박재숙', '남자', '서울', '1985-10-26 00:00:00');
INSERT INTO `student` VALUES (1, '이숙경', '여자', '청주', '1982-11-16 00:00:00');
INSERT INTO `student` VALUES (3, '백태호', '남자', '경주', '1989-2-10 00:00:00');
INSERT INTO `student` VALUES (4, '김경훈', '남자', '제천', '1979-11-4 00:00:00');
INSERT INTO `student` VALUES (8, '김정인', '남자', '대전', '1990-10-1 00:00:00');
INSERT INTO `student` VALUES (6, '김경진', '여자', '제주', '1985-1-1 00:00:00');
INSERT INTO `student` VALUES (7, '박경호', '남자', '영동', '1981-2-3 00:00:00');
-- SELECT ALL DATA
SELECT * FROM student;
-- SELECT COLUMN
SELECT name, birthday FROM student;
# WHERE
SELECT * FROM student WHERE id=3;
# AND
SELECT * FROM student WHERE sex='남자' AND address='서울';
# OR
SELECT * FROM student WHERE sex='여자' OR address='서울';
# LIMIT
SELECT * FROM student LIMIT 1;
# LIMIT START(0 ~ ), COUNT
SELECT * FROM student LIMIT 1,1;
SELECT * FROM student LIMIT 2,1;
SELECT * FROM student LIMIT 3,1;
# WHERE & LIMIT
SELECT * FROM student WHERE sex='남자' LIMIT 2;
GROUPING
- 특정 컬럼을 기준으로 데이터를 그룹핑하는 것
[기본 문법]
SELECT *
FROM table
GROUP BY reference column
-- CREATE TABLE
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` tinyint(4) NOT NULL,
`name` char(4) NOT NULL,
`sex` 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 DATA
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');
-- SEX GROUPING
select sex from student group by sex;
-- SEX GROUPING2
select sex, sum(distance), avg(distance), count(*) from student group by sex;
ORDER
- 지정된 컬럼을 기준으로 행을 정렬
- ASC : 오름차순, DESC : 내림차순
- 생략하면 ASC가 디폴트
[기본 문법]
SELECT column1, column2
FROM table
ORDER BY column ASC | DESC
-- CREATE TABLE
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` tinyint(4) NOT NULL,
`name` char(4) NOT NULL,
`sex` 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');
-- ORDER BY 1
select * from student order by distance desc;
-- ORDER BY 2
select * from student order by distance desc, address asc;
-- ORDER BY 3
select * from student order by birthday;
* 본 내용은 생활코딩(Coding Everybody)을 참고하여 작성했습니다.
- SELECT
- group by
- order by
반응형
'Data Science > SQL' 카테고리의 다른 글
[SQL로 맛보는 데이터 전처리 분석] 자동차 매출 데이터를 이용한 지표 추출(실습) - 1 (0) | 2022.07.11 |
---|---|
[SQL로 맛보는 데이터 전처리 분석] 기본 문법 정리 - 2 (0) | 2022.07.07 |
[SQL로 맛보는 데이터 전처리 분석] 기본 문법 정리 - 1 (0) | 2022.07.06 |
[SQL] Conceptual Data Modeling (0) | 2022.01.19 |
[SQL] JOIN (0) | 2022.01.10 |
댓글