SQL(1)

이승수·2021년 9월 20일
0

명령어

1. SELECT

데이터셋에 포함될 특성들을 특정

SELECT 'hello';

SELECT 2;
SELECT 3 + 7;

2. FROM

결과들을 도출해낼 데이터베이스 테이블을 명시

SELECT A
FROM 테이블이름;

SELECT A, B
FROM 테이블이름;

SELECT *    # 모든특성
FROM 테이블이름;

3. WHERE

필터 역할을 하는 쿼리문

SELECT A, B
FROM 테이블이름
WHERE A = 특정값;    # >, <, >=, <= 가능

SELECT A, B
FROM 테이블이름
WHERE B <> 특정값;    # B에서 특정값을 제외한 데이터

SELECT A, B
FROM 테이블이름
WHERE A LIKE '문자%';	# 특정 문자로 시작하는 데이터 확인
--------------------
WHERE A LIKE '%문자'; 	 # 특정 문자로 종료하는 데이터 확인
WHERE A LIKE '%문자%';     # 문자 시작 ~ 종료까지 특정 문자 포함 여부 확인

SELECT A, B
FROM 테이블이름
WHERE A IN ("특정값1", "특정값2");	# 특정값과 일치하는 데이터
 
SELECT *
FROM 테이블이름
WHERE A IS NULL;	# 값이 없는 NULL을 찾을 경우

SELECT *
FROM 테이블이름
WHERE A IS NOT NULL    # 값이 없는 NULL을 제외하고 찾을 경우

4. ORDER BY

데이터 결과를 정렬(기본은 오름차순)

SELECT *
FROM 테이블이름
ORDER BY A; 	

SELECT *
FROM 테이블이름
ORDER BY A DESC;	# 내림차순

SELECT *
FROM 테이블이름
ORDER BY A, B DESC  # 다중정렬=A정렬 후 같은값이면 B로 정렬

5. LIMIT

데이터 결과 갯수를 정하기

SELECT *
FROM 테이블이름
LIMIT 10;

6. DISTINCT

유니크한 값들을 받기

SELECT DISTINCT A    # 특성A에서 유니크한 값들만 선택
FROM 테이블이름;

SELECT
	DISTINCT	# 특성A, B, C의 유니크한 조합 값들을 선택
    	A
        , B
        , C
FROM 테이블이름;

7. JOIN

서로 공통된 부분으로만 연결


※ SQLite 에서는 RIGHT OUTER JOIN / FULL OUTER JOIN 을 지원하지 않음

# INNER JOIN(JOIN 또는 INNER JOIN 사용)
SELECT *
FROM 테이블1
JOIN 테이블2 ON 테이블1.특성A = 테이블2.특성B;

# OUTER JOIN

# LEFT INCLUSIVE
SELECT *
FROM 테이블1
LEFT OUTER JOIN 테이블2 ON 테이블1.특성A = 테이블2.특성B;

# RIGHT INCLUSIVE
SELECT *
FROM 테이블1
RIGHT OUTER JOIN 테이블2 ON 테이블1.특성A = 테이블2.특성B;

8. GROUP BY

데이터를 분류하여 묶어서 조회

SELECT COUNT(*)
FROM 테이블이름
GROUP BY A; 	# 특성 A를 기반으로 그룹화

9. HAVING

그룹화한 결과값에 대한 필터링

(WHERE는 그룹화하기 전에 조회되는 데이터를 필터링)

SELECT COUNT(*)
FROM 테이블이름
GROUP BY A
HAVING COUNT(*) > 10; 

10. CASE

if문과 같은 기능

SELECT CASE
	WHEN CustomerId <= 30 THEN 'GROUP 1'
	WHEN CustomerId <= 50 THEN 'GROUP 2'
	ELSE 'GROUP 3'
    END
FROM customers

# 30 이하인 경우에는 'GROUP 1'
31부터 50 사이인 경우에는 'GROUP 2'
51 이상은 'GROUP 3' 으로 분류

11. SUBQUERY

다른 쿼리문을 포함 (SELECT, FROM, WHERE 등 에도 사용가능)

# 서브쿼리
SELECT customers.LastName ,
       (SELECT COUNT(*) 
       FROM invoices 
       WHERE customers.CustomerId = invoices.CustomerId) AS InvoiceCount
FROM   customers;

# JOIN 사용
SELECT c.LastName , COUNT(*) AS invoceCount
FROM customers c
JOIN invoices i 
ON   c.CustomerId == i.CustomerId
GROUP BY c.CustomerId;

SELECT 작동순서

  • FROM
  • WHERE
  • GROUP BY
  • HAVING
  • SELECT
  • ORDER BY
profile
AI/Data Science

0개의 댓글