본문 바로가기
🖥 Programming/SQL

[DB] SQL 문법 기초

by MinChan-Youn 2021. 2. 1.
SELECT [DISTINCT] 컬럼, 그룹 함수(컬럼)
FROM 테이블명
[WHERE 조건]
[GROUP BY Group대상]
[HAVING 그룹 함수 포함 조건]
[ORDER BY 정렬대상 [ASC/DESC]]

 

1. 조회

●조회

SELECT 필드이름1, 필드이름2 FROM 테이블

모든 필드를 조회

SELECT * FROM 테이블

 

중복된 데이터를 없애고 조회

SELECT DISTINCT 필드이름 FROM 테이블

2. 조건식

조건식을 적용

SELECT * FROM 테이블
WHERE 필드이름=0

 

여러 조건식을 적용

SELECT * FROM 테이블
WHERE 필드이름1=0 AND 필드이름2=0 OR 필드이름3=0

 

조건식의 종류

WHERE 필드이름 BETWEEN 0 AND 100
WHERE 필드이름 NOT BETWEEN 0 AND 100

WHERE 필드이름 IN (0, 10, 100)
WHERE 필드이름 NOT IN (0, 10, 100)

WHERE 필드이름 IS NULL
WHERE 필드이름 IS NOT NULL

WHERE 필드이름 LIKE '홍__'
WHERE 필드이름 NOT LIKE '홍__'

WHERE 필드이름 LIKE '홍%'
WHERE 필드이름 NOT LIKE '홍%’

3. 정렬

●[정렬]특정 필드 기준으로 정렬

SELECT 필드이름 FROM 테이블
ORDER BY 필드이름 (기본값: ASC)

 

●[정렬] 기준이 여러개

SELECT 필드이름 FROM 테이블
ORDER BY 필드이름1, 필드이름2 DESC, 필드이름3 ASC
(ASC: 오름차순 / DESC: 내림차순)

 

●[그룹] 특정 필드 그룹으로 정렬

SELECT 필드이름 FROM 테이블
GROUP BY 필드이름

 

●[그룹] 기준 설정

SELECT 필드이름 FROM 테이블
ORDER BY 필드이름1 HAVING SUM(‘필드’) >= 200;

4. 조인

내부조인한 결과를 출력

SELECT 테이블1.필드이름 FROM 테이블1, 테이블2
WHERE 테이블1.필드이름 = 테이블2.필드이름

 

별칭을 이용해 코드 간소화(위 코드와 동일)

SELECT A.필드이름 FROM 테이블1 A, 테이블2 B
WHERE A.필드이름 = B.필드이름

 

집합연산을 이용해 결과를 출력

SELECT 필드이름 FROM 테이블1
UNION (또는 UNION ALL, MINUS, INTERSET)
SELECT 필드이름 FROM 테이블2

5. 서브쿼리

서브 쿼리(중첩 쿼리)를 실행하는 경우_서브 쿼리 결과가 하나

SELECT 필드이름1 FROM 테이블
WHERE 테이블.필드이름2 <= (SELECT 필드이름2 FROM 테이블 WHERE 조건문)

 

서브 쿼리(중첩 쿼리)를 실행하는 경우_서브 쿼리 결과가 여러개일 때

SELECT 필드이름1 FROM 테이블
WHERE 테이블.필드이름2 IN (SELECT 필드이름2 FROM 테이블 WHERE 조건문)
-- IN 외에 ANY, ALL, EXIST도 쓸 수 있음

 

INSERT

INSERT INTO 테이블(필드이름1, 필드이름2) VALUES (값1, 값2)

UPDATE

UPDATE 테이블 SET 필드이름1=값1, 필드이름2=값2
WHERE 조건문

 

DELETE

DELETE FROM 테이블 
WHERE 조건문

 

----------------------------------------------------------

[함수 모음]

올림: ceiling / 내림: floor

난수: rand() → 매번 다른결과 / rand(숫자) → 매번 같은결과

문자열 수 반환: len, length

부분문자열: substring(‘문자열’, 2, 1) ‘문자열을 왼쪽에서 2번째부터 1개를 가져옴

공백삭제: ltrim(‘ AA’) , rtrim(‘AA ’)

대소문자 변환: upper(), lower()

평균: avg(‘필드이름’) as 별칭

: sum(‘필드이름’) as 별칭

개수: count(‘필드이름또는 *) as => 열 이름 경우 null값 제외, * 경우 null값 포함 개수

최댓값: max / 최솟값: min

날짜: DATE_FORMAT(‘2021-01-02 12:34:56’, ‘%Y %m %d, %H:%i%s’) 표시 모두 다름