SELECT문을 사용하여 테이블의 데이터를 선택할 수 있다.
SELECT
[ALL | DISTINCT | DISTINCTROW]
select_expr [, select_expr ...]
[FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name]]
]
01. 간단한 SELECT문 사용
1) 테이블 전체 자료 선택
▶ SELECT * FROM 테이블;
: 테이블 전체 자료를 선택할 때는 select 뒤에 *(asterick) 기호를 넣어주면 된다.
SELECT * FROM store;
2) 특정 열 선택
▶ SELECT 컬럼1, 컬럼2, ... FROM 테이블;
SELECT 상호명, 표준산업분류명, 행정동명
FROM store;
3) 조건을 만족하는 행만 추출하기
▶ SELECT 컬럼1, 컬럼2, ... FROM 테이블 WHERE 컬럼a = 조건1 ;
· 행정동명이 '탄방동'인 상호명, 표준산업분류명, 행정동명 행 추출
SELECT 상호명, 표준산업분류명, 행정동명
FROM store
WHERE 행정동명 = '탄방동';
· 행정동명이 '탄방동' 또는 '괴정동'인 상호명, 표준산업분류명, 행정동명 행 추출
SELECT 상호명, 표준산업분류명, 행정동명
FROM store
WHERE 행정동명 = '탄방동' OR 행정동명 = '괴정동';
4) 새로운 열 만들기
▶ 함수 또는 연산자 사용
· 도로명과 건물명 열 문자열 합치기
SELECT 도로명,
건물명,
concat(도로명, " ", 건물명)
FROM store;
5) 열 이름에 가명(alias) 주기
▶ SELECT 새로운 컬럼 [AS] alias FROM 테이블;
SELECT 도로명 AS 도로,
건물명 AS 건물,
concat(도로명, " ", 건물명) AS `도로+건물`
FROM store;
6) 원하는 순서로 데이터 가져오기
· ORDER BY 구문을 사용해서 특정 컬럼을 기준으로 데이터 정렬 가능.
- ASC: 오름차순(default)
- DESC: 내림차순
SELECT column names FROM table_references
[WHERE where_condition ]
ORDER BY {column name | new column} {ASC | DESC};
· 상가업소번호를 기준으로 오름차순 정렬
SELECT 상가업소번호, 상호명
FROM store
ORDER BY 상가업소번호;
SELECT 상가업소번호, 상호명
FROM store
ORDER BY 1;
· 상가업소번호를 기준으로 내림차순 정렬
SELECT 상가업소번호, 상호명
FROM store
ORDER BY 상가업소번호 DESC;
SELECT 상가업소번호, 상호명
FROM store
ORDER BY 1 DESC;
· ORDER BY 구문 뒤에 열을 추가하면 2차 정렬도 가능하다.
7) 데이터를 원하는 위치에서 일정한 개수만큼 선택
▶ LIMIT 가져올 갯수개수 또는 LIMIT 건너뛸 개수, 가져올 개수
: 원하는 위치에서 원하는 만큼만 데이터를 가져올 수 있음.
SELECT column names FROM table_references
[WHERE where_condition ]
[ORDER BY {column name | new column} {ASC | DESC}]
LIMIT [offset,] row_count ;
· 처음부터 10개의 행만 가져오기
SELECT * FROM store
LIMIT 10;
SELECT * FROM store
LIMIT 0, 10;
· 30번째 행까지 건너뛰고 31번째 행부터 40번째 행 가져오기
SELECT * FROM store
LIMIT 30, 10;
▶ ORDER BY RAND() LIMIT 으로 Random Sample
: 표본조사에 있어서 표본을 모집단 전체의 경향을 정확하게 나타낼 수 있도록
완전 무작위(임의로) 추출 하는 방법
· store 자료에서 표본의 크기가 100인 표본을 추출하기
SELECT * FROM store
ORDER BY rand()
LIMIT 0, 100;
8) 중복된 행을 제거하여 선택
▶ SELECT DISTINCT column names FROM table_references ;
SELECT count(상권업종소분류코드)
FROM store;
상권업종소분류코드 중복을 제거하기 전 행 개수는 7,672
SELECT count(DISTINCT 상권업종소분류코드)
FROM store;
상권업종소분류 코드 중복을 DISTINCT로 제거한 후 행 개수는 104개로 중복이 제거됨.
출처 및 참고 문헌(reference)
https://dev.mysql.com/doc/refman/8.0/en/preface.html
MySQL :: MySQL 8.0 Reference Manual :: Preface and Legal Notices
Preface and Legal Notices This is the Reference Manual for the MySQL Database System, version 8.0, through release 8.0.32. Differences between minor versions of MySQL 8.0 are noted in the present text with reference to release numbers (8.0.x). For license
dev.mysql.com
https://www.yalco.kr/@sql/1-1/
SELECT 전반 기능 훑어보기
어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주 묻는 질문들의 답변들, 예제 코드들을 얄코에서 확인하세요!
www.yalco.kr
'SQL' 카테고리의 다른 글
SQL | MySQL | 내장 함수(1) - 숫자, 문자와 관련된 함수 (0) | 2023.03.08 |
---|---|
SQL | MySQL | SELECT(2) - 연산자(산술, 비교, 논리) (0) | 2023.03.07 |
SQL | MySQL | 데이터 수정, 삭제 - Update, Delete (0) | 2023.03.06 |
SQL | MySQL | LOAD DATA INFILE - 파일 데이터 불러오기 (0) | 2023.03.05 |
SQL | MySQL | 관계형 데이터베이스와 자료형 (0) | 2023.03.01 |