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 |