본문 바로가기
Back-End/Spring Boot

[ Spring boot ] 스프링부트 데이터베이스 연동 ②

by 2CHAE._.EUN 2022. 5. 10.
UTF8 VS UTF8MB4

 

UTF8와 UTF8MB4의 차이는 emoji 문자를 사용할 수 있는지 없는지 차이이다. 

UTF8로 charset을 셋팅하면 emoji 문자를 사용할 수 없다. 이러한 문제점을 해결하기 위해서 UTF8MB4 charset이

나오게 되었고, UTF8MB4로 셋팅하면 emoji 문자를 사용할 수 있다.

 

UTF8MB4는 MySQL, MariaDB에만 해당한다. ( 버전에 따라서 지원안할 수 도 있음 )

 

셋팅 하는 법 : 테이블을 생성할 때 마지막에 CHARSET=UTF8MB4를 입력하면 된다.

 

MySQL root 비밀번호 변경하는 법

 

MySQL root 비밀번호 변경은 ALTER를 사용한다. 

 

1. 비밀번호와 최근 변경일 조회

SELECT host, user, authentication_string, password_last_changed FROM user;

 

2. root 비밀번호 변경 쿼리문

ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '변경비밀번호';

 

 

MySQL 데이터베이스 및 테이블 생성

 

1. 기본 명령어

show databases; # 데이터베이스 보기
create database user; # 데이터베이스 생성
drop database user; # 데이터베이스 삭제
use 데이터베이스명; # 데이터베이스 선택 및 사용

show tables; # 테이블 보기
create table member; # 테이블 생성
drop table member; # 테이블 삭제
desc member; # 테이블 확인

 

2. 테이블 생성

CREATE TABLE MEMBER (
    num		int		NOT NULL	AUTO_INCREMENT,
    name	varchar(32) 	NOT NULL,
    id		varchar(12)	DEFAULT'guest',
    phone	varchar(12)	DEFAULT NULL,
    PRIMARY KEY ( num )
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

3. command에서 mysql 접속하기

mysql -u 접속할계정 -p

 

4. 외부 접속 권한 할당해주기

# 계정 생성
create user 'spark'@'%' indentified by 'spark'

# 생성된 계정 정보 확인
select host,user from mysql.user;

# 권한 할당해주기
grant all privileges on *.* to 'spark'@'%';

# 새로고침
flush privileges;

 

5. 데이터 베이스 및 테이블 생성

create database capstone; # 데이터 베이스 생성

user capstone # 데이터베이스 사용

show tables; # 테이블 확인

 create table coinuser( # 테이블 생성
    -> num      int     PRIMARY KEY     AUTO_INCREMENT,
    -> userEmail        varchar(32)     NOT NULL,
    -> userPassword     varchar(32)     NOT NULL,
    -> userName         varchar(32)     NOT NULL,
    -> userBirth        DATE            NOT NULL,
    -> userGender       varchar(10)     DEFAULT '선택안함'
    -> ) ENGINE=InnoDB CHARSET=utf8mb4;
    
desc coinuser; # 테이블 확인

 

* InnoDB : defualt로 설정되는 스토리지 엔진이다.

InnoDB는 트랜잭션을 지원하고, 커밋과 롤백, 데이터 복구 기능을 제공하므로 데이터를 효과적으로 보호할 수 있다.

PK 제약을 제공하여 데이터 무결성을 보장한다. 

 

6. insert를 사용해 데이터 삽입하기

insert into coinuser ( userEmail, userPassword, userName, userBirth, userGender )
    -> values ("2chae@gamil.com", "1234", "이채채", "2002-09-12", "여자"); # 데이터 삽입
    
select * from coinuser; # 테이블 확인

 

7. 컬럼추가하기

 ALTER TABLE coinuser
    -> ADD ( signupDate DATE NOT NULL );