본문 바로가기

Oracle

(101)
SQL Sub Query 다중컬럼 서브쿼리 다중컬럼 서브쿼리의 종류 non pair wise 방식 pair wise 방식 1. non pair wise 방식 예제 : 부서번호가 30 번인 사원들과, 월급도 같고, 커미션도 같은 사원들의 이름과 월급과 커미션과 부서번호를 출력 하시오 select ename, sal, comm, deptno from emp where sal in (select sal from emp ———————> 월급이 같은 컬럼 1 where deptno = 30 ) and comm in ( select comm from emp ————> 커미션도 같은 컬럼 2 where deptno =30); 위와 같이 여러개의 컬럼 (ename, sal, comm, deptno ) 대한값이 서브쿼리에서 메인쿼리로 리턴이 되면 다중컬럼 서브쿼..
SQL Sub Query 다중행 (IN, NOT IN) 연산자 1. IN = 리스트 값과 동일하다. 2. NOT IN = 리스트 값과 동일 하지 않다. (is not null 필수) 3. >ALL = 리스트에서 가장 큰 값보다 크다 4. >any = 리스트에서 가장 작은값 보다 크다 5. 왜? NULL 이 알수없는 값인데, 알 순 없지만 만약 True or true = true. 는 true 이다. True or false = true 이기때문에 null 값이 true 이던, false 이던 or 한 값은 true 가 나온다. 문제 : 관리자가 아닌 사원들의 이름을 출력하시오 (즉 자기밑에 직속부하가 없는 사원들 ) - 관리자인 사원들이 6명이므로 관리자가 아닌 사원들은 8명이 출력되어야한다. select ename from emp where empno no..
SQL Sub Query 단일행 where 절 = , ! =, , ≥, ≤ 가능 서브쿼리에서 검색한 값 (1가지) —→ 메인쿼리에서 받아서 실행 (이과정이 단일행이다) 서브쿼리가 먼저 실행 된뒤, 메인 쿼리가 실행된다. 예제 : 존스의 월급보다(서브쿼리) 더 많은 월급을 받는 사원들의이름,월급 출력 꼭서브쿼리문을 이용하지 않아도 쿼리를 두번 실행하여 결과값을 출력 할 수 있다. 과정 : 존스의 월급을 먼저 구한다.→ 나오는 월급(2975)을 보고 select sal from emp where ename = 'JONES'; jones 의 월급이 2975 이다. 이 값을 가지고 한번 더 쿼리를 날린다. select ename, sal from emp where sal > 2975; BUT 한번에 결과를 보기 위해 서브 쿼리를 이용한다. select en..
SQL 집합연산자 Minus 차집합 예제 70 select ename, sal, job, deptno from emp where deptno in(10, 20) minus select ename, sal, job, deptno from emp where deptno in (20,30); 답 : deptno 가 10 인것의 결과만 나온다. 첫번째 쿼리문에서 두번째 쿼리문의 결과를 빼기 때문에 ...
SQL 집합연산자 Intersect 교집합 18c 는 정렬되어나오지만, 21c 는 정렬기능이 빠져서 출력된다. 마찬가지로 테이블이 서로 달라도 intersect 가능하다. 예제 69 select ename, sal, job, deptno from emp where deptno in(10,20) intersect select ename, sal, job, deptno from emp where deptno in (20,30); 첫번째 쿼리와, 두번째 쿼리의 교집합인 deptno 가 20 인 ename, sal, job, deptno 만 출력되어진다. 문제 325 부서테이블의 부서번호와 사원테이블의 부서번호의 부서번호 교집합 출력 select deptno from dept intersect select deptno from emp;
SQL 집합연산자 UNION 데이터 중복 X 합집합 같은테이블이 아닌 다른테이블도 가능 union all, union 의 위아래의 쿼리문의 테이블이 서로 달라도 위아래로 연결가능 Union 이 Union all 과 다른점 2가지 첫번째 컬럼을 기준으로 데이터를 정렬 중복된 행을 제거한다. *** 21c 에서는 union 에서 데이터 order by 정렬이 되지 않는다. (데이터가 많아짐에 따라 쿼리 실행이 너무 느려져서... 정렬하고 싶으면 order by 절을 직접 입력) 예제 68 : select deptno, sum(sal) from emp group by deptno union welect to_number(null) as deptno, sum(sal) from emp; 문제 324 select to_char(hiredate, 'RRRR')as 입..
SQL 집합연산자 UNION ALL ( 데이터중복 합집합) join 과 집합연산자의 차이점 join - 데이터를 양 옆으로 연결하여 출력 집합연산자 - 데이터를 위아래로 연결해서 출력 위아래로 연결할때 지켜주어야 할 조건 위쪽 쿼리문의 컬럼의 갯수와 아랫쪽 쿼리의 컬럼의 갯수가 동일해야한다. 위쪽 쿼리문의 컬럼의 데이터 타입과 아래쪽 쿼리문의 컬럼의 데이터 타입이 동일해야한다. 결과로 출력되는 컬럼명은 위쪽 쿼리의 컬럼명으로 출력 된다. order by 절은 맨 마지막 쿼리문 아래쪽에만 작성할 수 있습니다. UNION ALL 과 UNION 의 차이점 만약 A = {1,2,3,4,5}, B = {3,4,5,6,7} 이라면 UNION ALL 은 A + B = {1,2,3,4,5}+{3,4,5,6,7,} 이런식으로 중복데이터들도 다 함께 출력된다. 그래서 데이터들의 ..
SQL ANSI /ISO STANDARD JOIN - CROSS Join "조인 조건없이 조인하는 조인문법" 오라클 조인문법 select e.ename, d.loc from emp e, dept d; cross join elect e.ename, d.loc from emp e cross join dept d;