이 글은 SQL
할 줄은 아는데, 문법을 자주 까먹는 사람들 (예를 들어, 저 같은), 혹은 SQL을 안한지 오래된 사람들을 위해 만든 문서입니다. 기본적인 SQL
지식을 필요로 합니다. 해당 포스트는 JOIN
문을 다루지 않았습니다. JOIN
문을 정리 한 포스트는 다음에 올리겠습니다. 일단 SQL
기본 문법을 복습하는 느낌으로 해당 포스트를 읽으시면 될 것 같습니다. 한 번 가물가물했던 SQL
에 대한 내용들을 복습 해 볼까요?
CREATE DATABASE
문은 말 그대로, DATABASE
를 생성하기 위한 구문입니다.
Syntax
CREATE DATABASE 데이터베이스명;
DB
라는 이름을 가지는 DATABASE
를 생성하는 예제입니다.
Example
CREATE DATABASE DB;
USE
문을 이용, DATABASE
를 선택 할 수 있습니다.
Syntax
USE 데이터베이스명;
DB
라는 DATABASE
를 사용 하는 예제입니다.
Example
USE DB;
USE
문을 이용하여, DATABASE
를 선택 한 이후, 해당 DATABASE
에서 TABLE
을 생성 할 수 있습니다. CREATE TABLE
문을 이용합니다.
Syntax
CREATE TABLE 테이블명 (
필드명_1 타입_1,
필드명_2 타입_2,
필드명_3 타입_3,
...
);
CREATE TABLE
문을 이용하여, PLAYER
테이블을 생성하는 예제입니다.
Example
CREATE TABLE PLAYER (
ID INT,
NAME VARCHAR(30),
POSITION VARCHAR(20),
AGE INT,
GOAL INT,
ASSIST INT
);
각 필드에 제약 조건을 걸 수 있습니다.
NOT NULL
: 해당 필드는 NULL
값이 불가능 합니다.
UNIQUE
: 해당 필드의 값은 테이블 내 해당 필드에서 유일해야 합니다.
PRIMARY KEY
: 해당 필드는 NOT NULL
과 UNIQUE
제약 조건의 특징을 모두 가집니다.
FOREIGN KEY
: 해당 필드는 다른 테이블의 특정 필드 값과 일치해야 합니다.
DEFAULT
: 해당 필드는 기본값을 가집니다.
CREATE TABLE
문을 작성하는 과정에서도 사용 가능합니다.
Syntax
CREATE TABLE 테이블명 (
필드명_1 타입_1 제약조건_1,
필드명_2 타입_2 제약조건_2,
필드명_3 타입_3 제약조건_3,
...
);
CREATE TABLE
문을 이용하여, 필드에 적절한 제약 조건이 들어간 PLAYER
테이블과 TEAM
테이블을 생성하는 예제입니다.
Example
CREATE TABLE TEAM (
ID INT PRIMARY KEY,
NAME VARCHAR(30) NOT NULL,
COUNTRY VARCHAR(20) DEFAULT "Korea"
);
CREATE TABLE PLAYER (
ID INT PRIMARY KEY,
NAME VARCHAR(30) NOT NULL,
POSITION VARCHAR(20),
COUNTRY VARCHAR(20) DEFAULT "Korea",
AGE INT,
GOAL INT DEFAULT 0,
ASSIST INT DEFAULT 0,
TEAM INT NOT NULL,
FOREIGN KEY (TEAM)
REFERENCES TEAM (ID)
);
ALTER
문을 이용해 TABLE
의 필드 수정 혹은 DATABASE
의 문자 집합 및 콜레이션을 수정 할 수 있습니다.
ALTER DATABASE
를 통해 DATABASE
의 CHARACTER SET
, COLLATE
를 수정 할 수 있습니다.
Syntax
ALTER DATABASE 데이터베이스명 CHARACTER SET=문자집합이름;
ALTER DATABASE 데이터베이스명 COLLATE=콜레이션이름;
DB
데이터베이스에 범용적으로 사용하는 utf8
문자 집합과 utf8_general_ci
콜렉션을 사용해 보겠습니다.
Example
ALTER DATABASE DB CHARACTER SET=uft8 COLLATE=utf8_general_ci;
ALTER TABLE
을 통해 TABLE
의 필드들의 타입, 제약조건 수정 혹은 필드 추가 및 삭제 할 수 있습니다.
ADD
DROP
MODIFY COLUMN
Syntax
ALTER TABLE 테이블이름 ADD 필드명 필드타입;
ALTER TABLE 테이블이름 DROP 필드명;
ALTER TABLE 테이블이름 MODIFY COLUMN 필드명 필드타입;
ALTER TABLE
을 이용하여, PLAYER
테이블에 ADD
로 필드를 추가하고, DROP
으로 필드를 제거하고, MODIFY COLUMN
으로 제약조건을 추가해 보겠습니다.
Example
ALTER TABLE PLAYER ADD RATING FLOAT(3, 2) DEFAULT 0.00;
ALTER TABLE PLAYER DROP COUNTRY;
ALTER TABLE PLAYER MODIFY COLUMN AGE INT DEFAULT 20;
DROP
을 이용해 DATABASE
나 TABLE
을 삭제 할 수 있습니다.
Syntax
DROP DATABASE 데이터베이스명;
DROP TABLE 테이블명;
한번 PLAYER
테이블과 DB
데이터베이스를 삭제 시켜 보겠습니다.
Example
DROP TABLE PLAYER;
DROP DATABASE DB;
TRUNCATE TABLE
문은 테이블 내의 스키마는 남겨놓고, 테이블 내의 데이터 만을 지우고자 할 때 사용합니다.
Syntax
TRUNCATE TABLE 테이블명;
Example
TRUNCATE TABLE PLAYER;
INSERT INTO
문은 데이터를 삽입할 때 사용합니다. VALUES
에 삽입 하려고 하는 데이터 들을 입력 하면 됩니다. 복수 입력 또한 가능합니다.
Syntax
INSERT INTO 테이블명(필드명_1, 필드명_2, 필드명_3, ...)
VALUES (필드값_1, 필드값_2, 필드값_3, ...), (필드값_1, 필드값_2, 필드값_3), ...;
TEAM
테이블에 Tottenham Hotspur 을 추가 해 보겠습니다.
Example
INSERT INTO TEAM(ID, NAME, COUNTRY)
VALUES (1, "Tottenham Hotspur", "England");
UPDATE
문을 이용하여 데이터를 수정할 수 있습니다. UPDATE
문으로 TABLE
을 선택하고, SET
문으로 원하는 데이터를 설정한 후, WHERE
문으로 데이터 수정을 원하는 행을 선택할 수 있습니다.
Syntax
UPDATE 테이블명
SET 필드명_1=필드값_1, 필드명_2=필드값_2, ...
WHERE 필드명_1=필드값_1, 필드명_2=필드값_2, ...;
TEAM
테이블에 넣어 놓은 Tottenham Hotspur의 이름을 토트넘 핫스퍼으로 수정 해 보겠습니다.
Example
UPDATE TEAM
SET NAME="토트넘 핫스퍼"
WHERE NAME="Tottenham Hotspur";
DELETE
문을 이용하여 데이터를 삭제할 수 있습니다. DELETE FROM
문으로 TABLE
을 선택하고, WHERE
문으로 데이터 삭제를 원하는 행을 선택할 수 있습니다.
Syntax
DELETE FROM 테이블명
WHERE 필드명_1=필드값_1, 필드명_2=필드값_2, ...;
TEAM
테이블에 넣어 놓은 토트넘 핫스퍼를 삭제 해 보겠습니다.
Example
DELETE FROM TEAM
WHERE NAME="토트넘 핫스퍼";
SELECT
문을 이용하여 데이터를 조회할 수 있습니다. SELECT
문으로 보고 싶은 필드를 선택하고, FROM
문으로 TABLE
을 선택한 후, WHERE
문으로 조회 하고 싶어 하는 행을 선택 할 수 있습니다.
Syntax
SELECT 필드명_1, 필드명_2, ...
FROM 테이블명
WHERE 필드명_1=필드값_1, 필드명_2=필드값_2;
TEAM
테이블에 있는 데이터 중, COUNTRY
가 Korea인 행만 조회 해 보겠습니다.
Example
SELECT *
FROM TEAM
WHERE COUNTRY="Korea";