[해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다.
따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.]
이번 MySQL를 통해 Database 생성, Table CRUD를 처리하는 방법에 대해 정리해보자.
MySQL이 설치된 환경은 AWS CentOS로 버전은 5.7을 사용한다.
Database 조회 및 생성
다음의 명령어를 통해 데이터베이스 조회가 가능하다.
SHOW DATABASES;
이번엔 새로운 데이터베이스를 생성하여 이용해보도록 하자.
다음의 명령어를 통해 새로운 데이터베이스를 생성하자.
CREATE DATABASE 데이터베이스 이름;
성공적으로 데이터베이스가 실행된 것을 볼 수 있다.
이번엔 새로 생성한 데이터베이스에 접속하기 위해 다음의 명령어를 입력하여 접속하자.
USE 데이터베이스 이름;
Table 제어하기
CREATE
테이블 생성은 CREATE를 통해 할 수 있다.
Create Table의 기본 문법은 다음과 같다.
CREATE TABLE 테이블명
(
Column1 Type [Option],
Column2 Type [Option],
...
ColumnN Type [Option],
);
MySQL에서 제공하는 Data Type은 상당히 많다. 우선 기본적으로 자주 사용하는 데이터 타입을 알아보자.
문자
- CHAR(N) : 최대 255Byte까지 입력이 되며, 문자열을 입력할 수 있다. 지정된 길이보다 짧은 데이터가 입력될 시 나머지 공간은 공백으로 채워진다.
- VARCHAR(N) : 최대 65535Byte까지 입력 가능하며, 문자열을 입력할 수 있다. 지정된 길이보다 짧은 데이터가 입력될 시 나머지 공간은 채우지 않는다.
- TEXT(N) : 문자열 데이터 타입으로 최대 65535Byte까지 입력이 가능하다.
숫자
- INT(N) : 최대 4Byte (-2147483648 ~ +2147483647 or 0 ~ 4294967295) 까지 수 표현이 가능하다.
- BIGINT(N) : 최대 8Byte 까지 수 표현이 가능하다. 거의 무제한으로 수를 입력할 수 있다.
- FLOAT(N) : 최대 4Byte 까지 부동 소수형 표현이 가능하다.
시간/날짜
- DATE : 최대 3Byte까지 입력이 되며, 날짜(년도, 월, 일) 형태의 날짜 형태의 데이터를 입력할 수 있다.
- TIME : 최대 3Byte까지 입력이 되며, 시간(시, 분, 초) 형태의 시간 형태의 데이터를 입력할 수 있다.
- TIMESTAMP : 최대 4Byte까지 입력이 되며, 시스템 변경 시 자동으로 그날의 날짜와 시간이 입력된다.
사용하는 옵션 중 많이 사용하는 건 Null, Primary Key, Null, Auto_Increment 가 있다.
- Null : Column에 Null 이 들어가지 않도록 설정하려면 Not Null Option을 추가해준다.
- Primary Key : Table의 기본키를 설정한다.
- Auto_Increment : Type이 정수인 Column의 값을 1 씩 자동으로 증가시켜준다.
그렇다면 가장 간단한 테이블을 생성해보자.
쿼리 작업은 MySQL Workbench에서 하겠다.
우선 use 데이터베이스명 을 통해 DB에 접속한다.
사용자를 관리할 수 있는 user table을 생성해보자.
쿼리는 다음과 같다.
create table user
(
id int(4) not null primary key auto_increment,
name varchar(10) not null,
age int(4) not null
);
id Column은 정수 타입이며 Null이 될 수 없으며, 기본키로 쓰인다. 또한 Auto_increment 속성으로 값을 입력하지 않아도 자동으로 증가되도록 한다.
다음의 명령어를 입력하여 테이블이 정상적으로 생성됐는지 확인해보자.
desc 테이블명;
ALTER
테이블의 수정은 ALTER 명령어를 통해 수행한다.
주로 새로운 Column을 추가하거나 수정, 삭제 등 변경 작업이 필요할 때 사용한다.
단, 이러한 작업은 데이터가 별로 없는 테이블에서 하는 것을 추천한다.
만약 데이터가 많으면, 수정하는데 시간이 많이 걸리며 Column 수정으로 다른 Table과 Column명이 매칭이 되지 않아 에러가 발생할 수 있다.
1. ALTER TABLE ADD (새로운 Column 추가)
ALTER TABLE 테이블 ADD (Column DataType [Option]);
위에서 생성했던 user 테이블에 address 란 새로운 Column을 추가해보자.
alter table user add (address varchar(20));
user 테이블에 address라는 이름의 Column이 추가되며 DataType은 varchar로 설정하도록 했다.
결과는 다음과 같다.
2. ALTER TABLE MODIFY (기존 Column 수정)
ALTER TABLE 테이블 MODIFY 컬럼명 DataType [Option];
ADD랑 큰 차이는 없다. 단지 키워드를 Modify로 바꿔서 작성한다.
방금 생성했던 address Column을 Null이 되지 않으며, varchare(40)으로 변경해보자.
alter table user modify address varchar(40) Not null;
3. ALTER TABLE DROP (기존 Column 삭제)
ALTER TABLE 테이블 DROP COLUMN 컬럼명;
기존에 있던 Column을 삭제한다.
위에서 생성했던 address Column을 삭제해보자.
alter table user drop address;
4. ALTER TABLE CHANGE (기존 Column 이름 변경)
ALTER TABLE 테이블 CHANGE COLUMN 기존컬럼명 변경컬럼명 DataType [Option];
해당 명령어는 Column 속성 뿐만 아니라 이름까지 변경시켜준다.
MySQL 8버전에서는 다음과 같은 명령어를 통해서 사용 가능하다.
다음의 명령어는 원래 Oracle에서 Column 이름을 변경할 때 사용한다.
ALTER TABLE 테이블 RENAME COLUMN 기존컬럼명 TO 새로운컬럼명;
이번엔 id를 userId로 변경해보자.
alter table user change column id userid int(4);
DROP
테이블의 삭제는 DROP 명령어를 통해 수행한다.
DROP TABLE의 문법은 다음과 같다.
DROP TABLE 테이블명;
처음에 생성했던 테이블을 삭제해보자.
'Database > MySQL' 카테고리의 다른 글
[MySQL] JOIN (INNER, OUTER[LEFT, RIGHT]) 정리 (0) | 2019.09.05 |
---|---|
[MySQL] Group By ~ Having 사용하기 (0) | 2019.09.05 |
[MySQL] Table에 한글로 입력된 데이터가 삽입되지 않을 때 (0) | 2019.09.05 |
[MySQL] 특정 IP 대역 개방하여 외부에서 MySQL 접속 / 사용자 권한 (0) | 2019.09.05 |
[MySQL] MySQL 초기 설치시 Access denied가 뜰 경우 (0) | 2019.09.05 |