DATABASE(oracleDB 11g) 100

[SQL]계층적 질의

계층적 질의 계층적 질의SELECT [level] 컬럼명, FROM 테이블명WHERE 조건START WITH 계층의 시작점CONNECT BY 계층의 논리 표현식 의 형식으로 사용한다.다음의 예시를 참고하자.12345select lpad(employee_id, level*3, '.'), last_namefrom employeesstart with employee_id = 100connect by priore mployee_id = manager_id; Colored by Color Scriptercs SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.

[SQL]GROUP BY의 확장

GROUP BY의 확장 기본적인 group by는 아래 예시와 같다.1234select department_id 부서, trunc(avg(salary), 2) 평균연봉, job_id 업무from employeesgroup by department_id , job_idorder by department_id asc;Colored by Color Scriptercs위의 내용은 department_id로 그룹화하고 그룹화된 테이블을 다시 job_id로 그룹화 하는 것을 말한다. 아래 groupby rollup()의 예시를 보자1234select department_id 부서, trunc(avg(salary), 2) 평균연봉, job_id 업무from employeesgroup by rollup(departme..

[SQL]집합연산자의 기초

집합연산자의 기초 집합연산자는UNION : 합집합UNION ALL : 합집합+겹치는 것까지 중복표현INTERSECT : 교집합MINUS : 차집합로 나뉜다. - 실행 순서를 변경할 때 괄호를 사용한다.- ORDER BY절은 명령문의 맨 끝에만 한번 올 수 있다.- SELECT 의 리스트 표현식은 개수가 같아야한다.* 개수가 안맞을 경우 NULL을 사용할 수도 있다.다음의 예시를 참고하자.1234567SELECT DEPTNO, NULL, SUM(SAL)FROM EMP GROUP BY DEPTNO UNION ALL SELECT DEPTNO, JOB, SUM(SAL)FROM EMP GROUP BY DEPTNO, JOB; cs 주의할 점으로는 두 개이상의 쿼리문을 사용해야 하면, 각 쿼리문의 데이터 타입을 일치..

[SQL]INNER JOIN과 OUTER JOIN, SELF JOIN, CROSS JOIN 에 대하여

INNER JOIN과 OUTER JOIN, SELF JOIN, CROSS JOIN 에 대하여 INNER JOIN- Inner Join은 복수 테이블들이 조인 조건을 모두 만족하는 레코드들만 선별하는 조인이다. - 조인 조건에 만족하는 행만 검색 OUTER JOIN- INNER JOIN 결과 + 조인 조건에 만족하지 않은 행도 포함아래 예시는 아래와 같으나 manager_id가 null인 경우도 출력하여 주는 outer join의 예시이다.1234select e.employee_id, e.last_name, e.manager_id, m.last_namefrom employees e, employees mwhere e.manager_id = m.employee_id(+)order by e.employee_i..

[SQL]조인(JOIN)의 기초-Equi join 과 Non-Equi Join

조인(JOIN)의 기초 - Equi Join과 Non-Equi Join Equi Join #EQUI JOIN 은 조인 조건식에 '='를 사용한다. 내가 한개의 테이블의 열의 정보를 알고있고 그것에 대한 다른 테이블의 정보를 알고 싶을때 예를들어 1234567select department_idfrom employeeswhere employee_id = 110; select department_namefrom departmentswhere department_id = 100;cs이와같이 해당 employees 테이블의 department_id를 연관된 departments 테이블의 department_name을 알고싶을때 위의 예시와같이 select문을 두번을 써야할때 JOIN을 쓸 수 있다. JOIN은 ..

[SQL] 분석 함수

분석 함수 10g 부터 추가된 내용일반적인 group function이 하나의 집단에 하나의 결과만 return 되는 것에 비해, 여러 가지 기준을 적용해 여러 results를 return 할 수 있다. 다음 예시를 보자123select last_name, salary,first_value(salary) over(order by salary desc) 첫번째값연봉from employees;Colored by Color Scriptercs이경우 desc가 있으면 첫번째값(최고연봉) asc가 있으면 첫번째값(최저연봉) 이러한 식으로 출력이 된다. 처리 대상이 되는 행의 집단을 window 라고 한다. 123select first_name 이름, salary 연봉,first_value( salary ) ove..

[SQL]GROUP BY의 기초

GROUP BY의 기초 GROUP BY는 간단하게 '그룹을 지어라'라는 뜻이다. 좀더 말하면, 그룹으로 묶은 col만 불러올 수 있다. 다음의 예시를 보자123select department_id, min(salary), max(salary)from employeesgroup by department_id;cs이경우 group by를 빼면 동작하지 않으나, department_id를 group으로 묶어줌으로써 department_id를 따로 select할 수가 있다. 다음은 잘못된 예시이다.123select employee_id, min(salary), max(salary)from employeesgroup by department_id;cs이 경우 department_id를 group하였으나 emplo..

[SQL]집합 함수의 기초

집합 함수의 기초 집합함수는 값을 계산해서 1개의 값으로 나타내어 준다. 종류는 기본적으로 SUM(), AVG(), MAX(), MIN(), COUNT(), rank()등이 있으며각각 합, 평균, 최대, 최소, 갯수, 순위를 나타낸다 다음은 잘못된 예시이다. (ORA-00937: not a single-group group function)123select last_name, salary, sum(salary)from employees; Colored by Color Scriptercs위의 예시를 볼경우 sum()의 값은 1개인데 나머지 값들이 1개이상이므로 에러가 발생한다. 즉 이러한 다중함수는 다중함수끼리 혹은 1개의 row로만 또는 분석함수를 사용해서 나타내주어야 한다. 다음의 옳은 예시를 보자12..

[SQL]decode와 case함수

decode와 case함수 decode와 case함수는 프로그래밍을 할때 if문과 case문이라고 생각하면 된다. 아래의 예시를 참고하자decode1234567select last_name, department_id,decode(department_id,90, '비서', 80, '영업', 60, '관리') 부서from employeeswhere department_id in (60, 80, 90);cs이경우 90일때 비서, 80일때 영업, 60일때 관리로 표시해서 col을 만들주는 것이다. 또한 col을 표시하기 때문에 부서라는 alias를 사용할 수 있다. case의 경우 쓰는법이 살짝 다르다.123456789select last_name, department_id,casewhen department_..

[SQL]날짜관련함수 연습문제

날짜관련함수 연습문제 사번과 이름, 입사일과 근속연수, 근속일수를 표현이때 값은 근속연수, 근속일수 순으로 내림차순 한다. 12345select employee_id 사번, last_name 이름, hire_date 입사일, trunc(months_between(sysdate, hire_date)/12) 근속연수, trunc(mod(sysdate - hire_date, 365))+1 근속일수from employeesorder by 근속연수 desc, 근속일수 desc;cs SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.