MySQL Cheat Sheet
MySQL cheat sheet provides you with the on-page that contains the most commonly used statements that help you practice with MySQL more effectively.
www.mysqltutorial.org
DB 관련 명령어
DB 생성
CREATE DATABASE 데이터베이스_이름;
DB 사용
DB를 이용해서 테이블을 만들거나, 수정 또는 삭제 등의 작업을 수행하기 위해 DB를 쓴다는 것을 알려야 한다.
USE 데이터베이스_이름;
Table 생성
USE를 이용해 DB를 선택하고 난 뒤에 테이블을 만들 수 있다.
Table은 필드(테이블의 column)와 함께 생성한다.
[예시] 아래의 필드 조건이 있다고 가정한다. | ||
필드 이름 | 필드 타입 | 그 외의 속성 |
id | 숫자 | Primary Key이면서 자동 증가되도록 설정 |
name | 문자열 (최대 255개의 문자) | |
문자열 (최대 255개의 문자) |
//위 표의 필드를 가지고 테이블 생성
CREATE TABLE user (
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(255),
email varchar(255)
);
Table 정보 확인
DESCRIBE user;
MySQL 명령어
여기선 자주 사용하는 명령어 몇 가지만 적어보았다. SQL 명령어는 대소문자 구분 X
SELECT (필수)
SELECT명령어는 데이터셋에 포함될 특성들을 정의한다.
//일반 문자열
SELECT 'Hello World'
//숫자
SELECT 10
//간단한 연산
SELECT 10 + 30
FROM (필수)
FROM 명령어는 테이블과 관련된 작업을 할 경우 반드시 사용해야 한다. FROM뒤에는 결과를 도출해낼 DB 테이블을 명시한다.
//특정한 특성을 테이블에서 사용한다.
SELECT 특성_1
FROM 테이블_이름
//다수의 특성을 테이블에서 사용
SELECT 특성_1, 특성_2
FROM 테이블_이름
//테이블의 모든 특성을 선택한다
SELECT *
FROM 테이블_이름
WHERE
필터 역할을 하는 Query문이다.
//특정 값과 같은 데이터 찾기
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 = "특정 값"
//특정 값을 제외한 값 찾기
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 <> "특정 값"
//특정값의 크거나 작거나와 같은 데이터의 크기 비교할 때
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 > "특정 값"
or
WHERE 특성_1 <= "특정 값"
//문자열에서 특정 값과 비슷한 값을 필터링 할 때 (LIKE, \% or \*)
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 LIKE "%특정 문자열%"
//리스트의 값들과 일치하는 데이터를 필터링 할 때 (IN)
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 IN ("특정값_1", "특정값_2")
//값이 없는 경우 (NULL)을 찾고 싶을 때 (IS)
SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NULL
//값이 없는 경우를 제외하고 싶을 때 (NOT)
SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NOT NULL
ORDER BY
반환받는 데이터를 어떤 기준으로 정렬해서 출력할지 결정
//오름차순 (기본정렬)
SELECT *
FROM 테이블_이름
ORDER BY 특성_1
//내림차순 (DESC 추가)
SELECT *
FROM 테이블_이름
ORDER BY 특성_1 DESC
LIMIT
결과로 출력학 데이터의 개수를 정한다. Query문에서 사용 시 가장 마지막에 추가한다.
//LIMIT 데이터 출력 개수
//데이터 결과를 200개만 출력
SELECT *
FROM 테이블_이름
LIMIT 200
DISTINCT
유니크한 값을 받고 싶을 때에는 SELECT DISTINCT를 사용한다.
//특성_1을 기준으로 유니크한 값들만 선택
SELECT DISTINCT 특성_1
FROM 테이블_이름
//특성_1,2,3 의 유니크한 '조합'값들을 선택
SELECT
DISTINCT
특성_1
,특성_2
,특성_3
FROM 테이블_이름
INNER JOIN
둘 이상의 테이블을 서로 공통된 부분을 기준으로 연결하고 싶을 때
//INNER JOIN이나 JOIN으로 실행할 수 있다
SELECT *
FROM 테이블_1
JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
OUTER JOIN
2개 이상의 테이블을 JOIN 할 때 한쪽 테이블엔 데이터가 존재하지만 다른 쪽 테이블에는 데이터가 존재하지 않는 경우, 없는 데이터가 출력에서 누락되는 것을 방지하기 위해 사용
//LEFT OUTER JOIN
//두개의 테이블에서 같은것을 조회 + 왼쪽 테이블에 있는것은 모두 포함해서 조회
SELECT *
FROM 테이블_1
LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
//RIGHT OUTER JOIN
//두개의 테이블에서 같은것을 조회 + 오른쪽 테이블에 있는것은 모두 포함해서 조회
SELECT *
FROM 테이블_1
RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
//FULL OUTER JOIN (ANSI 표준 SQL)
//양쪽 테이블에 있는 데이터를 보두 보여준다
SELECT *
FROM 테이블_1
FULL OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
CASE
SQL에서도 if문과 같은 기능을 사용할 수 있는데 CASE 명령어를 사용한다.
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
//예시
SELECT CASE
WHEN CustomerId <= 25 THEN 'GROUP 1'
WHEN CustomerId <= 50 THEN 'GROUP 2'
ELSE 'GROUP 3'
END
FROM customers;
위의 예시는 Column 'CustomerId'의 값에 따라 3개의 그룹으로 분류한다.
SUBQUERY
쿼리문을 작성할 때 다른 쿼리문을 포함할 수 있다. 이때 포함되는 쿼리문을 SUBQUERY라고 한다.
- 서브 쿼리는 ( )로 감싸야한다.
- 서브 쿼리의 결과는 개별 값이나 레코드 리스트이다.
- 서브쿼리의 결과를 하나의 column으로 사용할 수 있다.
- IN, NOT IN, EXIST, NOT EXIST, FROM 명령어 을 서브 쿼리에서 사용할 수 있다.
SELECT CustomerId, CustomerId = (SELECT CustomerId FROM customers WHERE CustomerId = 2)
FROM customers
WHERE CustomerId < 6
IN, NOT IN
IN은 특정 값이 서브쿼리에 있는지 확인할 때 사용한다. 아래의 쿼리문은 customer 테이블 안의 "CustomerId" column의 값을 서브쿼리에서 반환받는 값에 속한 결과들로만 찾는다.
따라서 CustomerId의 값이 50 미만인 경우의 레코드를 반환한다.
NOT IN이 되어있으면 50 미만을 제회한 레코드를 조회한다.
SELECT *
FROM customers
WHERE CustomerId IN (SELECT CustomerId FROM customers WHERE CustomerId < 50)
EXIST
EXIST와 NOT EXIST는 반환받은 서브 쿼리에 존재하는 레코드를 조회한다. 만약 조회하려는 특정 레코드가 존재하면 TRUE, 없으면 FALSE를 반환한다.
아래의 쿼리문은 price가 20 미만인 "suppliers" column의 목록을 조회한다
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
-----------------------------------
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID
= Suppliers.supplierID AND Price < 20);
FROM
FROM에도 서브 쿼리를 사용할 수 있다.
조회된 결과를 -> 하나의 테이블이나 조회할 대상으로 설정해 사용 가능하다.
SELECT *
FROM (
SELECT CustomerId
FROM customers
WHERE CustomerId < 50
)
'web > DB' 카테고리의 다른 글
DB 설계 (0) | 2022.06.13 |
---|---|
SQL (0) | 2022.06.13 |
MySQL 접속 에러 ERROR 2003 (HY000) (0) | 2022.06.10 |