데이터베이스 기본 명령어, 쿼리문
SQL Basic
데이터베이스 관련 명령어
- 데이터베이스 생성 :
CREATE DATABASE 데이터베이스_이름
- 데이터베이스 사용 :
USE 데이터베이스_이름
- 테이블 생성
CREATE TABLE user ( id int PRIMARY KEY AUTO_INCREMENT, name varchar(255), email varchar(255) );
- 테이블 정보 확인(user 테이블) :
DESCRIBE user;
SQL 명령어
-
SELECT
SELECT "HELLO WORLD" -- 일반 문자열 SELECT 2 -- 숫자 SELECT 15 + 3 -- 연산
-
FROM FROM 뒤에 결과를 도출할 테이블 이름 명시
SELECT 특성_1 FROM 테이블_이름 -- 한가지 특성을 테이블에서 사용 SELECT 특성_1, 특성_2 FROM 테이블_이름 -- 여러가지 특성 테이블에서 사용 SELECT * FROM 테이블_이름 -- 테이블의 모든 특성 선택
-
WHERE 필터의 역할. 선택적으로 사용할 수 있다.
SELECT 특성_1, 특성_2 FROM 테이블_이름 WHERE 특성_1 = "특정 값" -- 특정 값과 동일한 데이터 찾기 SELECT 특성_1, 특성_2 FROM 테이블_이름 WHERE 특성_2 <> "특정 값" -- 특정 값을 제외한 데이터 찾기 SELECT 특성_1, 특성_2 FROM 테이블_이름 WHERE 특성_1 > "특정 값" -- 특정 값보다 큰 데이터 SELECT 특성_1, 특성_2 FROM 테이블_이름 WHERE 특성_1 <= "특정 값" -- 특정 값보다 작거나 같은 데이터 SELECT 특성_1, 특성_2 FROM 테이블_이름 WHERE 특성_2 LIKE "%특정 문자열%" -- 특정 값과 비슷한 데이터 SELECT 특성_1, 특성_2 FROM 테이블_이름 WHERE 특성_2 IN ("특정값_1", "특정값_2") -- 리스트의 값과 일치하는 데이터 SELECT * FROM 테이블_이름 WHERE 특성_1 IS NULL -- NULL 값을 찾을 때 SELECT * FROM 테이블_이름 WHERE 특성_1 IS NOT NULL -- NULL이 아닌 데이터를 찾을 때
-
ORDER BY 출력된 데이터 정렬. 선택적으로 사용할 수 있다. 오름차순이 기본값이다.
SELECT * FROM 테이블_이름 ORDER BY 특성_1 SELECT * FROM 테이블_이름 ORDER BY 특성_1 DESC -- 내림차순 정렬
-
LIMIT 출력할 데이터 개수 지정. 선택적으로 사용할 수 있고 쿼리문 마지막에 쓴다.
SELECT * FROM 테이블_이름 LIMIT 200 -- 데이터 200까지만 출력
- DISTINCT
유니크한 값 출력
SELECT DISTINCT 특성_1 FROM 테이블_이름 -- 특성 기준으로 유니크한 값만 출력 SELECT DISTINCT 특성_1 ,특성_2 ,특성_3 FROM 테이블_이름 -- 특성_1, 특성_2, 특성_3의 유니크한 '조합' 값들을 선택
- INNER JOIN
INNER JOIN 또는 JOIN으로 사용
SELECT * FROM 테이블_1 JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B -- 둘 이상의 테이블을 공통된 부분을 기준으로 연결
- OUTER JOIN
SELECT * FROM 테이블_1 LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B -- 'LEFT OUTER JOIN'으로 LEFT INCLUSIVE을 실행 SELECT * FROM 테이블_1 RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B -- 'RIGHT OUTER JOIN'으로 RIGHT INCLUSIVE을 실행
SQL Advanced
- CASE
SELECT CASE WHEN CustomerId <= 25 THEN 'GROUP 1' WHEN CustomerId <= 50 THEN 'GROUP 2' ELSE 'GROUP 3' END FROM customers -- CustomerId 필드값에 따라 3개의 그룹('GROUP 1', 'GROUP 2', 'GROUP 3')으로 나눈다. -- CustomerId 필드값이 25 이하인 경우에는 'GROUP 1', 26부터 50 사이인 경우에는 'GROUP 2', 51 이상은 'GROUP 3' 으로 분류
SUBQUERY 사용 예시
SELECT CustomerId, CustomerId = (SELECT CustomerId FROM customers WHERE CustomerId = 2)
FROM customers
WHERE CustomerId < 6
- IN, NOT IN
SELECT * FROM customers WHERE CustomerId IN (SELECT CustomerId FROM customers WHERE CustomerId < 10) -- customers 테이블에서 'CustomerId' 의 값이 -- 서브쿼리에서 돌려받는 값에 속한 결과들만 조회
- EXISTS, NOT EXISTS
SELECT EmployeeId FROM employees e WHERE EXISTS ( SELECT 1 FROM customers c WHERE c.SupportRepId = e.EmployeeId ) ORDER BY EmployeeId -- employees 테이블에서부터 'EmployeeId' 필드 조회. -- 이때 서브쿼리로 customers 테이블의 'SupportRepId' 필드값과 employees 테이블의 'EmployeeId' 필드값을 비교해 -- 일치하는 레코드들 조회
- FROM
SELECT * FROM ( SELECT CustomerId FROM customers WHERE CustomerId < 10 )