집합 연산자 두 개 이상의 쿼리 결과를 하나로 결합하는 연산자 여러 개의 SELECT문을 하나로 연결합니다. 집합 연산자로 결합되는 결과의 컬럼은 데이터타입이 동일해야 합니다. UNION ( 합집합 ) 중복 제거 SELECT DEPTNO FROM DEPT UNION SELECT DEPTNO FROM EMP; UNION ALL ( 합집합 ) 중복 허용 SELECT DEPTNO FROM DEPT UNION ALL SELECT DEPTNO FROM EMP; INTERSECT ( 교집합 ) SELECT DEPTNO FROM DEPT INTERSECT SELECT DEPTNO FROM EMP; MINUS ( 차집합 ) SELECT DEPTNO FROM DEPT MINUS SELECT DEPTNO FROM EMP;
SUBQUERY ( 서브쿼리 ) 란 ? 하나의 SQL문 내에 또 다른 SQL문이 있는 쿼리문 전체 SQL문을 메인 쿼리라고 하며, 메인 쿼리에 종속된 내부 쿼리를 서브쿼리라고 합니다. 반드시 괄호 ( ) 안에 넣어 표현해야 합니다. 단일 행 서브쿼리 서브 쿼리의 결과가 1개의 행만 나오는 것 메인 쿼리의 WHERE절에서 단일 행 연산자 (=, , >, >=, ALL(SELECT SAL FROM EMP WHERE JOB='MANAGER'); EXISTS : 서브 쿼리의 데이터가 존재하는 지의 여부를 먼저 따지고, 존재하는 값들만 출력 /* 관리자로 등록되어 있는 사원들을 조회해보자. */ SELECT EMPNO, ENAME FROM EMP E WHERE EXISTS (SELECT EMPNO FROM EMP..
JOIN ( 조인 ) 이란 ? 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법 일반적으로 테이블의 식별값인 PRIMARY KEY와 테이블 간 공통값인 FOREIGN KEY를 사용하여 조인합니다. EQUI JOIN NON-EQUI JOIN SELF JOIN INNER JOIN CROSS JOIN OUTER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN EQUI JOIN (등가 조인) 컬럼값이 일치되는 행을 연결하여 결과 생성 가장 일반적으로 사용하는 '='에 의한 조인 /* EMP 테이블과 DEPT 테이블을 조인하여 직원들의 부서명을 조회해보자. */ SELECT E.EMPNO, E.ENAME, D.DNAME FROM EMP E, DEPT D WHERE..
ROWNUM 조회한 결과에 순위 매기기 예제로 이해하기 EMP 테이블에서 3번째로 월급이 높은 사원의 이름과 월급을 출력하고 싶다. 1. 먼저 월급이 높은 순서대로(내림차순) 정렬해보기 SELECT ENAME, SAL FROM EMP ORDER BY SAL DESC; 2. ROWNUM을 사용해서 출력해보기 (ORDER BY절을 사용했기 때문에 ROWNUM은 뒤섞여 나오게 됩니다.) SELECT ROWNUM, ENAME, SAL FROM EMP ORDER BY SAL DESC; 3. 따라서, 1번의 쿼리를 가상테이블로 만들어 ROWNUM을 새로 부여해줍니다. ROWNUM이 월급이 높은 순서대로 잘 주어졌습니다. SELECT ROWNUM, A.ENAME, A.SAL FROM (SELECT ENAME, SAL..
집계함수 이름 의미 COUNT 컬럼의 행 개수 SUM NULL을 제외한 모든 행의 합 AVG NULL을 제외한 모든 행의 평균 MAX NULL을 제외한 최대값 MIN NULL을 제외한 최소값 데이터 그룹화 GROUP BY 절 // 부서별 월급 총합을 구하자. SELECT DEPTNO, SUM(SAL) FROM EMP GROUP BY DEPTNO; // 직업 별 사원 수를 조회해보자. SELECT JOB, COUNT(JOB) FROM EMP GROUP BY JOB; HAVING 절 GROUP BY절에 조건을 주고 싶을 때 사용 집계함수를 사용해서 조건을 주고 싶을 때 (WHERE절에서는 집계함수를 사용할 수 없기 때문) // 부서별 월급 합계를 구하자. 단, 월급의 합계가 7000 이상인 부서만 출력하자...
날짜 함수 이름 의미 SYSDATE 현재 날짜와 시간 MONTHS_BETWEEN(날짜1, 날짜 2) 날짜1과 날짜2 사이의 개월 수 ADD_MONTHS(날짜, 더하려는 개월 수) 날짜에 개월 수를 더함 NEXT_DAY 주어진 날짜의 다음 날짜 LAST_DAY 주어진 날짜가 속한 달의 마지막 날짜 날짜 표현 형식 형식 설명 YYYY / YY / YEAR 년도 MONTH / MON / MM / RM 달 ( FMMM : 0 or 공백제거 / RM : 로마표기법 ) DDD / DD / D 일 ( DDD : 1년 기준 ) Q 분기 ( 1, 2, 3, 4 ) DAY / DY 요일 HH / HH24 12시간 / 24시간 AM / PM 오전 / 오후 MI 분 ( 0~59 ) SS 초 ( 0~59 ) SYSDATE SE..
DUAL 테이블 함수나 계산식을 테이블 생성 없이 실행해보기 위한 테이블 (테스트용) SELECT 20*30 FROM DUAL; 단일 행 함수 숫자 함수 이름 의미 ABS 절대값 ROUND(컬럼or숫자, 소숫점 자리지정) 지정한 자리에서 반올림 TRUNC(컬럼or숫자, 소숫점 자리지정) 지정한 자리에서 버림 MOD 나머지 값 CEIL 올림 FLOOR 버림 POWER(숫자1, 숫자2) 숫자1의 숫자2 제곱 ROUND(컬럼 OR 숫자, 소숫점 자리지정) / TRUNC(컬럼 OR 숫자, 소숫점 자리지정) 지정한 자리수에서 반올림 / 버림 소숫점 자리지정 : 지정하지 않으면 0 양수 : 소숫점 이하 자리 음수 : 소숫점 이상 자리 SELECT TRUNC(125.345, -1) FROM DUAL; SELECT R..
데이터 무결성이란 ? 데이터가 손상되거나 원래의 의미를 잃지 않고 유지되는 상태 제약조건 테이블에 잘못된 데이터를 입력하는 것을 막기 위해 일정한 규칙을 지정해주는 것 무결성 제약조건 NOT NULL : 해당 컬럼에 NULL 입력 불가 컬럼 레벨에서만 적용 가능 UNIQUE : 해당 컬럼 또는 컬럼 값의 조합이 유일하도록 NULL 값은 중복 가능 PRIMARY KEY : 각 행을 유일하게 식별할 수 있도록 NOT NULL + UNIQUE CHECK : 해당 컬럼의 특정 조건을 항상 만족시키도록 제약조건에 이름 지정해주기 이름을 따로 지정하지 않으면 자동 생성됩니다. CREATE TABLE TEST01 ( AA NUMBER PRIMARY KEY, BB VARCHAR2(10) CONSTRAINT JOB_NA..
시퀀스 ( SEQUENCE ) 란 ? 지정된 값만큼 증가하거나 감소시키는 자동 번호 발생기 UNIQUE한 값을 생성해줍니다. 주로 PRIMARY KEY의 값을 생성해주기 위해 사용합니다. 테이블과 독립적이기 때문에 하나의 시퀀스를 여러 테이블에서 사용할 수 있습니다. 생성 CREATE SEQUENCE TEST_SEQ START WITH 1-- 시작 값 : 맨 처음 실행할 때 딱 한 번만 적용된다. (수정 불가) INCREMENT BY 1-- 정수값만큼 증감 MAXVALUE 9999-- 최대값 MINVALUE 1-- 최소값 NOCYCLE-- 반복 여부 NOCACHE;-- 캐시 생성 여부 검색 SELECT * FROM USER_SEQUENCES; 적용 : 시퀀스명.NEXTVAL -- 시퀀스값 넣기(NEXTV..
SQL ( Structured Query Language ) 이란 ? 구조적인 질의 언어 데이터베이스를 정의, 조작, 제어하기 위해 사용하는 데이터베이스 언어 DDL ( Data Definition Language ) : 데이터 정의어 테이블, 뷰, 프로시저 등을 정의/수정/삭제하는 데 사용하는 명령어 트랜잭션이 적용되지 않으므로 COMMIT할 필요가 없고, ROLLBACK 할 수 없습니다. CREATE : 정의 CREATE TABLE 테이블이름 ( 컬럼 TYPE(SIZE) 제약조건, ... CONSTRAINT 제약조건명 제약조건(컬럼) ... ); ALTER : 수정 추가 -- 컬럼 추가 ALTER TABLE 테이블명 ADD(컬럼 TYPE(SIZE), 컬럼 TYPE(SIZE), ...); -- 제약조건..