본문 바로가기
AWS(산대특)

DAY 16 - MySQL

by dkdlxl 2024. 2. 13.

Transaction : sql로 작업하는 작업 단위 

Transaction의 4가지 특성 
- Atomicity (원자성) : 트랜잭션은 모두 성공하거나 모두 실패해야 한다.
- Consistency (일관성) : 트랜잭션의 작업 결과는 항상 일관성이 있어야 한다. 
- Isolation (독립성) : 트랜잭션은 모두 독립적이어야 한다.
- Durablitiy (영구성) : 트랜잭션이 성공적으로 완료되면 영구히 반영되어야 한다. 

 

-------------------------------------------------------------------------------------------------------
회원가입 : user 테이블 - email_authentication
사용자는 아이디를 입력하고 중복 확인을 함 
만약 입력한 아이디가 중복된 아이디가 아니라면 
비밀번호, 비밀번호 확인, 이메일을 입력하고 
이메일로 인증 번호를 젅송 
사용자는 이메일에 전송된 인증 번호를 확인하고 확인 후 입력하여 
이메일 인증을 진행함 
이메일 인증을 완료한 후에 회원가입 버튼을 눌러서 회원가입을 마무리함 

create table user (
id varchar(100) primary key,
    password varchar(255) not null,
    email varchar(255) not null
);

create table email_authentication (
email varchar(255) primary key,
    authentication_code varchar(4) not null
);

* 순서가 바뀌지 않도록 주의해야 함 

사용자가 아이디를 'iddd'로 입력했다.

1. 아이디 중복확인

select * from user where id = 'idddd';


- 사용자가 비밀번호를 'P!ssw0rd', 비밀번호 확인을 'P!ssw0rd',
- 이메일을 'email@email.com', 서버가 생성한 코드는 'OCMD'이다.

2. 이메일 인증 

insert email_authentication values ('email@email.com', 'OCMD');


- 서버가 지정한 이메일로 인증코드를 전송하고 사용자는 그 코드를 확인한 후 인증코드를 입력하여 인증함 

3. 이메일 인증 확인

select * from email_authentication 
where email = 'email@email.com' and authentication_code = 'OCMD';
# 정확하게 입력하지 않으면 데이터가 나오지 않음


4. 회원가입 처리 

insert user values ('iddd', 'P!ssw0rd', 'email@email.com');


---------------------------------------------------------------------------------------------------------------

show variables like '%commit%';

# autocommit이 on으로 되어있으면 자동으로 실행되면 영구히 사용하게 됨 
set autocommit = 0; -- off로 변경


트랜잭션 시작

start transaction;


1. 아이디 중복확인

select * from user where id = 'idddd3';


- 사용자가 비밀번호를 'P!ssw0rd', 비밀번호 확인을 'P!ssw0rd',
- 이메일을 'email@email.com', 서버가 생성한 코드는 'OCMD'이다.

 2. 이메일 인증 

insert email_authentication values ('email3@email.com', 'OCMD');


- 트랜잭션 초기상태로 변경 (트랜잭션 취소)

Rollback;


- 트랜잭션 롤백 위치 지정

savepoint A;


- 서버가 지정한 이메일로 인증코드를 전송하고 사용자는 그 코드를 확인한 후 인증코드를 입력하여 인증함 

3. 이메일 인증 확인

select * from email_authentication 
where email = 'email3@email.com' and authentication_code = 'OCMD';


4. 회원가입 처리 

insert user values ('iddd3', 'P!ssw0rd', 'email3@email.com');


- 특정 세이브포인트로 롤백 

rollback to savepoint A; # 세이브포인트로 돌아가기


- 트랜잭션 성공 처리 (영구히 적용)

commit;

 

- 확인하기 

select * from user;
select * from email_authentication;


----------------------------------------------------------------------------------------------------------------

- limit 갯수 : 결과테이블에서 지정한 갯수만큼의 상위 데이터만 보여줌 

select * from jeju limit 10; # 10개만 나옴


- limit 제외 레코드 개수, 개수 : 상위에서 제외 레코드 개수만큼 제외 후 개수만큼의 데이터만 보여줌

select * from jeju limit 10, 3;





'AWS(산대특)' 카테고리의 다른 글

DAY 18 - PYTHON  (0) 2024.02.15
DAY 17 - MySQL  (0) 2024.02.14
DAY 15 - MySQL  (0) 2024.02.08
DAY 14 - MysQL  (0) 2024.02.07
DAY 13 - MySQL  (0) 2024.02.06