본문 바로가기

전체 글

(228)
SQL - 계층형 질의문 1 계층형 질의문으로 서열을 주고 데이터 출력하기 ** 순위와 서열을 출력하는 SQL 문 계층형 질의절은 Where 절 다음에 기술하며, from 절이 수행된 후 수행된다. start with 절과 connect by 절로 구성되며, start with 절이 수행된 후 connect by 절이 수행된다. 또한 start with 절은 생략이 가능하다. start with 절 --> 루트 노드를 생성하며 한 번만 수행된다.connect by 절 --> 루트 노드와 하위 노드를 생성하며 조회 결과가 없을 때까지 반복 수행된다. 예제 : 1부터 10까지의 숫자를 출력하기select level from dual connect by level
SQL - 데이터 입력, 수정, 저장 1. 데이터 입력하기 ( INSERT ) ** 테이블에 데이터를 입력하는 SQL 문장 insert into 테이블명(컬럼명) values (각 컬럼에 넣을 값) 예제 : emp 테이블에 사원 번호 : 1234, 사원 이름 : jack 월급 : 4500을 가진 데이터를 입력하기 insert into emp(empno, ename, sal ) values ( 1234, 'jack', 4500 ); 데이터 입력할 컬럼들을 기술한 뒤 위의 컬럼 순서대로 값을 기술하면 된다. 2. 데이터 수정하기 ( UPDATE ) ** 데이터를 수정하는 SQL 문장 update 테이블명 set 컬럼명 = 컬럼에 넣을 값 (where)예제 : KING 의 월급을 9000 으로 변경하기 update emp set sal = 900..
SQL - 서브 쿼리 1. 서브 쿼리 사용하기 1 ( 단일행 서브쿼리 ) 예제 : JONES의 월급보다 더 많은 월급을 받는 사원들의 이름과 월급을 출력하기 select ename, sal from emp where sal > ( select sal from emp where ename='JONES' ); 복잡해보이지만, where 절 속의 서브 쿼리 문을 해석하면 단순히 2975라는 값을 반환할 뿐이라는 것을 알 수 있다. 쿼리를 두 번 실행해야 할 수 있는 것을 한 번에 가능하게 하는 것이 서브 쿼리이다. 2. 서브 쿼리 사용하기 2 ( 다중 행 서브쿼리 ) * 서브쿼리의 종류 3가지 : 1. 단일행 서브 쿼리 : 서브쿼리에서 메인쿼리로 하나의 값이 리턴되는 경우 연산자: =, >, =, all, any,
SQL - 테이블 간 집합 연산자 * 데이터를 연결해서 출력하는 방법 2가지 1. 조인(join) : 데이터를 양옆으로 연결해서 출력하는 방법 2. 집합 연산자 : 데이터를 위아래로 연결해서 출력하는 방법 * 집합 연산자의 종류 4가지 1. union all 2. union 3. intersect 4. minus 1. 집합 연산자로 데이터를 위아래로 연결하기 1(UNION ALL) 예제 : 위 두개의 결과를 합쳐서 출력하기 : select job, sum(sal) select '전체토탈:' as job, sum(sal) from emp from emp; group by job; select job, sum(sal) from emp group by jobunion allselect '전체토탈:' as job, sum(sal) from em..
SQL - 테이블 조인 2 * 조인 문법 2가지 1. 오라클 조인 문법 - equi join - non equi join - outer join - self join 2. 1999 ANSI 조인 문법 - on 절을 사용한 조인 - using 절을 사용한 조인 - natural join - left/right/full outer 조인 - cross 조인 저번에 다룬 것은 오라클 조인 문법. 이번에는 ANSI 조인 문법으로 조인을 해보자. 1. 테이블의 데이터를 조인해서 출력하기 1 ( ON 절 ) 1. 오라클 equi join 2. on 절을 사용한 조인 select e.ename, d.loc select e.ename, d.loc from emp e, dept d from emp e join dept d where e.deptno..
SQL - 테이블 조인 1. 여러 테이블의 데이터를 조인해서 출력하기 1(EQUI JOIN) ** 조인을 이용하면 두개 이상의 테이블들의 컬럼들을 하나의 결과로 모아서 볼 수 있다. 지금까지는 한 테이블 안에 있는 컬럼들만 선택해서 출력했었는데,두 테이블에 있는 각각의 컬럼들을 출력할 수도 있을까? 예제 : emp 테이블에 있는 ename 이라는 컬럼과, dept 테이블에 있는 loc 이라는 컬럼을 출력하기 select ename, loc from emp, dept order by ename; 오! 결과가 나온다.그런데 자세히 보면, 한 이름 당 모든 부서가 출력되는 걸 확인할 수 있다.14 명의 사원이 있는 emp 테이블과 4개의 부서의 정보가 있는 dept 테이블이 모여14 * 4 = 56 건의 결과가 출력되었다. 모든 경..
SQL - 데이터 분석 함수 2 1. 데이터를 누적해서 합계하는 데이터 분석 함수 ( SUM_OVER ) SUM( 컬럼명 ) OVER ( order by 컬럼명 desc or asc ) 예제: 사원번호, 이름, 월급, 월급의 누적치를 출력하기 select empno, ename, sal, sum(sal) over ( order by empno asc) 누적치 from emp; 맨 오른쪽에 누적치가 점점 쌓이는 것을 확인. over가 보이면 감이 올 것이다.물론 다른 함수들과 마찬가지로 partition by를 사용할 수 있다. 예제: 직업, 월급, 직업별 총합 누적치를 출력하기 select job, ename, sal, sum(sal) over ( partition by job order by ename ) 누적치 from emp; 2..
SQL - 컬럼을 ROW로 출력하기 1. COLUMN을 ROW로 출력하는 방법 1 ( SUM + DECODE ) 일단 먼저, emp 테이블의 부서번호 (deptno) 별로 월급의 총합을 확인하고 싶다고 가정하자. select deptno, sum(sal) from emp group by deptno order by deptno; 이것을 가로로 출력해야하면 어떻게 할까? 이전에 배운 DECODE 함수를 활용해야 한다. DECODE ( 컬럼명, 조건1, 출력 1, 조건2, 출력 2, 그 외 출력 3 ) 으로 실행되는데, 예제로 select decode( deptno, 10, sal , 0 ) from emp; 를 실행해보자 이렇게하면 부서 번호가 10인 경우만 sal(월급) 이 출력되고 나머지 20, 30 같은 경우는 0이 출력된 것을 볼 수..