
GIF 출처 : https://logpresso.store/ko/apps/mysql
1 ) 데이터베이스 생성 및 테이블 생성
2 ) 데이터 삽입 과 수정
3 ) 테이블 전체 삭제와 안전모드
- 데이터베이스 생성하기 위한 CREATE 문의 기본 형식
CREATE DATABASE [ 데이터베이스 이름 ]
USE [ 데이터베이스 이름 ];
ex )
CREATE DATABASE woojuice;
USE woojuice;

: 다음과 같이 데이터베이스가 생성된 것을 확인할 수 있다. 데이터베이스 생성 후에는 테이블을 생성한 후 원하는 데이터 셋을 데이터베이스에서 가공 및 저장할 수 있다.
- 데이터베이스 삭제를 위한 DROP 문의 기본 형식
DROP DATABASE [ 데이터베이스 이름 ]
ex )
DROP DATABASE woojuice;

: 다음과 같이 데이터베이스가 삭제된 것을 확인할 수 있다. 데이터베이스를 삭제할 경우 관련 테이블도 삭제되므로 주의하자.
- CREATE 문으로 테이블 생성
CREATE TABLE [ 테이블 이름 ] (
[ 열 이름1 데이터 유형],
[ 열 이름2 데이터 유형],
[ 열 이름3 데이터 유형],
( ... 생략 ... )
)
ex )
CREATE TABLE woojuice_ex (
col_1 INT,
col_2 VARCHAR(50),
col_3 DATETIME
);


- DROP 문으로 테이블 삭제
DROP TABLE [ 테이블 명 ]
ex )
DROP TABLE woojuice_ex

: woojuice_ex 테이블이 삭제된 것을 확인할 수 있다.
- INSERT 문으로 데이터 삽입
INSERT INTO [ 테이블 명 ( COLUMN명 ) ] VALUES ( 데이터 ) // 데이터의 갯수와 열의 갯수 , 타입은 일치해야한다.
ex )
INSERT INTO kangwooju_ex ( col_1 , col_2 ) VALUES ( 1 , ' 강우주의 벨로그정리 ' )
: 데이터가 삽입된 것을 확인할 수 있다.
- UPDATE 문으로 데이터 수정
UPDATE [ 테이블 명 ] SET [ 열1 = ? , 열2 = ? .... ]
ex)
UPDATE Kangwooju_ex SET col_2 = ' 강우주의 백엔드 공부기록 '
: 다음과 같이 col_2에 있는 데이터를 수정하였다. 이때 , WHERE 문을 사용하지 않는 경우 열이 특정되지 않아 모든 열이 변경될 수 있다. 따라서 특정 열만을 변경하는 경우 다음과 같이 쿼리를 작성해야한다.
ex)
UPDATE Kangwooju_ex SET col_2 = ' 강우주의 백엔드 공부기록 ' WHERE col_1 = 1;
: 테이블 생성할 때 어떤 열에 AUTO_INCREMENT를 적용할 경우 해당 열은 1씩 또는 사용자가 정의한 값만큼 증가하며 데이터가 자동으로 입력된다. 이때 , AUTO_INCREMENT가 적용된 열을 생성할 때에는 반드시 해당열을 기본키로 설정해 주어야한다.
create table woojuice_increment(
col_1 int auto_increment primary key ,
col_2 varchar(30),
col_3 int
);
insert into woojuice_increment ( col_2, col_3 ) values ('woojuice의 벨로그',1);
insert into woojuice_increment ( col_2, col_3 ) values ('woojuice의 벨로그2',2);
select * from woojuice_increment;

- 자동으로 입력되는 값을 설정하기
ex )
ALTER TABLE woojuice_increment AUTO_INCREMENT = 100; // 시작 값을 100으로 변경
INSERT INTO woojuice_increment (col_2, col_3) VALUES ('시작값 변경',3);
SELECT * FROM woojuice_increment;

- AUTO_INCREMENT 증가값 변경
ex )
SET @@AUTO_INCREMENT_INCREMENT = 5;
INSERT INTO woojuice_increment (col_2, col_3) values ('증가값 변경',4);
SELECT * FROM woojuice_increment;

- 조회 결과를 다른 테이블에 입력하기
ex )
create table woojuice_inserting_from (
col_1 int,
col_2 varchar(30)
);
create table woojuice_inserting_to (
col_1 int,
col_2 varchar(30)
);
insert into woojuice_inserting_from values (1,'강');
insert into woojuice_inserting_from values (2,'우');
insert into woojuice_inserting_from values (3,'주');
insert into woojuice_inserting_to
select * from woojuice_inserting_from;
select * from woojuice_inserting_to;

- 새 테이블에 조회 결과 입력하기
< 형식 >
CREATE TABLE [ 테이블 명 ] AS ( SELECT * FROM [ 이식 테이블 명 ] )
ex )
CREATE TABLE woojuice_newone AS (SELECT * FROM woojuice_inserting_from);
SELECT * FROM woojuice_newone


: DELETE 문을 사용하여 대량의 데이터를 삭제하는 경우 트랜잭션 로그 기록이로 인해 데이터베이스의 성능에 많은 문제가 발생한다. 따라서 전체 데이터를 롤백 ( Rollback ) 하지 않는 다면 TRUNCATE 문을 통해 전체 데이터를 빠르게 삭제할 수 있다.
TRUNCATE TABLE [ 테이블 명 ];
ex)
TRUNCATE TABLE Kangwooju_ex;

안전모드 비활성화 하기
: UPDATE 문을 사용할 때 , 오류가 발생하는 경우가 존재한다. 해당 오류는 다음과 같은 메시지를 출력한다.
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
해당 오류의 경우 기본키가 없는 테이블에서 데이터를 수정할 때 , WHERE 문에서 참고할 키 열이 없기 때문이다. 따라서 안전모드가 작동되는 것이다.
이는 키 값을 사용하지 않고 데이터를 수정하거나 삭제할 때 의도하지 않게 전체 데이터를 삭제하지 않도록 방지하기 위함이다.
① 안전 모드 비활성화
set SQL_SAFE_UPDATES = 0;
② 안전모드 활성화
set SQL_SAFE_UPDATES = 1;