본문 바로가기
Data Science/SQL

[SQL] SQL / Table / SELECT

by 루크 Luke 2022. 1. 10.
반응형

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)을 참고하여 작성했습니다.

SQL, Table

SELECT

group by

- order by

반응형

댓글