SQL 정리
SQL이란?
SQL는 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어입니다. 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었습니다.
- SELECT - 데이터 조회
- UPDATE - 데이터 수정
- DELETE - 데이터 삭제
- INSERT INTO - 데이터 추가
- CREATE DATABASE - 데이터베이스(스키마) 생성
- ALTER DATABASE - 데이터베이스(스키마) 수정
- CREATE TABLE - 테이블 생성
- ALTER TABLE - 테이블 수정
- DROP TABLE - 테이블 삭제
- CREATE INDEX - 인덱스 생성
- DROP INDEX - 인덱스 삭제
SELECT 문
테이블의 컬럼 전체 조회
SELECT * FROM 테이블명
테이블의 컬럼 일부만 조회
SELECT 컬럼1, 컬럼2, 컬럼3, … FROM 테이블명
SELECT 문 조건절
조건에 맞는 데이터만 조회
SELECT * FROM 테이블명 WHERE 조건
조건 연산자(AND, OR, NOT)
SELECT * FROM 테이블명 WHERE 조건1 AND 조건2 AND 조건3
SELECT * FROM 테이블명 WHERE 조건1 OR 조건2 OR 조건3
SELECT * FROM 테이블명 WHERE NOT 조건
SELECT 문 정렬
조건에 맞는 데이터만 조회
SELECT 컬럼1, 컬럼2, 컬럼3, … FROM 테이블명 ORDER BY 컬럼1, 컬럼2 ASC
SELECT 컬럼1, 컬럼2, 컬럼3, … FROM 테이블명 ORDER BY 컬럼1, 컬럼2 DESC
INSERT INTO 문
컬럼 일부만 추가
INSERT INTO 테이블명 (컬럼1, 컬럼2, 컬럼3, …) VALUES (값1, 값2, 값3, …)
컬럼 전체 추가 (컬럼 전체 값을 순서대로)
INSERT INTO 테이블명 VALUES (값1, 값2, 값3, …)
UPDATE 문
특정 조건을 갖는 데이터를 찾아서 컬럼 값 수정
UPDATE 테이블명
SET 컬럼1 = 값1, 컬럼2 = 값2, 컬럼3 = 값3
WHERE 조건
DELETE 문
특정 조건을 갖는 데이터를 찾아서 데이터 삭제
DELETE FROM 테이블명 WHERE 조건
테이블 전체 데이터 삭제
DELETE FROM 테이블명
SELECT 문 LIKE 검색
조건에 맞는 데이터만 조회
SELECT * FROM 테이블명 WHERE 조건 LIKE 패턴
WHERE 컬럼1 LIKE ‘a%’ 컬럼1의 값이 ‘a’로 시작하는 모든 값
WHERE 컬럼1 LIKE ‘%a’ 컬럼1의 값이 ‘a’로 끝나는 모든 값
WHERE 컬럼1 LIKE ‘%a%’ 컬럼1의 값이 ‘a’가 들어가 있는 모든 값
WHERE 컬럼1 LIKE ‘_a%’ 컬럼1의 값이 두번째 문자가 ‘a’인 모든 값
WHERE 컬럼1 LIKE ‘a_%’ 컬럼1의 값이 ‘a’로 시작하고 문자 길이가 2개 이상인 모든 값
WHERE 컬럼1 LIKE ‘a__%’ 컬럼1의 값이 ‘a’로 시작하고 문자 길이가 3개 이상인 모든 값
WHERE 컬럼1 LIKE ‘a%o’ 컬럼1의 값이 ‘a’로 시작하고 ‘o’로 끝나는 모든 값
SELECT 문 IN 연산자
IN() 안의 값 중 하나를 만족하는 데이터만 조회
SELECT * FROM 테이블명 WHERE 컬럼1 IN (값1, 값2, 값3, …)
SELECT * FROM 테이블명 WHERE 컬럼1 IN (SELECT 문)
NOT IN() 안의 값이 아닌 데이터만 조회
SELECT * FROM 테이블명 WHERE 컬럼1 NOT IN (값1, 값2, 값3, …)
SELECT 문 BETWEEN 연산자
값1, 값2 사이의 데이터만 조회
SELECT * FROM 테이블명 WHERE 컬럼1 BETWEEN 값1 AND 값2
값1, 값2 사이 값이 아닌 데이터만 조회
SELECT * FROM 테이블명 WHERE 컬럼1 NOT BETWEEN 값1 AND 값2
SELECT 문 LIMIT 연산자
조건에 맞는 데이터만 조회
SELECT * FROM 테이블명 LIMIT 건수
SELECT * FROM 테이블명 WHERE 조건 LIMIT 건수
응용 - 페이징 처리
페이지에 보여줘야하는 게시글 수를 지정할때 사용할수 있습니다.
(Page 번호 -1) * 한 페이지 보여주는 수 = 변수 A 라고 가정하면
LIMIT 변수 A, 10 으로 한페이지에 10개를 보여줄수 있습니다.
LIMIT 변수 A, 5 으로 한페이지에 5개를 보여줄수 있습니다.
SELECT 문 MIN(), MAX()
최소값 조회
SELECT MIN(컬럼1) FROM 테이블 WHERE 조건
SELECT MIN(컬럼1) AS 별칭 FROM 테이블 WHERE 조건
최대값 조회
SELECT MAX(컬럼1) FROM 테이블 WHERE 조건
SELECT MAX(컬럼1) AS 별칭 FROM 테이블 WHERE 조건
SELECT 문 COUNT(), AVG(), SUM()
건수 조회
SELECT COUNT(컬럼1) FROM 테이블 WHERE 조건
SELECT COUNT(컬럼1) AS 별칭 FROM 테이블 WHERE 조건
평균값 조회
SELECT AVG(컬럼1) FROM 테이블 WHERE 조건
SELECT AVG(컬럼1) AS 별칭 FROM 테이블 WHERE 조건
합계 조회
SELECT SUM(컬럼1) FROM 테이블 WHERE 조건
SELECT SUM(컬럼1) AS 별칭 FROM 테이블 WHERE 조건
SELECT 문 GROUP BY
동일한 값을 가지고 있는 데이터를 하나의 그룹으로 묶어서
COUNT(), MAX(), MIN(), SUM(), AVG() 같은 function 결과 조회
컬럼2 값이 동일한 그룹별로 데이터 수 조회
SELECT COUNT(컬럼1), 컬럼2 FROM 테이블 WHERE 조건 GROUP BY 컬럼2
JOIN문
두개 이상의 테이블에서 데이터를 조회할 때 사용
SELECT 테이블1.컬럼1, 테이블1.컬럼2, 테이블2.컬럼1 FROM 테이블1
INNER JOIN 테이블2 ON 테이블1.컬럼1=테이블2.컬럼1
INNER JOIN을 사용하지 않는 방법
INNER JOIN을 사용을 해도 되나 3개 이상의 테이블을 JOIN해야 한다고 가정하면 엄청나게 복잡해집니다. 해결방법으로는 다음과 같이 INNER JOIN을 사용하지 않고 만드는 방법이 있습니다.
SQL CheatSheet
참고자료
https://www.w3schools.com/sql/default.asp