데이터베이스/Oracle
-
Oracle - DDL (Data Definition Language) 제약 조건 - Part 2데이터베이스/Oracle 2020. 11. 20. 13:44
제약 조건(CONSTRAINTS) 제약 조건이란 테이블 작성 시 각 컬럼에 기록될 데이터에 대해 제약조건을 설정할 수 있는데 이는 데이터 무결성 보장을 주 목적으로 한다. 입력 데이터에 문제가 없는지에 대한 검사와 데이터의 수정/삭제 가능 여부 검사 등을 위해 사용한다. 제약조건에는 NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK가 있다. 제약 조건 확인은 여기서 가능하다. 테이블을 클릭 후 제약 조건탭으로 가서 확인할 수 있다. NOT NULL NOT NULL이란 데이터에 NULL을 허용하지 않는다. 해당 컬럼에 반드시 값이 기록되어야 하는 경우에 사용하고 특정 컬럼에 값을 저장하거나 수정할 때 NULL 값을 허용하지 않도록 컬럼 레벨에서 제한한다. [ NOT ..
-
Oracle - DDL (Data Definition Language) CREATE - Part 1데이터베이스/Oracle 2020. 11. 17. 14:53
DDL(Data Definition Language) DDL이란 데이터 정의 언어로 객체(OBJECT)를 만들고(CREATE), 수정하고(ALTER), 삭제(DROP)하고 데이터 전체 구조를 정의하는 언어이다. 주로 DB관리자, 설계자가 사용한다. 오라클의 객체에는 테이블(TABLE), 뷰(VIEW), 시퀀스(SEQUENCE), 인덱스(INDEX), 패키지(PACKAGE), 프로시저(PROCEDUAL), 함수(FUNCTION), 트리거(TRIGGER), 동의어(SYNONYM), 사용자(USER)가 있다. 그 중 테이블, 뷰, 등을 데이터베이스 객체를 생성하는 구문은 CREATE이다. 본좌랑 같이 CREATE를 알아보자. CREATE CREATE란 테이블이나 인덱스, 뷰 등 데이터베이스 객체를 생성하는 구..
-
Oracle - 서브쿼리(SUBQUERY) - Part2데이터베이스/Oracle 2020. 11. 16. 17:27
다중 행 다중 열 서브쿼리 다중행 다중열 서브쿼리란 서브쿼리의 조회 결과 컬럼의 개수와 행의 개수가 여러 개인 서브쿼리이다. [ 다중행 다중열 서브쿼리 예시 ] - 직급별 최소 급여를 받는 직원의 사번, 이름, 직급, 급여 조회 SELECT EMP_ID, EMP_NAME, JOB_CODE, SALARY FROM EMPLOYEE WHERE (JOB_CODE, SALARY) IN (SELECT JOB_CODE, MIN(SALARY) FROM EMPLOYEE GROUP BY JOB_CODE) ORDER BY 3; 여기의 WHERE절에 있는 SELECT문인 SELECT JOB_CODE, MIN(SALARY) FROM EMPLOYEE GROUP BY JOB_CODE 이 코드를 실행하면 직급코드별 최저시급이 나타난..
-
Oracle - 서브쿼리(SUBQUERY) - Part 1데이터베이스/Oracle 2020. 11. 16. 14:27
SUBQUERY SUBQUERY란 SELECT 문장 안에 포함된 또 다른 SELECT 문장으로 메인 쿼리가 실행되기 전 한 번만 실행된다. 비교 연산자의 오른쪽에 기술해야 하고 반드시 괄호로 묶어야 한다. 서브쿼리와 비교할 항목은 반드시 서브쿼리의 SELECT한 항목의 개수와 자료형을 일치시켜야 한다. 즉, 메인퀘리 SELECT문을 보조하는 역할로 사용하는 SELECT문이다. [ SUBQUERY 예시 ] 전 직원의 평균 급여보다 많은 급여를 받고 있는 직원의 사번, 이름, 직급코드 ,급여 조회 SELECT EMP_ID, EMP_NAME, JOB_CODE, SALARY FROM EMPLOYEE WHERE SALARY >= (SELECT AVG(SALARY) FROM EMPLOYEE); -- 서브쿼리 예시 ..
-
Oracle - CROSS JOIN / NON_EQUI JOIN / SELF JOIN데이터베이스/Oracle 2020. 11. 13. 15:47
CROSS JOIN / NON_EQUI JOIN / SELF JOIN CROSS JOIN / NON_EQUI JOIN / SELF JOIN를 알아보자. CROSS JOIN CROSS JOIN이란 교차 조인, 혹은 카테시안 곱(Cartesian Product)이라고도 하며 조인되는 테이블의 각 행들이 모두 매핑된 데이터가 검색되는 조인 방법이다. 검색되는 데이터 수는 '행의 컬럼 수 * 또 다른 행의 컬럼 수' 로 나타난다. [ CORSS JOIN 예시 ] SELECT EMP_NAME, DEPT_TITLE FROM EMPLOYEE CROSS JOIN DEPARTMENT; NON_EQUI JOIN NON_EQUI JOIN이란 비등가 조인이라고도 불리며 '=' (등호)를 사용하지 않는 조인문으로 지정한 컬럼 ..
-
Oracle - JOIN데이터베이스/Oracle 2020. 11. 12. 14:47
JOIN JOIN이란 하나 이상의 테이블에서 데이터를 조회하기 위해 사용하고 수행 결과는 하나의 Result Set으로 나타낸다. JOIN에는 오라클 전용 구문과 ANSI 표준 구문이 있다. 예를들어 EMPLOYEE 테이블 조회 SELECT EMP_ID, EMP_NAME, DEPT_CODE FROM EMPLOYEE; DEPARTMENT 테이블 조회 SELECT DEPT_ID, DEPT_TITLE FROM DEPARTMENT; EMPLOYEE 테이블과 DEPARTMENT 테이블을 JOIN을 하면 SELECT EMP_ID, EMP_NAME, DEPT_CODE, DEPT_TITLE FROM EMPLOYEE, DEPARTMENT -- 합치게될 테이블 명시 WHERE DEPT_CODE = DEPT_ID; -- 합..
-
Oracle - GROUP BY 의 ROLLUP과 CUBE데이터베이스/Oracle 2020. 11. 11. 17:26
ROLLUP / CUBE ROLLUP과 CUBE는 그룹 별 산출한 결과 값의 집계를 계산하는 함수이다. ROLLUP ROLLUP이란 인자로 전달받은 그룹 중 가장 먼저 지정한 그룹별로 추가적 집계 결과를 반환한다. 즉, 그룹별 '중간집계' 와 '전체 집계'를 계산하여 결과를 행에 자동 추가해주는 함수이다. [ ROLLUP 예시 ] - EMPLOYEE 테이블에서 각 부서 마다 직급 별 급여합, 부서 별 급여 합, 전체 직원 급여 총합 조회 SELECT DEPT_CODE, JOB_CODE, SUM(SALARY) FROM EMPLOYEE GROUP BY ROLLUP(DEPT_CODE, JOB_CODE) ORDER BY 1; CUBE CUBE란 인자로 지정된 그룹들로 가능한 모든 조합 별로 집계한 결과 반환한다..
-
Oracle - ORDER BY / GROUP BY / HAVING데이터베이스/Oracle 2020. 11. 11. 17:05
ORDER BY ORDER BY란 SELECT한 컬럼에 대해 정렬을 할 때 작성하는 구문으로 SELECT 구문의 가장 마지막에 작성하며 실행 순서 역시 가장 마지막에 수행된다. [ 표현식 ] 정렬 방식은 ASC는 오름차순이고 DESC은 내림차순이다. 또는, 컬럼명이 아닌 컬럼의 순서를 숫자로 표기할 수 있다. [ ORDER BY 예시 ] - EMPLOYEE 테이블에서 부서별 코드, 부서별 급여합, 부서별 급여 평균, 부서별 인원 수를 부서코드 순으로 조회 SELECT DEPT_CODE, SUM(SALARY) "급여 합",FLOOR(AVG(SALARY)) "급여 평균", COUNT(*) "인원 수" FROM EMPLOYEE GROUP BY DEPT_CODE ORDER BY DEPT_CODE; GROUP B..