
-- 사원번호,이름과 급여와 부서코드와 부서명을 알고 싶다.
-- join 할때 각 컬럼이 어느 테이블에 속해있는지 기입 ( 써주면 좋은 습관)
-- 서로 다른 테이블에 같은 컬럼명을 가지는 경우가 있다.
-- 서로다른 테이블의 값을 조회를 할때 , join을 사용.
select employees.employee_id , employees.last_name , employees.salary ,employees.department_id ,
departments.department_name
from employees , departments
where employees.department_id = departments.department_id
order by employees.employee_id;
-- ansi SQL join -> 표준 join
select employees.employee_id , employees.last_name , employees.salary ,employees.department_id ,
departments.department_name
from employees inner join departments
on employees.department_id = departments.department_id
order by employees.employee_id;
미국 국립 표준 협회(American National Standards Institute, ANSI)
where 대신 on .
,대신 inner join 사용.
경로를 나타내는 from문의 테이블명 뒤에 사용자 지정 별명을 지정하면,
조회구문에 별명을 넣어 코드를 짧고 편하게 작성할 수 있다.
select e.employee_id from employees e ;
join시 컬럼의 순서는 결과값에 영향을 주지 않는다.
조건을 어떻게 주느냐가 핵심이다.
join의 관계는 Master 와 Sub 이다.
where 조건문의 테이블 위치에 따라 기준이 바뀐다.
where 뒤의 1번째가 Master , 2번째가 Sub다.
join의 방법에는 크게 2가지로 나뉜다.
inner 와 outter 이며, 세분화하게 나눠진다.
데이터 추출 조건절 을 작성할때, 테이블간의 관계를 봐둬야한다.
하나의 데이터를 뽑을때, 여러개의 테이블이 관련이 있다. ( modelling 을 봐둬야 한다.)

추가적인 정보 제공을 목적으로 하나의 SQL문장 내부에 존재하는 select 구문.
리스트절 : 일반적인 서브 쿼리
select 리스트절 from
from절:
인라인뷰 (일시적으로 데이터를 담고있는 논리적 테이블)
where절 : 중첩 쿼리
메인 쿼리와의 관련성(연관성)에 따라서
연관성 있는 서버쿼리(Correlated) : 독자적 실행되지 않음
select count(*) from employees where salary >= (select avg(salary)from employees)
비연관성 서브쿼리 : 독자적 실행
인덱스는 검색 속도 향상을 위해서 만드는 오라클 오브젝트이다.
색인(찾을 색, 끌 인).
목록이다,컴퓨터가 쉽게 찾을 수 있게 데이터를 규칙에 맞게 정한.
반드시 검색 속도가 빠라지는 것은 아니다.
테이블을 만들 때 Primary Key , Unique의 제약조건을 지정하면 DBMS가
자동으로 index 객체를 생성해 준다.
카디날.
인덱스 지정하고자 하는 컬럼의 데이터 분포가 밀집되었을때,
한 컬럼당 데이터가 많이 밀집 되었을때.
예: 성별 컬럼.
사용빈도가 낮은 컬럼.
형식
create [unique] index [스키마명.]인덱스명 on [스키마명.]테이블명 (컬럼명1[,컬럼명2...]);
예
create index my_first_ix on employees (phone-number);
테이블을 만들 때 컬럼을 정의하는 순서가 검색 속도에 영향을 미친다.
가능하면 자주 검색에 이용되는 컬럼을 먼저 정의해준다.
