-
07/14 데이터베이스 기초 2데이터베이스 2021. 7. 14. 15:36
뷰
select한 것을 보는 가상 테이블
create view view_products as select name, price, amount from products;
SELECT * FROM exam11.view_products;
이너조인
create view view_purchases as select purchases.member_email, products.name, purchases.date from products inner join purchases on products.id = purchases.product_id;
select * from view_purchases;
트랜잭션
저장 엔진별 트랜젝션 지원 여부 오토커밋 여부 확인
SELECT @@AUTOCOMMIT;
SET AUTOCOMMIT = TRUE; //오토커밋 설정
SET AUTOCOMMIT = FALSE; //오토커밋 설정해제트랜잭션을 사용할때 오토커밋을 꺼야한다
커밋을 지원하지 않을 경우 자동으로 오토커밋이 된다
오토 커밋을 해제했는데 계속 오토커밋이 될 경우 워크밴치에서 오토커밋이 설정되어 있을 수 있다
오토 커밋 체크 해제 트랜잭션 시작
세션 1
start transaction; insert into members values('jang@gmail.com', '1234');
select * from members;
세션 1 members테이블 세션 2
세션 2 members테이블 트랜잭션 시작 후 커밋하지 않으면 실제로 데이터가 들어가지 않은 상태이다
세션 1
commit;
세션 2
Lock확인 1
세이프모드 체크 해제 재접속
test테이블 만들기
start transaction;
delete from test;Lock확인 2
세션 1
insert into test (name) values ('kk');
start transaction;
update test set name='hong' where id = 1;세션 2
세션 1
트랙잭션 후에는 반드시 커밋 또는 롤백을 해주어야 한다
rollback;
트랜잭션으로 롤백 할 수 없는 경우
DROP명령은 롤백할 수 없음
교착상태
트랜잭션 A와 트랜잭션B가 서로 자원을 점유하고 놓아주지 않는 상황
저장함수
반환값이 있으면 저장함수, 없으면 프로시저
트리거
로그테이블 생성
트리거 선언
delimiter // create trigger logDateInsertAfter after insert on products for each row begin insert into log_products (product_id) values (new.id); end // delimiter ;
데이터 추가
insert into products values (uuid(), 100, '바카스', 800, 3);
call insert_product (100, '커피우유', 1200, 1);로그 테이블 확인
'데이터베이스' 카테고리의 다른 글
07/13 데이터베이스 기초1 (0) 2021.07.13 06/16 Sequelize + node.js express 사용연습 2 (0) 2021.06.16 06/16 Sequelize + node.js express 사용연습 (0) 2021.06.16 06/15 node.js서버 express CRUD 구현 (0) 2021.06.15 06/15 DB update, delete 및 node.js서버 DB검색 구현 (0) 2021.06.15