본문 바로가기

Database/MySQL

[MySQL] MySQL 테이블 [생성/수정/삭제] 실습

[해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다.
따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.]

 

 

이번 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 테이블명;

 

처음에 생성했던 테이블을 삭제해보자.