일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- join
- 예약어
- 이클립스 설치
- 산술 연산자
- SpringSecurity 로그아웃
- 상속
- 오버로딩
- 배열
- 객체
- SQL튜닝
- SQL 튜닝
- 반복문
- 논리 연산자
- 자바의정석
- 스프링시큐리티 로그아웃
- spring 게시판 삭제
- 비교 연산자
- 친절한 SQL
- 오버라이딩
- 함수
- @PreAuthorize("isAuthenticated()")
- StringBuffer
- 식별자
- 인텔리제이 Web 애플리케이션
- 객체지향
- SQL
- 연산자
- SpringSecurity 로그인
- java
- 친절한 SQL 튜닝
Archives
- Today
- Total
gi_dor
JOIN 복습 본문
728x90
select * from netflix;
SELECT * from netflix_cast;
select n.video_name ,nc.video_name, nc.cast_member ,n. category , n.view_cnt
from netflix n , netflix_cast nc
where n.video_name = nc.video_name -- 두 테이블의 컬럼 연결고리
;
--------------------------------------------------------------------
select * from s_Emp;
select * from s_dept;
select name , salary ,id
from s_emp
where id = 26
;
select name ,salary , start_date
from s_emp
where start_date < to_date('15.12.31','yy.mm.dd')
;
select * from s_emp
where name like '김__';
select * from s_emp
where name like '김%';
select * from s_emp;
select * from s_dept;
select * from s_region;
SELECT e.name, d.name , r.name
FROM s_emp e, s_dept d , s_region r
where e.dept_id = d.id
and d.region_id = r.id
;
-------------------------------------------------------------------------------
select * from idol_member;
select * from idol_group;
select *
from idol_group A , idol_member B
where a.group_name = B.group_name
;
-- A테이블과 B테이블의 함께있는 data만 나옴
select A.group_name , A.company , B.member_name
from idol_group A , idol_member B
where a.group_name = b.group_name
;
select * from idol_member;
select * from idol_group;
-- 회사 , 그룹이름 , 멤버수
select B.company , B.group_name , count(member_name)
from idol_member A , idol_group B
where A.group_name = B.group_name
group by b.company , b.group_name
;
select * from idol_member;
select * from idol_group;
select *
from idol_group A , idol_member B
where A.group_name = B.group_name(+)
;
------------------------------------------------------------
select * from netflix_cast;
select * from netflix;
select A.video_name , A.category , B.cast_member , B.birthday
from netflix A, netflix_cast B
where A.video_name = B.video_name -- 두 테이블 연결고리
;
select A.video_name , A.category , B.cast_member , B.birthday
from netflix A, netflix_cast B
where A.video_name = B.video_name -- 두 테이블 연결고리
and category = '드라마'
;
select * from netflix_cast;
select A.video_name , A.category , B.cast_member , B.birthday
from netflix A, netflix_cast B
where A.video_name = B.video_name -- 두 테이블 연결고리
and category = '예능'
;
-- 두 테이블의 공통적으로 존재하는 data이어야 출력이됨
-- 1:1 , 1:N , M:N
-------------------------------------------------------------------------------------------
select * from s_emp;
select * from s_dept;
-- 이름 부서 부서명
select e.name , e.dept_id , d.name
from s_emp e , s_dept d
where e.dept_id = d.id(+)
;
select * from s_emp;
select * from s_customer;
----------------------------
-- A와 B 두 테이블의 컬럼 간의 값이 서로 정확히 일치함
--EQUIJOIN
-- where절에 JOIN 조건
-- 직원 테이블과 부서 테이블을 JOIN하여 사원의 이름과 부서 ,부서명을 나타내라
select e.name ,e.dept_id, d.name
from s_emp e , s_dept d
where e.dept_id = d.id
;
select * from s_emp;
select * from s_dept;
select * from s_region;
-- 서울 지역에 근무하는 사원에 대해 각 사원의 이름, 근무하는 부서명
select e.name 이름 , d.name 부서명 , d.region_id "서울 거주자는 1" , r.name
from s_emp e , s_dept d , s_region r
where e.dept_id = d.id
and d.region_id = 1
and d.region_id = r.id
;
---------------------------------------------------
-- NON EQUIJOIN
-- ' = '이외의 연산자 사용 함 , 두 컬럼의 값이 정확하게 일치 하지 않을 때 사용 한다고 함
-- 직원 테이블과 급여 테이블을 JOIN하여 사원의 이름과 급여 해당급여의 등급을 나타내라
select * from s_emp;
select * from salgrade;
-- 일치하는 데이터가 없네 ' = ' 연산자 사용불가
select e.name , e.salary , g.grade
from s_emp e, salgrade g
where salary between losal and hisal
;
---------------------------------------------------------
-- outerJOIN
-- 두 테이블 조인할때 어느 한쪽의 테이블의 데이터가 없어도 결과를 모두 확인할때
-- 직원 테이블과 , 고객테이블에서
-- 사원의 이름과 사번 , 사원의 담당고객이름을 나타내라
-- 조건 ) 사번순으로 오름차순으로 하고 , 담당영업사원이 없어고 고객이름을 나타내라
select * from s_Emp;
select * from s_customer;
select e.name 담당사원 , e.id 사원id , c.name 고객이름 , c.sales_rep_id 담당사원id
from s_emp e , s_customer c
where e.id(+) = c.sales_rep_id
order by e.id
;
-----------------------------------------------------------------------------
select * from s_emp;
--SELF JOIN
-- 테이블 하나에다가 AS 붙여서 테이블이 여러개인것 마냥 사용해서 JOIN함
select e.id 사번 , e.name 사원이름 , m.id "담당자 사번" , m.name "담당자 이름"
from s_emp e, s_emp m
where e.manager_id = m.id
;
-- 직원중에 '김정미'와 '같은 직책을 가진 사원의 이름과
-- 직책 급여 부서번호를 나타내시오 - selfjoin 사용
select * from s_emp;
select m.name , m.title , m.salary ,m.dept_id
from s_emp e, s_emp m
where e.name like '김정미' -- e에 김정미가 저장됨
and e.title = m.title -- 정미.title = m.title
; -- 김정미와 같은 직급을 가진 사원
-- 테이블에서 사원의 이름과 사번을 보여주고 , 담당자의 이름과 사번을 조회하라
-- 담당자 없는 사람들도 조회
select e.name AS name, e.id AS ID, m.name as incharge_name , m.id
as incharge_id
from s_emp e, s_emp m
where e.manager_id = m.id(+)
;
728x90
'First > SQL' 카테고리의 다른 글
From절에서 SubQuery , Having절에서 SubQuery (0) | 2023.06.08 |
---|---|
QUERY - Single Row , Multi Row ,Multi column (0) | 2023.06.08 |
Sub Query (0) | 2023.04.29 |
주말) JOIN 복습 (1) | 2023.04.23 |
SQL 손코딩 TEST (0) | 2023.04.18 |