MySQL 문법 정리

1. Basic query

Database

CREATE DATABASE db_name;

db_name database 생성

SHOW DATABASES;

database list 조회

USE db_name;

현재 schema를 db_name으로 전환

CONNECT db_name;

현재 schema를 db_name으로 전환

DROP DATABASE db_name;

db_name database를 제거

Table

CREATE TABLE t_name (col_name data_type, ..., col_name data_type);

t_name 테이블 생성

SHOW TABLES;

현재 db의 table list 조회

SHOW FIELDS FROM t_name;

t_name의 field list 조회

SHOW CREATE TABLE t_name;

생성된 t_name의 sql을 조회

DESC t_name;

t_name의 구조를 조회

ALTER TABLE t_name RENAME new_t_name;

t_name을 new_t_name으로 변경

ALTER TABLE t_name ADD COLUMN col_name data_type;

t_name에 새로운 컬럼 추가

ALTER TABLE t_name MODIFY COLUMN col_name new_data_type;

col_name의 데이터 타입을 변경

ALTER TABLE t_name CHANGE COLUMN col_name new_col_name new_data_type;

col_name을 new_col_name으로 변경하고 데이터 타입도 new_data_type으로 변경

ALTER TABLE t_name DROP DOWN col_name;

t_name 테이블에서 col_name 컬럼 제거

INSERT INTO t_name (col_name, ..., col_name) VALUES(col_value, ..., col_value), ..., (col_value, ..., col_value);

t_name 테이블에 데이터 삽입

UPDATE t_name SET col_name = value WHERE condition;

t_name 테이블의 col_name 컬럼의 condition을 만족하는 데이터 수정

DELETE FROM t_name WHERE condition;

t_name 테이블의 condition을 만족하는 데이터 삭제

TRUNCATE TABLE t_name;

t_name의 모든 데이터를 삭제

DROP TABLE t_name;

t_name 테이블을 제거

Process and Other

show processlist;

process list 조회

kill pid;

process kill

exit or \q

MySQL session 종료

2. keyword

키워드
문법
작성순서
실행순서
의미

SELECT

SELECT col_name

1

5

col_name 컬럼 선택

FROM

FROM t_name

2

1

t_name 테이블 지정

WHERE

WHERE condition

3

2

데이터 조건 지정

GROUP BY

GROUP BY col_name

4

3

col_name 그룹화

HAVING

HAVING condition

5

4

GROUP BY 조건 지정

ORDER BY

ORDER BY col_name

6

6

col_name 기준 정렬

키워드

문법

의미

AS

keyword AS nickname

테이블, 컬럼 등에 별명 지정

LIMIT

LIMIT row_number

가져올 데이터의 행 개수 지정

DISTINCT

DISTINCT col_name

가져올 데이터의 중복 제외

3. Operator

Logical Operators

AND

A AND B

A와 B 둘 다 True일 때 True

OR

A OR B

A와 B 둘 중 하나라도 True이면 True

NOT

NOT A

A가 아닐 때 True

Comparison Operators

=

A = B

A와 B가 일치

!=

A != B

A와 B가 불일치

<

A < B

A는 B보다 작음

<=

A <= B

A가 B와 같거나 작음

>

A > B

A가 B보다 큼

>=

A >= B

A가 B와 같거나 큼

Other Operators

BETWEEN

col_name BETWEEN A AND B

col_name의 데이터가 A와 B사이에 있는지 확인

IN

col_name IN (A, ..., B)

col_name 컬럼의 데이터가 목록에 포함되는지 확인

LIKE

col_name LIKE string

col_name 컬럼의 데이터가 string 조건을 만족하는지 확인

IS NULL

col_name IS NULL

col_name 컬럼의 데이터가 NULL인지 확인

4. Functions

Rank Function

RANK () OVER (ORDER BY col_name)

공동 순위가 있으면 다음 순서로 건너 뜀

DENSE_RANK () OVER (ORDER BY col_name)

공동 순위가 있어도 다음 순위로 건너 뛰지 않음

ROW_NUMBER () OVER (ORDER BY col_name)

공동 순위 무시

Group Function

COUNT(col_name)

그룹의 데이터 개수 계산

SUM(col_name)

그룹의 합을 계산

AVG(col_name)

그룹의 평균을 계산

MIN(col_name)

그룹의 최솟값을 계산

