일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- React Native
- 백준
- 리액트 네이티브 시작하기
- 딥러닝
- 모두의네트워크
- SQL
- 리액트 네이티브
- 정리
- 모두를위한딥러닝
- 백준 4358번
- 네트워크
- 깃허브 로그인
- 팀플회고
- 문자열
- 모두를 위한 딥러닝
- 자바
- 모두의 네트워크
- 깃허브 토큰 인증
- 백준 4358 자바
- 데이터베이스
- 데베
- HTTP
- 머신러닝
- 깃 연동
- 백준 4949번
- 지네릭스
- 백준 5525번
- 스터디
- 리액트 네이티브 프로젝트 생성
- 깃 터미널 연동
- Today
- Total
솜이의 데브로그
6장 ) SQL문의 기본 : Select 본문
Reference : 데이터베이스 첫걸음
6. SQL 문의 기본
SELECT 문의 이해
SQL을 대부분 DBMS에 저장된 테이블을 조작하기 위해 사용한다.
mysql 상에서 서버에 있는 데이터베이스 항목을 표시할 수 있다.
SELECT 문은 다음과 같이 사용 가능하다.
SELECT 열명 FROM 테이블명;
열 명에 * 를 지정해 테이블의 전체 열을 지정할 수 있으며 임의의 열을 콤마로 구분해 복수로 지정하는 것도 가능하다.
WHERE 조건
필요한 데이터를 효율성 있게 클라이언트로 가져오기 위해 SELECT하는 행 수를 줄이는 경우, WHERE 구문을 지정해 조건을 추가한다.
SELECT 열명 FROM 테이블명 WHERE 조건;
조건은 테이블의 각 행을 살펴보고 일채하는 행만 SELECT 한다.
조건에는 비교연산자 AND 와 OR이 자주 사용된다
사용 예시
SELECT Name, Population FROM city WHERE district = 'chollanam' AND population > 150000;
연산자를 사용할 때는 괄호를 사용하여 우선순위를 명확히 해야한다.
SQL의 기초적인 기술 규칙
- SQL문의 마지막에 딜리미터를 붙인다
- 키워드의 대문자와 소문자는 구별하지 않는다. (즉, select=SELECT)
- 정수는 기존 그대로 쓴다. 문자열이나 날짜 시각은 작은 따옴표 ('')로 감싼다.
- 단어는 반각 스페이스나 개행으로 구별한다. 전각 스페이스는 사용하지 않는다.
DISTINCT
선택한 행에서 중복된 값이 있고 이를 없애고 싶은 경우에는 DISTINCT 키워드를 지정한다.
Ex)
SELECT DISTINCT district FROM city WHERE countrycode='KOR';
데이터 집약
테이블을 그룹으로 구분
조건을 지정해 그룹 나누기
having 절을 이용해 조건을 지정한다. (반드시 group by에서만 사용)
검색 결과 정렬
SELECT ~ ORDER BY 열1,[열2,..]
order by 명령을 이용해 오름차순 정렬이 가능하며, ORDER BY DESC 명령어를 이용해 내림차순 정렬이 가능하다.
이 때 order by 에 사용한 열명을 '정렬키' 라고 한다.
- order by 에 의한 정렬을 수행할 때 행의 순서를 확실히 같게 하려면 행의 정렬키를 한 가지 의미로 정렬해야한다.
- 정렬키가 같은 값의 행이 복수 개 존재한다면 그 행들의 순서는 일정하지 않게 된다.
테이블을 요약하는 함수
테이블 전체 행수를 합산하는 계산을 수행하는 경우에는 'COUNT' 함수를 사용한다.
- COUNT : 테이블의 행수를 알려주는 함수
- SUM : 테이블의 수치 데이터를 합계하는 함수
- AVG : 테이블의 수치 데이터 평균을 구하는 함수
- MAX : 테이블의 임의열 데이터 중 최대값을 구하는 함수
- MIN : 테이블 임의열 데이터 중 최소값을 구하는 함수
이러한 집약 함수는 NULL 을 제외하고 집계하는데, COUNT함수는 COUNT(*) 로 표기하여 NULL 을 포함한 전체 행을 집계한다.
SELECT MIN(name) FROM city WHERE COUNTRYCODE = 'KOR';
문자열을 집약하는 GROUP_CONTACT
GROUP_CONTACT 함수는 문자열에 대한 집계를 문자열의 결합으로 수행한다.
따라서 콤마로 구분되는 긴 데이터를 결과로 반환한다.
DISTINCT로 중복 회피
집약함수로도 이용할 수 있다.
DISTINCT 키워드를 추가해 중복이 없어진 결과를 출력할 수 있다.
SELECT GROUP_CONCAT(DISTINCT district) FROM city WHERE contrycode = 'KOR';
GROUP BY 와 HAVING
대상이 되는 데이터를 몇 개의 그룹으로 나누어 집약하고, 지정한 그룹 열마다 집약해서 그룹 열로 나눈 그룹 수의 결과를 되돌려주도록 할 수 있다.
나눈 그룹에 HAVING을 이용해 조건을 추가할 수 있다.
SELECT district, COUNT(*) FROM city WHERE countrycode = 'KOR' group by district having count(*)=6;
SQL문 작성시에는 반드시 다음 순서대로 작성해야 한다.
- SELECT
- FROM
- WHERE
- GROUP BY
- HAVING
- ORDER BY
'CS > Database' 카테고리의 다른 글
6장 ) SQL문의 기본 : Select(2) (0) | 2021.11.06 |
---|---|
16-19강 : 데이터의 추가, 삭제, 갱신 (0) | 2021.10.31 |
13-15강 ) 문자열, 날짜, CASE문 (0) | 2021.10.28 |
5장 ) DBMS 기본지식 (0) | 2021.10.28 |
11, 12강 ) LIMIT, 수치 연산 (0) | 2021.10.14 |