기본 문법

MySQL에서 데이터베이스에 대한 작업 명령은 SQL 구문을 이용하여 처리됩니다.

SELECT * FROM Reservation;
SELECT * FROM Reservation;
select * from Reservation;
Select * From Reservation;

MySQL 주석

# 한줄 주석
-- 한줄 주석
/* 두줄 
이상의 
주석*/

MySQL 주요 구문

CREATE TABLE Reservation(ID INT, Name VARCHAR(30), ReserveDate DATE, RoomNum INT);
CREATE TABLE Customer (ID INT, Name VARCHAR(30), Age INT, Address VARCHAR(20));

INSERT INTO Reservation(ID, Name, ReserveDate, RoomNum) VALUES(1, '홍길동', '2016-01-05', 2014);
INSERT INTO Reservation(ID, Name, ReserveDate, RoomNum) VALUES(2, '임꺽정', '2016-02-12', 918);
INSERT INTO Reservation(ID, Name, ReserveDate, RoomNum) VALUES(3, '장길산', '2016-01-16', 1208);
INSERT INTO Reservation(ID, Name, ReserveDate, RoomNum) VALUES(4, '홍길동', '2016-03-17', 504);

INSERT INTO Customer (ID, Name, Age, Address) VALUES (1, '홍길동', 17, '서울');
INSERT INTO Customer (ID, Name, Age, Address) VALUES (2, '임꺽정', 11, '인천');
INSERT INTO Customer (ID, Name, Age, Address) VALUES (3, '장길산', 13, '서울');
INSERT INTO Customer (ID, Name, Age, Address) VALUES (4, '전우치', 17, '수원');

CREATE

CREATE DATABASE [데이터베이스 이름]

데이터 베이스 선택

USE [데이터베이스 이름]

테이블 생성

CREATE TABLE 테이블이름
(
    필드이름1 필드타입1,
    필드이름2 필드타입2,
    ...
)

예시

CREATE TABLE Test
(
    ID INT,
    Name VARCHAR(30),
    ReserveDate DATE,
    RoomNum INT
);

실행 결과

|Field|Type|Null|Key|Default|Extra|
|--|--|--|--|--|
|ID|int(11)|YES| | NULL||
|NAME|int(11)|YES| | NULL||
|ReserveDate|date|YES| | NULL||
|RoomNum|int(11)|YES| | NULL||

제약 조건(constraint)

CREATE TABLE 문에서 사용할 수 있는 제약 조건은 다음과 같습니다.

  1. NOT NULL : 해당 필드는 NULL값을 저장할 수 없게 됩니다.
  2. UNIQUE : 해당 필드는 서로 다른 값을 가져야만 합니다.
  3. PRIMARY KEY : 해당 필드는 서로 다른 값을 가져야만 합니다.
  4. FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만듭니다.
  5. DEFAULT : 해당 필드의 기본 값을 설정합니다.

ALTER

데이터 베이스 수정

ALTER DATABASE문은 데이터 베이스의 전체적인 특성을 수정할 수 있게 해줍니다.

ALTER DATABASE [데이터베이스 이름] CHARACTER SET=[문자집합이름]
ALTER DATABASE [데이터베이스 이름] COLLATE=[콜레이션이름]
ALTER DATABASE Hotel CHARACTER SET=eukr_bin COLLATE=euckr_korean_ci;

자주 사용되는 대표적인 CAHRACTER SET은 다음과 같습니다.

테이블 수정

문법

ALTER TABLE 테이블이름 ADD 필드이름 필드타입

예제

ALTER TABLE Reservation
ADD Phone INT;
Feild Type Null Key Default Extra
ID int(11) YES NULL
Name varchar(30) YES NULL
ReserveDate date YES NULL
RoomName int(11) YES NULL
Phone int(11) YES NULL

기존 필드 삭제

ALTER TABLE 테이블이름 DROP 필드이름

예제

ALTER TABLE Reservation
DROP RoomNum;

|Feild|Type|Null|Key|Default|Extra|
|--|--|--|--|--|
|ID|int(11)|YES||NULL||
|Name|varchar(30)|YES||NULL||
|ReserveDate|date|YES||NULL||
|Phone|int(11)|YES||NULL||

필드 타입 변경

ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입

예제

ALTER TABLE Reservation
MODIFY COLUMN ReserveDate VARCHAR(20);

|Feild|Type|Null|Key|Default|Extra|
|--|--|--|--|--|
|ID|int(11)|YES||NULL||
|Name|varchar(30)|YES||NULL||
|ReserveDate|varchar(20)|YES||NULL||
|Phone|int(11)|YES||NULL||

Drop

데이터베이스 삭제

DROP DATABASE 데이터베이스이름

-> 데이터 베이스를 삭제하면 해당 모든 테이블이 삭제 됩니다.

테이블 삭제

DROP TABLE 테이블이름
만약 테이블 자체가 아닌 테이블 내용을 삭제하고 싶다면?
TRUNCATE TABLE 테이블이름

실행 결과

|Feild|Type|Null|Key|Default|Extra|
|--|--|--|--|--|
|ID|int(11)|YES||NULL||
|Name|varchar(30)|YES||NULL||
|ReserveDate|date|YES||NULL||
|RoomNum|int(11)|YES||NULL||

UNIQUE

CREATE 문으로 UNIQUE 설정

-- 1.
CREATE TABLE 테이블이름
(
    필드명 필드타입 UNIQUE,
    ...
)
-- 2.
CREATE TABLE 테이블이름
(
    필드이름 필드타입,
    ...,
    [CONSTRAINT 제약조건이름] UNIQUE (필드이름)
)

예제

CREATE TABLE Test 
(
    ID INT UNIQUE,
    Name VARCHAR(30),
    ReserveDate DATE,
    RoomNum INT
);

|Field|Type|Null|Key|Default|Extra|
|--|--|--|--|--|
|ID|int(11)|YES|UNI|NULL||
|Name|varchar(30)|YES||NULL||
|ReserveDate|date|YES||NULL||
|RoomNum|int(11)|YES||NULL||

ALTER문으로 UNIQUE 설정

-- 1.
ALTER TABLE [테이블 이름]
ADD [필드이름] [필드타입] UNIQUE

-- 2.
ALTER TABLE [테이블 이름]
ADD [CONSTRAINT 제약조건이름] UNIQUE (필드이름)
-- 1.
ALTER TABLE 테이블이름
MODIFY COLUMN 필드이름 필드타입 UNIQUE

-- 2.
ALTER TABLE 테이블이름
MODIFY COLUMN [CONSTRAINT 제약조건이름] UNIQUE (필드이름)

INSERT

테이블에 레코드 추가

-- 1. 
INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...)
VALUES (데이터값1, 데이터값2, 데이터값3, ...)

-- 2.
INSERT INTO 테이블이름
VALUES (데이터값1, 데이터값2, 데이터값3, ...)

#SQL #MariaDB