명령어 요약
CREATE DATABASE {database_name};
👉 원하는 데이터베이스를 생성SHOW DATABASES;
👉 생성된 전체 데이터베이스를 확인USE {database_name}
👉 생성된 데이터베이스에 접근CREATE TABLE {table_name} (field, field, field, constraint);
👉 데이터베이스 내부에 테이블을 생성SHOW TABLES;
👉 생성된 전체 테이블을 확인ALTER TABLE {table_name} MODIFY {column} {data structure} {constraint};
👉 테이블의 구조를 변경DROP TABLE {table_name};
👉 테이블을 삭제TRUNCATE TABLE {table_name};
👉 테이블 객체 내의 모든 데이터(row)를 삭제
관계형 데이터베이스(RDBMS, Relational Database Management System)에서는 데이터가 여러개의 2차원 테이블에 저장되고 관리된다
데이터베이스 객체(Database Object)
: 데이터베이스 내에 실체를 가지는 어떤 것
ex) 2차원 테이블(Table), 뷰(View), 인덱스(Index)
데이터베이스 객체 이름 규칙
스키마(Schema)
: 데이터베이스 내의 객체(table, view, index)를 담는 컨테이너
: 스키마 안에는 테이블을 정의하고, 테이블 안에는 열을 정의한다
: Schema 내의 객체를 정의하고 관리할 때 사용되는 쿼리문
테이블 객체를 담을 수 있는 스키마를 생성합니다
mysql서버에 접속: mysql -u root -p
westagram 데이터베이스 생성하기: CREATE DATABASE westagram;
현재 저장된 데이터베이스 확인하기: SHOW DATABASES;
생성된 westagram 스키마에 접근: USE westagram;
westagram 스키마의 테이블을 확인하기:SHOW TABLES;
👉 (아직 비어있음)
목표: 테이블(users, posts) 구축하기
쿼리문은 세미콜론(;)으로 구분되므로 엔터를 쳐서 멀티라인을 작성할 수 있다!
CREATE TABLE users
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(200) NOT NULL,
profile_image VARCHAR(1000) NULL,
password VARCHAR(200) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
👉 설명:
no | 컬럼명 | 자료형 | 조건 | 의미 |
---|---|---|---|---|
1 | id | INT | NOT NULL AUTO_INCREMENT | 값을 자동증가 |
2 | name | VARCHAR(50) | NOT NULL | 문자열(50bytes) |
2 | VARCHAR(200) | NOT NULL | ||
3 | profile_image | VARCHAR(1000) | NULL | |
4 | password | VARCHAR(200) | NOT NULL | |
5 | created_at | TIMESTAMP | NOT NULL DEFAULT NOW() | 생성시간 기록 |
6 | updated_at | TIMESTAMP | NULL ON UPDATE CURRENT_TIMESTAMP | 변경시간 기록 |
👉 설명:
no | 쿼리문 | 설명 |
---|---|---|
7 | PRIMARY KEY (id) | Primary Key를 id 로 설정 |
외부키(FOREIGN KEY)
제약 조건을 설정해줘야 합니다CREATE TABLE posts
(
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
content VARCHAR(2000) NULL,
user_id INT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES users (id)
);
ex) MUL - 다수의 게시물(post)가 동일한 user_id를 가질 수 있기 때문
예)
ALTER TABLE users ADD age INT NOT NULL;
ALTER TABLE users DROP profile_image;
ALTER TABLE posts MODIFY content TEXT NULL;
CHANGE 명령을 통해서 열 이름도 변경
ALTER TABLE 테이블명 CHANGE 기존컬럼명 변경할컬럼명 데이터타입;
테이블 삭제
DROP TABLE posts;
테이블 내 데이터만 삭제 👉 행row단위 삭제(양이 많으면 처리속도 느림)
DELETE FROM posts WHERE condition;
테이블 내 데이터만 삭제 👉 모든 행 삭제(양이 많을 때 처리 속도 빠름)
TRUNCATE TABLE posts;