Oracle
-
14. 제약 조건constraintOracle 2023. 8. 25. 10:05
14.1 제약 조건이란? : 테이블 열에 저장될 데이터의 특성과 조건을 지정. 보호를 위한 최소한의 제약 조건 NOT NULL : 지정 열에 NULL을 허용하지 않음. 데이터 중복 허용. UNIQUE : 지정한 열이 유일한 값을 가져야 함. 중복 불허. NULL은 중복에서 제외. PRIMARY KEY. : 중복을 허용하지 않으면서 NULL을 허용하지 않음. 테이블에 하나만 지정 가능. FOREIGN KEY : 다른 테이블의 열을 참조하여 존재하는 값만 입력 가능. CHECK : 조건식을 만족하는 데이터만 입력 가능. 14.2. NOT NULL : NULL을 저장하지 않는다 CREATE TABLE EMP2 ( EMPNONUMBER(4) , ENAMEVARCHAR2(10)NOT NULL , JOBVARCHA..
-
9. 서브 쿼리 : 쿼리 안에 작성하는 쿼리Oracle 2023. 8. 22. 17:21
Q. 사원 중에서 월급을 가장 많이 받는 사원의 이름, 업무, 입사일, 급여 정보를 출력하는 쿼리를 작성하세요 SELECT ENAME, JOB, HIREDATE, SAL FROM EMP WHERE SAL = (SELECT MAX(SAL) FROM EMP); 9.1 서브쿼리의 종류 서브 쿼리 실행 결과의 형태 단일 행 서브쿼리 다중 행 서브쿼리 다중 열 서브쿼리 서브 쿼리 동작 방식 일반 서브쿼리 상관 서브쿼리 Q1. EMP 테이블에서 각 업무별 평균 급여가 전체 사원의 평균 급여 이상인 경우, 그 결과를 출력하는 쿼리를 작성하세요. SELECT JOB, AVG(SAL) FROM EMP WHERE AVG(SAL) > (SELECT AVG(SAL) FROM EMP) GROUP BY JOB; 라고 썼는데 안 ..
-
8.2 오라클 JOINOracle 2023. 8. 22. 11:42
8.2. ORACLE SQL 조인(구버젼) 8.2.1. INNER JOIN SELECT ENAME, JOB, SAL, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND SAL >= 2000; 8.2.2 OUTER JOIN LEFT OUTER JOIN : (+)를 오른쪽 변에 추가해준다. SELECT ENAME, JOB, SAL, DNAME FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO(+); RIGHT OUTER JOIN : (+)를 왼쪽에 붙인다. SELECT ENAME, JOB, SAL, DNAME FROM EMP, DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO; 전통 ORACLE 문..
-
8. JOIN : 여러 테이블을 하나의 테이블처럼 사용하자Oracle 2023. 8. 21. 16:13
8.0. 표준 SQL과 ORACLE(기존)에서 JOIN 활용 표준 SQL JOIN(권장) SELECT ENAME, JOB, SAL, DNAME, LOC FROM EMP INNER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO; ORACLE JOIN SELECT ENAME, JOB, SAL, DNAME, LOC FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; 기존 방식의 ORACLE JOIN을 여전히 활용하는 곳이 많다. 백엔드에서는 구 문법을 그대로 사용하는 경우가 많지만, 너무 오래된 문법이라 바꾸길 권장한다고. 8.1. 표준 SQL 조인 8.1.1. 조인의 조건 : 공통의 열 같은 종류의 데이터 타입(값이 같을 필요는 없음) 값의 범위가 일치 ..
-
7.4 그룹화와 관련된 여러 함수Oracle 2023. 8. 19. 17:49
GROUP BY절에 사용할 수 있는 특수 함수들에 대해 배운다 7.4.1 ROLLUP, CUBE 그룹화 데이터의 합계를 출력할 때 사용 SELECT {조회할 열} FROM {조회할 테이블 이름} WHERE {조회할 행을 선별하는 조건식} GROUP BY ROLLUP {그룹화열 지정} SELECT {조회할 열} FROM {조회할 테이블 이름} WHERE {조회할 행을 선별하는 조건식} GROUP BY CUBE {그룹화열 지정} 기존 GROUP BY절 SELECT DEPTNO, JOB, COUNT(*), MAX(SAL), SUM(SAL), AVG(SAL) FROM EMP GROUP BY DEPTNO, JOB ORDER BY DEPTNO, JOB; ROLL UP : 명시한 열을 소그룹부터 대그룹의 순서로 각 ..
-
7.3 HAVING : GROUP BY에 조건을 걸자Oracle 2023. 8. 18. 17:49
7.3.1 기본 사용법 GROUP BY절이 그룹화한 값의 범위를 제한할 때 사용 기본문 SELECT {조회할 열} FROM {조회할 테이블} GROUP BY {그룹화할 열} HAVING {출력할 그룹을 제한하는 조건식} SELECT DEPTNO, JOB, AVG(SAL) FROM EMP GROUP BY DEPTNO, JOB HAVING AVG(SAL) >= 2000 ORDER BY DEPTNO, JOB; 7.3.2 유의점 WHERE절은 출력하는 '행'을 제한하므로, 그룹화된 데이터를 제한할 수 없다. AVG 등 다중행 함수로 조작된 값을 제한할 수 없다. WHERE절이 GROUP BY, HAVING절보다 먼저 행을 제한한다. SELECT DEPTNO, JOB, AVG(SAL) FROM EMP WHERE ..
-
7.2 GROUP BY : 결과 값을 원하는 열로 묶어서 출력Oracle 2023. 8. 18. 17:24
7.2 GROUP BY : 결과 값을 원하는 열로 묶어서 출력 데이터 그룹화 : 여러 데이터에서 의미 있는 하나의 결과를 특정 열로 묶어서 출력 기본문 : SELCET {조회할 열} FROM {조회할 테이블} GROUP BY {그룹화할 열(여러 열 선택 가능)}; 이때 group by 절 안에서는 별칭alias를 쓸 수 없다. 부서별 평균 급여 출력하기 SELECT avg(sal), deptno FROM emp GROUP BY deptno; 앞 포스팅에서 다중행 함수와 일반 행, 또는 단일행을 함께 출력할 수 없었던 것처럼 GROUP BY절에 없는 열을 포함해서 SELECT절에 쓸 수 없다. (행의 길이가 다르므로)
-
7. 다중행 함수와 데이터 그룹화Oracle 2023. 8. 18. 14:54
7.1 하나의 열에 출력 결과를 담는 다중행 함수 다중행 함수 : multiple-row function. 여러 행을 통해 하나의 결과 값을 도출. 7.1.1 SUM : 합계 SELECT sum(sal) FROM emp; 7.1.2 MAX : 최대값, MIN : 최소값, AVG : 평균값, COUNT : 데이터 개수 SELECT sum(sal), max(sal), min(sal), avg(sal), count(sal) FROM emp; all(기본값) 또는 distinct(중복 제외)와 함께 사용하기 SELECT count(job), count(distinct job) from emp; SELECT count(job), count(distinct job), count(all job) FROM emp; 7..