기본 구조

1) 일반
SELECT 테이블.컬럼, 테이블.컬럼
FROM 테이블1,테이블2           
WHERE 조건
ORDER BY 순서 

구문

SELECT

검색기능

SELECT * FROM 테이블명

selcet 조회하고싶은 컬럼 from 테이블명
(..) as 조건에 맞는 컬럼명 재지정

ORDER BY

  • 기본적으로 오름차순(ASC)
    조건이 여러가지 일때 AND가 아닌 (,) 로 표기

GROUP BY

특정 칼럼을 기준으로 집계 함수를 사용하여 건수(COUNT), 합계(SUM), 평균(AVG) 등 집 계성 데이터를 추출할 때 사용한다.

SELECT job, SUM(sal) AS sum_sal
 FROM emp
WHERE deptno IN (20, 30)
GROUP BY job

WHERE

조건문

SELECT * FROM 테이블명 WHERE 조건 and 조건 

and 으로 중복되는 조건을 명시가능

LIKE

(~로 시작,포함,끝나는 단어)

SELECT * FROM 테이블명 WHERE Name LIKE '김%'

% 로 묶어서 표현가능

IN

(~이거나)

SELECT * FROM 테이블명 WHERE Age IN(20,24,26)
// Ex
select NAME from ANIMAL_INS 
WHERE DATETIME IN ( SELECT MIN (DATETIME)
                      FROM ANIMAL_INS)

Between

(x부터 y까지)
조건이 1000이라면,

  • 이하 : Between 0 and 1000 || <=
  • 미만 : Between 0 and 999 || <
  • 이상 : Between 1000 and 999999999 || >=
  • 초과 : Between 1001 and 999999999 || >

SELECT * FROM My_Table WHERE Age Between 20 AND 24

최대, 최소, 합, 평균

  • MAX
    최댓값
SELECT MAX(DATETIME) FROM ANIMAL_INS; //최대시간
  • MIN
    최솟값
SELECT MIN(DATETIME) FROM ANIMAL_INS; // 최소시간
  • SUM
    총합
SELECT COUNT(*) FROM ANIMAL_INS

DISTINCT NAME; // 중복 제거

  • AVG
    평균
SELECT AVG(DATETIME) FROM ANIMAL_INS;

ASC 오름차순

SELECT * FROM EMPLOYEES e 
ORDER BY EMPLOYEE_ID ASC; //ASC 생략가능 

DESC 내림차순

SELECT * FROM EMPLOYEES e 
ORDER BY EMPLOYEE_ID DESC;

DISTINCT

주로 UNIQUE(중복을 제거)한 컬럼이나 레코드를 조회하는 경우 사용

IS NULL

IS NULL 절을 사용하면 컬럼이 NULL과 일치하는지 여부의 조건식을 작성가능

응용

  1. IS NOT NULL 로 NULL 이 아닌 경우로 조회 가능**
SELECT 컬럼명, ... FROM 테이블명 WHERE 컬럼 IS NOT NULL;
  1. IFNULL(NAME, "No name") 으로 컬럼 중 이름없는 데이터를 'No name' 으로 설정가능

JOIN

JOIN 의 종류
1. Inner Join
기준 테이블과 조인 테이블 모두에 조인 컬럼 데이터가 존재해야 조회됨 (ON절)

즉, 공통된 값을 기준으로 테이블을 합치는 구문

  1. Natural Join
    두 테이블에서 동일한 컬럼명을 갖는 컬럼은 모두 조인이 되며,
    두 테이블이 동시에 가지고 있는 컬럼의 값이 전부 같은 것만 골라낸다.

  2. Outer Join
    공통된 부분만 골라 결합하는 Inner Join 과 다르게 공통되지 않은 행도 유지한다.

이때 두 테이블 모두의 값을 유지하면 Full Outer Join
왼쪽 테이블 값만 유지하면 Left Outer Join
오른쪽 테이블 값만 유지하면 Right Outer Join

CASE

조건에 따라서 값을 지정해 준다

CASE 컬럼    WHEN 조건1 THEN 값1 
			WHEN 조건2 THEN 값2 
			ELSE 값3 END 

컬럼이 조건1 일때는 값1 을 조건2일때는 값2를 반환하고 조건에 맞지 않는 경우에는 값3 을 반환하는 것

Date & Time

조건에 따라서 날짜 및 시간 값을 넣어준다.

  • 시간과 날짜에 대한 쿼리 에러가 많이 발생한다.

Date

  • format : YYYY-MM-DD (날짜만 표기)

DateTime

  • format : YYYY-MM-DD hh:mm:ss (날짜 및 시간 표기)
  • 1000-01-01 00:00:00부터 9999-12-31 23:59:59까지 지원

Timestamp

  • format : YYYY-MM-DD hh:mm:ss (날짜 및 시간 표기)
  • 1970-01-01 00:00:01부터 2038-01-19 03:14:07까지 지원
  • Index가 더 빠르게 생성된다.
  • 기본적으로 NOT NULL
  • Timezone 기반

DATETIME vs TIMESTAMP

DATETIME과 TIMESTAMP의 차이는 Timezone이 적용되는지의 여부

Timezone이란?
타임존은 동일한 로컬 시간을 따르는 지역을 의미하며, 해당 국가에 의해 법적으로 지정된다.
시간대는 지구의 자전에 따른, 지역 사이에 생기는 낮과 밤의 차이를 인위적으로 조정하기 위해 고안된 시간의 구분선을 말한다 이는 영국의 그리니치 천문대를 기준으로 지역에 따른 시간의 차이를 계산하여 적용한다.
UTC, KST 등의 표기법을 많이 보셨을 텐데, 이 표기법이 바로 해당 시간이 어느 로컬 기준으로 작성했는지를 명시하기 위함이다.

CURRENT_TIMESTAMP()- 생성시간 자동기록

특정 행을 입력할때 생성 시간을 자동으로 기록해두고 싶을 때 데이터 타입에 Timestamp를 넣고 Defalut에 CURRENT_TIMESTAMP()를 쓰면 된다.
혹은 CURRENT_TIMESTAMP, NOW() 모두 같은 값, 이렇게 하면 행을 생성할 때 생성 시간이 자동으로 같이 입력된다.

사용법
1. CREATE TABLE시 '{칼럼이름} DATETIME DEFAULT CURRENT_TIMESTAMP'
2. ALTER TABLE시 'ALTER COLUMN {칼럼이름} SET DEFAULT CURRENT_TIMESTAMP'

자세한 사항은 여기

References (참고 자료)

0개의 댓글