MySQL 문법 정리
1. Basic query
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
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 () 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