[교재] 데이터베이스 첫걸음 6장 - SQL문 기본 1. SELECT문

hwwwa·2023년 1월 17일
1

6장. SQL문 기본 - SELECT 문의 이해 (1)

  • SQL은 주로 DBMS에 저장된 테이블을 조작하기 위해 사용
  • 데이터베이스가 여러개 존재할 수 있기 때문에 테이블을 보기 위해서는 데이터베이스를 선택해야 함
  • 데이터베이스 목록 보기
    mysql> show databases;
  • 데이터베이스 사용하기
    mysql> use DB명;
  • 테이블 목록 보기
    mysql> show tables;

SQL 기술 규칙

  • SQL문의 마지막에 딜리미터(Delimiter. 문장의 단락을 의미하는 기호)를 붙임
    • 대부분 세미콜론 (;)
  • 키워드(SELECT, FROM 등)의 대소문자는 구별하지 않음
    • select, SELECT, Select 모두 가능
  • 정수는 기존 그대로 사용, 문자열이나 날짜 시각은 작은 따옴표('')로 감싸기
    • 1000 은 정수, '1000' 은 문자열
  • 단어(word)는 반각 스페이스나 개행으로 구별. 전각 스페이스 사용 X

SELECT : 테이블 조회

SELECT 컬럼명 
FROM 테이블명
[WHERE 조건]
[GROUP BY 컬럼1 [, 컬럼2, ...]
[HAVING 그룹 값에 대한 조건]]
[ORDER BY 컬럼1 [, 컬럼2, ...] [DESC/ASC]];
  • 실행 순서: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
  • 컬럼명
    • * 사용 시 모든 컬럼 지정 가능
    • 임의의 열을 , 로 구분하여 복수 지정 가능
  • 테이블명
    - 표 자체의 이름 사용 가능
    - 암묵적으로 디폴트 데이터베이스의 테이블 지정 가능
    - 데이터베이스명.테이블명 형태로 지정 가능

WHERE

SELECT 컬럼명 FROM 테이블명 WHERE 조건;
  • 행 수를 제한하기 위해 사용
  • 테이블의 각 행을 살피고 일치하는 행만 SELECT
  • ANDOR을 사용해 여러 조건 사용 가능

비교 연산자

연산자 종류의미
=같다
<>같지않다
>=같거나 크다
>보다 크다
<=같거나 작다
<보다 작다
  • <=> : = 와 같으나 NULL에 대한 비교까지 수행

연산자 우선순위

  • 아래로 갈 수록 우선순위 낮음
연산자
INTERVAL
BINARY, COLLATE
-(단항 감산), ~(단항 비트 반전)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
=(비교 등호), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
&&, AND
XOR
||, OR
=(대입 등호), :=

DISTINCT

  • 선택한 행에서 중복을 없애고 싶은 경우 DISTINCT 키워드 사용
SELECT DISTINCT 컬럼명 FROM 테이블명;

ORDER BY

  • 검색 결과 정렬 방법
    • 컬럼의 순서는 SELECT 컬럼1, 컬럼2, ... 로 지정
    • 레코드의 순서는 ORDER BY 로 지정
SELECT ~ ORDER BY 컬럼1 [, 컬럼2, ...] [DESC / ASC]
  • DESC/ASC : 내림차순/오름차순 정렬. 미지정시 오름차순
  • 정렬키 : ORDER BY에 사용한 열명
    • 정렬키가 Unique하지 않으면 같은 값 내에서 정렬 결과는 매번 다를 수 있음

집계 함수

  • 복수의 행(이나 행의 값)에 대해 집계를 수행하는 함수
  • 집계함수는 기본적으로 NULL을 제외하고 집계
    • COUNTCOUNT(*)으로 NULL 포함 집계 가능
  • COUNT : 테이블의 행수를 알려주는 함수
  • SUM : 테이블의 수치 데이터를 합계하는 함수
  • AVG : 테이블의 수치 데이터 평균을 구하는 함수
  • MIN : 테이블의 임의열 데이터 중 최소값을 구하는 함수
  • MAX : 테이블의 임의열 데이터 중 최대값을 구하는 함수
  • GROUP_CONCAT : 문자열을 한 줄로 집약
  • 집계함수 내에 DISTINCT를 사용하여 중복 제거 가능
    • ex) GROUP_CONCAT(DISTINCT 컬럼명)

GROUP BY, HAVING

  • 데이터를 몇 개의 그룹으로 나누어 집계 함수를 적용할 수 있음
SELECT ~ FROM 테이블명 GROUP BY 컬럼1 [, 컬럼2, ...]
  • HAVING을 통해 집약한 결과에 조건을 적용할 수 있음
SELECT ~ FROM 테이블명 GROUP BY ~ HAVING 그룹의 값에 대한 조건

0개의 댓글