danc
danc*dev
danc
  • 분류 전체보기
    • codestates_BE_bootcamp39
      • 주단위 일기
      • 회고
    • programming
      • JAVA
      • SPRING
      • GENERAL
      • LINUX
      • ALGORITHM
      • ERROR_HANDLING
    • web
      • NETWORK
      • DB
      • HTML
      • CSS
    • kr
    • nz

최근 글

인기 글

태그

  • css
  • React에서 Authorization헤더
  • TIL
  • 윈도우 11 우분투
  • TIL 일기
  • TIL일기
  • HTTP
  • AOP
  • 코드스테이츠 백엔드
  • 일기
  • 회고
  • 코드스테이츠

최근 댓글

티스토리

hELLO · Designed By 정상우.
danc

danc*dev

web/DB

DB/SQL 관련 명령어

2022. 6. 9. 21:04
 

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개의 문자)  
email 문자열 (최대 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
    'web/DB' 카테고리의 다른 글
    • DB 설계
    • SQL
    • MySQL 접속 에러 ERROR 2003 (HY000)
    danc
    danc
    Backend 개발자를 목표로 공부 중 입니다.

    티스토리툴바