MySQL
에서 작업 명령은 SQL
문법을 사용한다
SQL
순서
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s)
LIMIT number;
database
또는 table
을 생성 CREATE
, 삭제 DROP
한다CREATE DATABASE database_name;
DROP DATABASE database_name;
CREATE TABLE table_name;
DROP TABLE table_name;
SHOW
: database
table
column
목록 등 다양한 정보를 보여준다SHOW DATABASES;
SHOW TABLES;
SHOW TABLES FROM database_name;
SHOW COLUMNS FROM table_name;
USE
: 사용할 database
를 선택한다.USE database_name;
DESC
: table
의 구성과 데이터타입을 보여준다DESC table_name;
table
에 record
를 넣어준다.INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
-- 모든 column에 value를 넣는 경우에는 아래와 같이 작성해도 된다
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
-- MySQL에서 주석처리는 -- 를 사용한다
UPDATE
, SET
: table
의 기존 record
를 수정한다
DELETE
: table
의 기존 record
를 삭제한다
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
-- WHERE 가 없이 UPDATE 하면 모든 record(row)가 바뀌게 된다는 것을 주의한다
-- 아래의 경우 table의 column1의 모든 값이 value1로 수정된다.
UPDATE table_name
SET column1 = value1
DELETE FROM table_name WHERE condition;
-- WHERE 가 없이 DELETE 하면 모든 record(row)가 삭제된다는 것을 주의한다
database
의 table
에서 data
를 불러온다-- table의 모든 column의 data를 보여준다
SELECT * FROM table_name;
-- table의 특정 column의 data를 보여준다
SELECT column_name FROM table_name;
-- table의 특정 column의 data를 보여준다
SELECT column1_name, column2_name FROM table_name;
DISTINCT
: 중복된 값이 한 번만 선택되도록 한다
AS
: table
column
에 별칭alias
를 부여한다. 해당 별칭은 SELECT
문에서 사용가능하다
-- 특정 table의 특정 column의 데이터를 보여줄 때
-- 그 데이터에 중복되는 값이 있으면 그 값은 한 번만 보여준다
SELECT DISTINCT column_name FROM tabel_name;
SELECT column_name AS 별칭 FROM tabel_name;
SELECT column_name FROM tabel_name AS 별칭;
table
에서 WHERE
다음으로 오는 조건condition
을 만족하는 row
를 선택할 때 사용한다
IN
을 사용하면 WHERE
에 여러 값을 지정할 수 있다
SELECT column_name FROM tabel_name WHERE condition;
--아래처럼 작성해도 위와 같다
SELECT column_name
FROM tabel_name
WHERE condition;
-- IN
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
-- 서브쿼리 (SELECT ... FROM ... WHERE ...) 사용 가능하다
-- (SELECT STATEMENT) <- 이 부분이 서브쿼리
SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);
row
를 하나의 row
로 그룹화한다SELECT column_name FROM tabel_name WHERE condition GROUP BY column_name;
--아래처럼 작성해도 위와 같다
SELECT column_name(s)
FROM tabel_name
WHERE condition
GROUP BY column_name(s);
ASC
또는 내림차순DESC
로 정렬한다SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
-- ASC, DESC를 입력하지 않으면 기본설정은 ASC 이다.
-- 각 column을 다르게 정렬 할 수 있다
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 ASC, column2 DESC, ... ;
LIMIT
다음으로 오는 수 만큼 상위부터 결과를 보여준다SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
-- record 수가 큰 테이블에서 유용하다.
COUNT
: 조건condition
과 일치하는 record
의 수를 반환한다
SUM
: 숫자 column
의 총 합을 반환한다
AVG
: 숫자 column
의 평균을 반환한다
MIN
: 숫자 column
의 최소값을 반환한다
MAX
: 숫자 column
의 최대값을 반환한다
-- column_name에 *을 사용할 수 있다.
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
SELECT SUM(column_name)
FROM table_name
WHERE condition;
SELECT AVG(column_name)
FROM table_name
WHERE condition;
SELECT MIN(column_name)
FROM table_name
WHERE condition;
SELECT MAX(column_name)
FROM table_name
WHERE condition;
WHERE
는 집계함수를 조건에 사용할 수 없기 때문에 HAVING
을 사용한다SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
-----------------------
HAVING COUNT(column_name) > 100
-- 어느 column에서 특정 조건인 row의 수가 100 이상인 이라는 조건이다.
INNER JOIN
두 테이블에 일치하는 값을 가진 레코드를 연결하여 두 테이블의 데이터를 사용할 수 있다
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
LEFT OUTER JOIN
왼쪽 테이블(테이블 1)에서 모든 레코드를 반환하고 오른쪽 테이블(테이블 2)에서 일치하는 레코드(가 있는 경우)를 반환한다.
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
RIGHT OUTER JOIN
오른쪽 테이블(테이블 2)에서 모든 레코드를 반환하고 왼쪽 테이블(테이블 1)에서 일치하는 레코드(가 있는 경우)를 반환한다.
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;