본문 바로가기

Mysql

Mysql 08

Transaction

 

create table tbl_test
(
    no int primary key,
    name varchar(20),
    age int,
    gender char(1)
);

insert into tbl_test values(1,'aa',66,'W'); -- commit;
insert into tbl_test values(2,'aa',66,'W'); -- commit;
insert into tbl_test values(3,'aa',66,'W'); -- commit;

commit;


start transaction;
    insert into tbl_test values(4,'aa',66,'W');
    insert into tbl_test values(5,'aa',66,'W');
    insert into tbl_test values(6,'aa',66,'W');
rollback; -- start transaction 앞으로 돌아간다.

 

Join

inner join

: on이하의 조건 절이 만족되는 열만 출력

select *
from usertbl
inner join buytbl
on usertbl.userid=buytbl.userid;

 

inner join 이름 충돌 에러

 

select usertbl.userid,name,prodname,groupname,price,amount
from usertbl
inner join buytbl
on usertbl.userid=buytbl.userid;

inner join 테이블 별칭 지정

 

select U.userid,name,prodname,groupname,price,amount
from usertbl U 
inner join buytbl B
on U.userid=B.userid;

 

inner join + where


select U.userid,name,prodname,groupname,price,amount
from usertbl U 
inner join buytbl B
on U.userid=B.userid
where amount >=5;                        - amount가 5 이상

 

 

outer Join

 

left outer join(on 조건을 만족하지 않는 left테이블의 행도 출력)


select * 
from usertbl
left outer join buytbl
on usertbl.userid = buytbl.userid;

 

right outer join


select * 
from buytbl
right outer join usertbl
on usertbl.userid = buytbl.userid;

 

 

full outer join(on 조건을 만족하지 않는 left,right 테이블의 행도 출력)

: mysql에서는 full outer join 을 지원하지 않아서 대신 union을 사용하여 left, right outer join을 연결한다.


select * from usertbl left join buytbl on usertbl.userid=buytbl.userid
union
select * from usertbl right join buytbl on usertbl.userid=buytbl.userid;

 

view

select 의 조회 결과를 반복적으로 사용해야 할 때 마치 테이블처럼 사용하도록 하는 문법  - 가상테이블

 

create or replace view view_user_buytbl
as
select usertbl.userid,name,addr,sum(price*amount) as TotalPay
from usertbl 
inner join buytbl
on usertbl.userid=buytbl.userid
group by usertbl.userid;

 

 

 

 

 

 

 

 

 

 

 

 

'Mysql' 카테고리의 다른 글

Mysql 07 (Index)  (0) 2023.05.21
Mysql 06(PK,FK 제약조건, UNIQUE, check)  (0) 2023.05.17
Mysql 05  (0) 2023.05.16
Mysql 04 (group by)  (0) 2023.05.16
Mysql 03 (Select)  (0) 2023.05.15