like/ in / between
distinct/ count(distinct col1)
order by/ rand()
limit a/ limit a, b(a부터 시작해서 b개만큼)
group by, having
case when ~ else ~ end
select (case when pid = 0
then '최상위 부서'
else '부서'
end)
as ppid
from Dept;
pid 가 0인경우 '최상위 부서'라고 출력, 그게 아니라면 '부서' 출력
on duplicate key update ...
insert into Dept(pid, dname) values(2, '서버팀')
on duplicate key update dname='서버팀2';
select s.* , p.name as 'prof. name'
from Subjects s
inner join Prof p
on s.prof = p.id
select d1.dname as '상위부서', d2.*
from Dept d1 left join Dept d2 on d1.id = d2.pid;
이 쿼리는 Dept를 모두 출력함.start transaction;
# 트랜잭션 시작, 작업중 에러가 생기면 이 곳 으로 돌아옴.
select * from Dept where id in (1,2);
savepoint sp1;
# 세이브포인트.
update Dept set dname='영업부서' where id = 1;
commit;
# 현재까지의 트랜잭션을 DB에 저장!
rollback;
rollback to sp1;
# sp1 세이브포인트로 롤백시킴