4.10

from MS-SQL 2013. 5. 5. 12:05

-----------------------------4월10일----------------------------------------------

select * from buytbl

select prodName, amount
from buytbl, usertbl
where usertbl.userid=buytbl.userid and name='강후동' -- 강후동이 구입한 물풍명과 수량


select u.name, b.prodname, b.amount, u.height
from buytbl as b, usertbl as u
where b.userid=u.userid and u.height>=170 and u.height<=180
order by u.height desc --키가 170이상이고 180이하인 회원들이 구입한 물품명과 수량을 키에 의해 내림차순해라.

select userid from usertbl

select *
from usertbl
where userid not in --in이면 buytbl에 userid값이 있는 사람이고 not in이면 buytbl에 userid값이 없는 사람
(
 select userid from buytbl 
)

select name, prodname
from usertbl u, buytbl b
where u.userid = b.userid

--지금까지 우리가 배운건 inner join, 이제부터 outer join

select name, prodname
from usertbl u left outer join buytbl b
on u.userid=b.userid --outer join 하는 방법은 보여주고자하는 테이블이 좌인지 우인지 구분해주고 outer join문법씀

select name, prodname
from  buytbl b right outer join usertbl u --이경우는 right frome절에 있는 테이블 이름을 잘 봐라. 좌우 반대잖아
on u.userid=b.userid

select * from stdtbl
select * from clubtbl
select * from stdclubtbl


select stdtbl.stdname, stdclubtbl.clubname
from stdtbl left outer join stdclubtbl
on stdtbl.stdname=stdclubtbl.stdname --outer join을 써서 클럽에 가입유무와 상관없이 전부 출력하라.


select * from emptbl


select department
from emptbl
where emp='지사원'

--지사원의 직속상관의 부서??
select emp, department --2.직속상관의 부서를 출력.
from emptbl
where emp in
(
select manager
from emptbl
where emp='지사원' --1.먼저 우대리의 직송상관의 이름을 구한 다음.
)

select b.department
from emptbl a, emptbl b
where a.manager = b.emp and a.emp='지사원' --위의 예제와 같은 결과가 된다. 알리아스를 다르게 해서 하나를 또 생성.

--사원의 이름과 직속 상관의 직속 상관의 이름을 매칭시켜 출력
select * from emptbl
select a.emp, b.emp, c.emp
from emptbl a, emptbl b, emptbl c
where a.manager = b.emp and b.manager=c.emp

--지사원의 이름과 직속상관의 상관의 이름을 매칭시키길
select a.emp, c.emp
from emptbl a, emptbl b, emptbl c
where a.manager=b.emp and b.manager=c.emp and a.emp='지사원' --??

select *
from stdtbl
union
select *
from clubtbl --유니온, *주의:두 테이블의 컬럼갯수와 자료형이 같아야 유니온이 가능하다.

select '우수회원', name
from usertbl --더미 컬럼: 원래 테이블에 존재하지 않는걸 붙일 수 있음

select 1, *
from stdtbl
union
select 2, *
from clubtbl --유니온에 의해 합쳐진 컬럼들을 테이블별로 구별하기 위해 더미컬럼으로 구분할 수 있다.

select 1, *
from stdtbl
union select *
from stdclubtbl --컬럼의 갯수와 자료형이 맞지 않을 경우 더미 컬럼을 알맞는 형태로 끼워맞춤으로서 union이 가능해짐

select * from stdtbl
union
select * from stdtbl --똑같은걸 두번 쓴다고 해서 두번 나오지는 않는다. 합집합 개념 ^-^)/
--두번 나오게 하고 싶으면 union all이라고 쓰면 되염.

select name
from usertbl u, buytbl b
where u.userid=b.userid and prodname='운동화'
intersect
select name
from usertbl u, buytbl b
where u.userid=b.userid and prodname='청바지' --운동화도 사고 청바지도 산 사람. intersect는 교집합 개념 ^-^)/
--*주의 prodname이 운동화이면서 동시에 청바지일수가 없다. 그러므로 이럴때는 intersect를 사용

select name
from usertbl u, buytbl b
where u.userid=b.userid and prodname='운동화'
except --이건 차집합. 오라클에서는 minus
select name
from usertbl u, buytbl b
where u.userid=b.userid and prodname='청바지'

 

'MS-SQL' 카테고리의 다른 글

데이터베이스 보안 7장부터  (0) 2013.08.29
4.3  (0) 2013.05.05
4.17  (0) 2013.05.05
5.1  (0) 2013.05.05
5.8  (0) 2013.05.05
,