[ MySQL ] 데이터베이스 와 테이블

Wooju Kang ·2025년 4월 3일

[ RDMBS ] MySQL

목록 보기
3/9
post-thumbnail

GIF 출처 : https://logpresso.store/ko/apps/mysql

🖥 Contents


1 ) 데이터베이스 생성 및 테이블 생성

2 ) 데이터 삽입 과 수정

3 ) 테이블 전체 삭제와 안전모드




1 ) 데이터베이스 생성 및 테이블 생성


  • 데이터베이스 생성 및 선택
    • 데이터베이스 생성하기 위한 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 테이블이 삭제된 것을 확인할 수 있다.




2) 데이터 삽입 과 수정


  • 데이터 삽입
    • 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로 데이터 자동 입력하기

: 테이블 생성할 때 어떤 열에 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;



  • 조회 결과를 테이블에 입력하기
    : SELECT 문을 통해 얻은 결과를 새로운 테이블 혹은 기존 테이블에 저장하고자 하는 경우에는 SELECT 문과 INSERT문을 조합하여 가공된 결과를 저장할 수 있다.
  • 조회 결과를 다른 테이블에 입력하기

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




3 ) 테이블 삭제와 안전모드 해제


: 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.

출처: https://jwgye.tistory.com/31 [계박사의 코딩교실:티스토리]

해당 오류의 경우 기본키가 없는 테이블에서 데이터를 수정할 때 , WHERE 문에서 참고할 키 열이 없기 때문이다. 따라서 안전모드가 작동되는 것이다.

이는 키 값을 사용하지 않고 데이터를 수정하거나 삭제할 때 의도하지 않게 전체 데이터를 삭제하지 않도록 방지하기 위함이다.

안전 모드 비활성화

set SQL_SAFE_UPDATES = 0;

안전모드 활성화

set SQL_SAFE_UPDATES = 1;

profile
배겐드 📡

0개의 댓글