안녕하세요! 피피아노입니다 🎵
이번 포스팅에서는 데이터베이스 생성하고 관리하는 방법 중에서 데이터베이스 생성과 테이블 생성에 대해서 포스팅을 해보겠습니다!
우선 들어가기에 앞서서 MySQL이 관리하는 것들에 대해서 정리하고 가겠습니다.
MySQL을 설치하면 DBMS가 설치될 거고, 여러개의 데이터베이스를 갖게 될 겁니다. 그리고 그 데이터베이스 안에는 여러개의 테이블을 가질 수 있습니다. 아래 그림처럼 말이죠!
우리는 이런 구조로 MySQL을 관리할 수 있습니다.
MySQL이 관리하는 것
MySQL이 관리하는 것들을 살펴보면 데이터베이스들을 관리하게 되고 그 데이터베이스들은 테이블들을 관리하게 될 것입니다. 그리고 또 테이블은 데이터를 의미하는 행과 열들을 가지고 있고 각각의 데이터 정확하게는 열에는 형이라는 것이 있습니다.
MySQL에서는 데이터베이스를 스키마로 표현합니다. 즉, 다시 말하자면 데이터베이스는 스키마라고 하는 것들로 이루어져 있다고 생각하시면 됩니다. 그리고 데이터베이스(스키마) 안에 여러 테이블이 포함되게 되는 것이죠.
데이터베이스 생성
데이터베이스(스키마)를 생성하는 쿼리문은 다음과 같습니다.
CREATE DATABASE DBNAME;
DBNAME에는 여러분들이 사용하실 데이터베이스의 이름을 넣어주시면 됩니다. 만약 내가 ABC라는 데이터베이스를 만들고 싶다면
CREATE DATABASE ABC;
이렇게 작성해주면 되는 것이죠!
그리고 그 만들어진 데이터베이스를 조회하기 위해서는
SHOW DATABASES;
이렇게 명령어를 작성하면 됩니다.
여기서 주의할 점은 SHOW DATABASES 명령어는 만들어진 모든 데이터베이스를 조회하는 명령어이기 때문에 DATABASE 뒤에 S가 붙게 된다는 점입니다.
데이터베이스 사용
데이터베이스를 만들었다면 그 데이터베이스를 사용해야겠죠?
그럴 때 사용하는 명령어는
USE DBNAME;
입니다!
USE 명령어 뒤에 내가 사용할 DB 이름을 작성해주면 됩니다.
데이터베이스 삭제
데이터베이스를 만들다보면 삭제해야 하는 경우도 발생하겠죠? 그럴 때 사용하는 명령어는
DROP DATABASE DBNAME;
입니다.
이 명령어 역시 DROP DATABASE 명령어 뒤에 자신이 지우고 싶은 DATABASE 명령어를 붙여주면 됩니다.
테이블 생성
이제 데이터베이스 안에 테이블을 생성해봐야겠죠?
테이블 생성 명령어는 아래처럼 작성해주면 됩니다.
CREATE TABLE 테이블이름 (
열이름1 자료형, [DEFAULT 기본값] [NULL|NOT NULL],
열이름2 자료형, [DEFAULT 기본값] [NULL|NOT NULL],
...
);
자료형
테이블을 생성할 때 들어가는 자료형으로는
- 숫자형
- 문자형
- 날짜/시간형
- 기타 데이터 타입
이렇게 존재하게 됩니다.
숫자형
숫자형의 경우에는 대표적으로
- TINYINT : 1바이트 정수 (-128 ~ 127)
- SMALLINT : 2바이트 정수 (-32768 ~ 32767)
- MEDIUMINT : 3바이트 정수 (-8388608 ~ 8388607)
- INT : 4바이트 정수 (-2147483648 ~ 2147483647)
- BIGINT : 8바이트 정수 (-9223372036854775808 ~ 9223372036854775807)
- FLOAT : 4바이트 부동 소수점 실수
- DOUBLE : 8바이트 부동 소수점 실수
- DECIMAL : 고정 소수점 실수
이렇게 존재합니다.
문자형
문자형은
- CHAR : 고정 길이 문자열
- VARCHAR : 가변 길이의 문자열
- BLOB : 바이너리 데이터
- TEXT : 텍스트 데이터
날짜/시간형
날짜/시간형은
- DATE : 날짜
- TIME : 시간
- DATETIME : 날짜와 시간 (4바이트)
- TIMESTAMP : 날짜와 시간 (8바이트, Timezone 적용 : 시스템 Timezone이 변경되면 함께 변경)
기타 데이터 타입
기타 데이터 타입은
- ENUM : 정해진 값들 중 하나만 저장
- SET : 정해진 값들 중 여러 개를 저장
- GEOMETRY : 지리 정보 저장
- XML : XML 데이터 저장
- JSON : JSON 데이터 저장
- ...
이렇게 구성되게 됩니다.
테이블 생성 명령어를 예시로 만들어 보겠습니다.
내가 만약 웹페이지를 만들건데 회원들을 관리해야 한다면
users라는 테이블을 만들고 user_id와 username, email, birthdate, registration_date 이렇게 구성할 수 있겠죠?
이 내용을 명령어로 작성해보면
CREATE TABLE users (
user_id INT,
username VARCHAR(50),
email VARCHAR(100),
birthdate DATE,
registration_date TIMESTAMP
);
테이블들 조회
이렇게 만들어진 테이블들을 조회하고 싶다면
SHOW TABLES;
SHOW TABLES FROM DBNAME;
2가지 중 하나를 작성해주면 됩니다.
테이블 조회
그리고 테이블을 조회하고 싶다면
DESC TABLENAME;
이렇게 작성해주면 됩니다.
테이블 수정
만약에 내가 테이블 이름을 잘못 만들었거나 변경해야 하는 경우에는
RENAME TABLE old_name TO new_name;
old_name에는 기존 테이블의 이름을 넣어주고, new_name에는 새로 변경할 이름을 넣어주면 됩니다.
테이블 변경
테이블을 변경할 때는 ALTER TABLE 명령어를 써주면 됩니다.
ALTER TABLE tbl_name alter_option
alter_option 자리에는 열 추가, 열 삭제, 열 변경 등 본인이 변경하고 싶은 옵션을 넣어주면 됩니다.
만약 열 추가를 하고 싶다면
ALTER TABLE members ADD COLUMN age INT;
이렇게 작성하면 되는 거죠!
테이블 삭제
테이블을 삭제할 때는 데이터베이스를 삭제할 때와 마찬가지로 DROP 명령어를 사용해줍니다.
하지만 이때는 테이블 구조까지 삭제되게 됩니다.
DROP TABLE TABLENAME;
만약 테이블 구조는 유지하고 행만 삭제하고 싶다면
TRUNCATE TABLE TABLENAME;
명령어를 사용해주면 됩니다.
감사합니다.
잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!
궁금하신 부분은 댓글로 질문 부탁드립니다!
'CS > Database' 카테고리의 다른 글
[Database] 트랜잭션과 무결성 (0) | 2023.05.19 |
---|---|
[Database] ERD와 정규화 과정 (0) | 2023.05.18 |
[Database] 데이터베이스의 기본 (2) (0) | 2023.04.12 |
[Database] 데이터베이스의 기본 (1) (0) | 2023.04.09 |