솜이의 데브로그

6장 ) SQL문의 기본 : Select 본문

CS/Database

6장 ) SQL문의 기본 : Select

somsoming 2021. 10. 31. 19:04

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문 작성시에는 반드시 다음 순서대로 작성해야 한다.

  1. SELECT
  2. FROM
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. 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