MAX(col_name)

그룹의 최댓값을 계산

String Function

LOCATE(string1, string2)

string2에서 string1의 위치 반환

SUBSTRING(string, number)

string의 number 위치 문자부터 반환

RIGHT(string, number)

string 문자열의 우측에서 number 문자까지 반환

LEFT(string, number)

string 문자열의 좌측에서 number 문자까지 반환

UPPER(string)

string 문자열 전체를 대문자로 변경한 문자열을 반환

LOWER(string)

string 문자열 전체를 소문자로 변경한 문자열을 반환

LENGTH(string)

string 문자열의 길이를 반환

CONCAT(string1, string2)

string1과 string2를 합친 문자열을 반환

REPLACE(string, ch1, ch2)

string 문자열에서 ch1을 ch2로 변경한 문자열을 반환

Number Function

ABS(number)

number의 절대값 반환

CEILING(number)

number을 올림한 정수 반환

FLOOR(number)

number을 내림한 정수 반환

ROUND(number, number_of_digits)

number을 number_of_digits까지 반올림한 숫자 반환

TRUNCATE(number, number_of_digits)

number을 number_of_digits까지 버림한 숫자 반환

POWER(number1, number2)

number1의 number2 제곱 반환

MOD(number1, number2)

number1을 number2로 나눈 나머지 반환

Date Function

NOW()

현재 날짜와 시간

CURRENT_DATE()

현재 날짜

CURRNET_TIME()

현재 시간

YEAR(date)

date의 year 반환

MONTH(date)

date의 month 반환

MONTHNAME(date)

date의 month를 영어로 반환

DAYNAME(date)

date의 day를 영어로 반환

DAYOFMONTH(date)

date의 day 반환

DAYOFWEEK(date)

date의 day를 숫자로 반환

WEEK(date)

date의 year의 몇 번째 주인지 반환

HOUR(time)

time의 hour 반환

MINUTE(time)

time의 minute 반환

SECOND(time)

time의 second 반환

DATE_FORMAT(date, format)

date의 형식을 format으로 변경해서 반환

DATEDIFF(date1, date2)

date1과 date2의 차이 반환

TIMEDIFF(time1, time2)

time1과 time2의 차이 반환

5. JOIN

INNER JOIN

SELECT col_name FROM t_name1 AS A INNER JOIN t_name2 AS B ON A.col = B.col;

A∩B

LEFT JOIN

SELECT col_name FROM t_name1 AS A LEFT JOIN t_name2 AS B ON A.col = B.col;

A

SELECT col_name FROM t_name1 AS A LEFT JOIN t_name2 AS B ON A.col = B.col WHERE B.col IS NULL;

A-B

RIGHT JOIN

SELECT col_name FROM t_name1 AS A RIGHT JOIN t_name2 AS B ON A.col = B.col;

B

SELECT col_name FROM t_name1 AS A RIGHT JOIN t_name2 AS B ON A.col = B.col WHERE B.col IS NULL;

B-A

OUTER JOIN

SELECT col_name FROM t_name1 AS A LEFT JOIN t_name2 AS B ON A.col = B.col UNION SELECT col_name FROM t_name1 AS A RIGHT JOIN t_name2 AS B ON A.col = B.col;

A∪B

SELECT col_name FROM t_name1 AS A UNION SELECT col_name FROM t_name2 AS B;

SELECT col_name FROM t_name1 AS A UNION ALL SELECT col_name FROM t_name2 ASB;

A∪B(중복 포함)

CROSS JOIN

SELECT col_name FROM t_name1 AS A CROSS JOIN t_name2 ASB;

A와 B의 모든 값을 각각 합침

SELF JOIN

SELECT col_name FROM t_name1 AS A1 INNER JOIN t_name1 AS A2 ON A1.col = A2.col;

A∩A

6. Create condition and function

IF (condition, value1, value2)

value1: condition을 만족하는 값 value2: condition을 만족하지 못하는 값

CASE col_name WHEN condition1 THEN value1 ... WHEN condition2 THEN value2 ELSE value3 END

다중 조건문

CREATE FUNCTION func_name (value_name, data_type, ..., value_name data_type) RETURNS result_value data_type BEGIN DECLARE temp_name data_type; SET temp_name = value_name; QUERY; RETURN result_value; END

함수 생성

참고 자료

Last updated