coding/IT, CS

SQL - 쿼리문 CRUD 명령어

JIN_Coder 2022. 12. 31. 13:44

SQL 쿼리문 CRUD 명령어

 

DB구조

DATABASE(DB) > TABLE > COLUMN > DATA

 

- SELECT 조회

가장 기본 구문
SELECT * FROM TABLE WHERE COLUMN = ?

DB가 다른 테이블에서 조회
SELECT * FROM DB.TABLE WHERE COLUMN = ?

특정 칼럼만 조회(조건 x)
SELEECT COLUMN1, COLUMN2 FROM TABLE

칼럼1에 대한 중복을 제거한 데이터 조회
SELECT DISTINCT COLUMN1 FROM TABLE

칼럼1을 별칭으로 출력
SELECT COLUMN1 AS WORD FROM TABLE

칼럼1에 1.1을 곱한 값(10%의 값)을 조회 - 표현식
SELECT COLUMN1*0.1 FROM TABLE

Ex) EMP 테이블에서 pay칼럼의 데이터들의 1.5를 곱한 값들을 "50% 급여인상"이라는 이름의 칼럼으로 보여줌
SELECT PAY*1.5 AS "50% 급여인상" FROM EMP


-- LIMIT --
출력 개수 지정
SELECT * FROM TABLE WHERE COLUMN = ? LIMIT 100

2번째 인덱스부터 10개 출력(LIMIT 인덱스, 출력개수)
SELECT * FROM TABLE WHERE COLUMN = ? LIMIT 2,10


-- 연산자 --
조건 비교연산자, 논리연산자
SELECT * FROM TABLE WHERE COLUMN1 = ? AND COLUMN2 < ? OR COLUMN3 >= ?
SELECT * FROM TABLE WHERE COLUMN1 = ? && COLUMN2 < ? || COLUMN3 >= ?

기타 연산자
IN안에 값이 있는 경우(or과 비슷)
SELECT * FROM TABLE WHERE COLUMN IN(DATA1, DATA2)

BETWEEN A AND B(A와 B 사이)
SELECT * FROM TABLE WHERE COLUMN BETWEEN DATA1 AND DATA2

IS NULL(NULL값만)
SELECT * FROM TABLE WHERE COLUMN IS NULL


-- 검색 --
특정 단어 포함
SELECT * FROM TABLE WHERE COLUMN LIKE "%SECRCH%"
특정 단어 시작
SELECT * FROM TABLE WHERE COLUMN LIKE "SECRCH%"
특정 단어 끝맺음
SELECT * FROM TABLE WHERE COLUMN LIKE "%SECRCH"


-- 정렬 --
정렬(오름 ASC 기본, 생략 가능)
SELECT * FROM TABLE ORDER BY COLUMN 

정렬(내림 DESC)
SELECT * FROM TABLE ORDER BY COLUMN DESC

조건문 정렬
SELECT * FROM TABLE WHERE COLUMN = ? ORDER BY COLUMN2 ASC

정렬기준 여러 개(칼럼1은 내림차순 후 그 안에서 칼럼2는 오름차순 정렬)
SELECT * FROM TABLE ORDER BY COLUMN1 DESC, COLUMN2


-- MATH --
데이터 카운트
SELECT COUNT(*) FROM TABLE

최대, 최소(문자형도 가능)
SELECT MAX(COLUMN) FROM TABLE
SELECT MIN(COLUMN) FROM TABLE


-- 그룹 --
특정 칼럼을 그룹화하는 GROUP BY
특정 칼럼을 그룹화한 결과에 조건을 거는 HAVING
WHERE 그룹화하기 전 조건, HAVING 그룹화 후 조건

조건 처리 후 칼럼 그룹화
SELECT COLUMN1 FROM TABLE WHERE COLUMN2 = ? GROUP BY COLUMN3

조건 처리 후 칼럼 그룹화 후 조건 처리
SELECT COLUMN1 FROM TABLE WHERE COLUMN = ? GROUP BY COLUMN HAVING COLUMN = ?

그룹 카운트
Ex) 성별이 1인 LVL을 그룹화하여 LVL별 개수를 가져온 후 그중 LVL이 3 이상인 데이터
SELECT LVL, COUNT(*) AS LVLCONT FROM TABLE WHERE GENDER = 1 GROUP BY LVL HAVING LVL > 3

 

 

- INSERT 삽입

기본 형식(입력하는 칼럼의 수와 데이터의 수, 타입은 같아야 함) -- 데이터 개수가 부족하면 null값이 들어감
INSERT INTO TABLE (COLUMN1, COLUMN2, COLUMN3) VALUES (DATA1, DATA2, ?)

모든 칼럼에 데이터 입력 시 생략가능
INSERT INTO TABLE VALUES (DATA1, DATA2, ?)

동시에 여러 행 삽입
INSERT INTO TABLE (COLUMN1, COLUMN2, COLUMN3) VALUES (DATA1, DATA2, DATA3), (DATA4, DATA5, DATA6)

 

 

- UPDATE 수정

기본 구조 -- 칼럼3의 값이 ?인 데이터들의 칼럼1은 데이터1, 칼럼2는 ?로 수정
UPDATE TABLE SET COLUMN1 = DATA1, COLUMN2 = ? WHERE COLUMN3 = ?

조건이 없으면 테이블의 모든 값을 수정
UPDATE TABLE SET COLUMN1 = ?

칼럼과 데이터를 분리해서 작성하기도 함
UPDATE TABLE SET (COLUMN1, COLUMN2, COLUMN3) = (?, ?, ?) WHERE COLUMN1 = DATA1

서브쿼리 사용
UPDATE TABLE1 SET (COLUMN1, COLUMN2) = (SELECT COLUMN1, COLUMN2 FROM TABLE2 WHERE COLUMN3 = ?) WHERE COLUMN4 = ?

 

 

- DELETE 삭제

특정 데이터 삭제
DELETE FORM TABLE WHERE COLUMN = ?

테이블 내 전체 데이터 삭제
DELETE FROM TABLE

드랍은 폴더를 삭제
DROP TABLE TABLE1

 

 

- 그외 꿀기능

# DB의 테이블 목록을 보여줌
SHOW TABLES

# 테이블의 구조를 조회(칼럼, 타입, NULL, KEY 등)
DESC TABLE

'coding > IT, CS' 카테고리의 다른 글

인덱스(INDEX)  (0) 2023.01.27
시간 복잡도, 공간 복잡도  (0) 2022.11.26
NginX란  (0) 2022.11.19
MVC, MVP, MVVM 패턴의 이해  (0) 2022.11.18
이진 탐색법  (0) 2022.11.15