SQL 간단 문법 정리
SQL이 가물가물한 사람들을 위해 2020-03-29

SQL 문법 정리

이 글은 SQL 할 줄은 아는데, 문법을 자주 까먹는 사람들 (예를 들어, 저 같은), 혹은 SQL을 안한지 오래된 사람들을 위해 만든 문서입니다. 기본적인 SQL 지식을 필요로 합니다. 해당 포스트는 JOIN문을 다루지 않았습니다. JOIN문을 정리 한 포스트는 다음에 올리겠습니다. 일단 SQL 기본 문법을 복습하는 느낌으로 해당 포스트를 읽으시면 될 것 같습니다. 한 번 가물가물했던 SQL에 대한 내용들을 복습 해 볼까요?

목차

  • CREATE
  • ALTER
  • DROP
  • INSERT
  • UPDATE
  • DELETE
  • SELECT

CREATE

DATABASE 생성

CREATE DATABASE 문은 말 그대로, DATABASE를 생성하기 위한 구문입니다.

Syntax

CREATE DATABASE 데이터베이스명;

DB라는 이름을 가지는 DATABASE를 생성하는 예제입니다.

Example

CREATE DATABASE DB;

DATABASE 선택

USE문을 이용, DATABASE를 선택 할 수 있습니다.

Syntax

USE 데이터베이스명;

DB라는 DATABASE를 사용 하는 예제입니다.

Example

USE DB;

DATABASE의 TABLE 생성

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
);

Constraint: 제약 조건

각 필드에 제약 조건을 걸 수 있습니다.

NOT NULL : 해당 필드는 NULL 값이 불가능 합니다. UNIQUE : 해당 필드의 값은 테이블 내 해당 필드에서 유일해야 합니다. PRIMARY KEY : 해당 필드는 NOT NULLUNIQUE 제약 조건의 특징을 모두 가집니다. 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

ALTER 문을 이용해 TABLE필드 수정 혹은 DATABASE문자 집합 및 콜레이션을 수정 할 수 있습니다.

ALTER DATABASE

ALTER DATABASE를 통해 DATABASECHARACTER 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

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

DROP을 이용해 DATABASETABLE삭제 할 수 있습니다.

Syntax

DROP DATABASE 데이터베이스명;
DROP TABLE 테이블명;

한번 PLAYER 테이블과 DB 데이터베이스를 삭제 시켜 보겠습니다.

Example

DROP TABLE PLAYER;
DROP DATABASE DB;

TRUNCATE TABLE

TRUNCATE TABLE문은 테이블 내의 스키마는 남겨놓고, 테이블 내의 데이터 만을 지우고자 할 때 사용합니다.

Syntax

TRUNCATE TABLE 테이블명;

Example

TRUNCATE TABLE PLAYER;

INSERT

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문을 이용하여 데이터를 수정할 수 있습니다. 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문을 이용하여 데이터를 삭제할 수 있습니다. DELETE FROM문으로 TABLE을 선택하고, WHERE문으로 데이터 삭제를 원하는 행을 선택할 수 있습니다.

Syntax

DELETE FROM 테이블명
WHERE 필드명_1=필드값_1, 필드명_2=필드값_2, ...;

TEAM 테이블에 넣어 놓은 토트넘 핫스퍼를 삭제 해 보겠습니다.

Example

DELETE FROM TEAM
WHERE NAME="토트넘 핫스퍼";

SELECT

SELECT문을 이용하여 데이터를 조회할 수 있습니다. SELECT문으로 보고 싶은 필드를 선택하고, FROM문으로 TABLE을 선택한 후, WHERE문으로 조회 하고 싶어 하는 행을 선택 할 수 있습니다.

Syntax

SELECT 필드명_1, 필드명_2, ...
FROM 테이블명
WHERE 필드명_1=필드값_1, 필드명_2=필드값_2;

TEAM 테이블에 있는 데이터 중, COUNTRYKorea인 행만 조회 해 보겠습니다.

Example

SELECT *
FROM TEAM
WHERE COUNTRY="Korea";

References