본문 바로가기

Database/Oracle

(24)
Sequence(SEQ), 동의어 sequence : 유일한 값을 생성해주는 Oracle Object baseball +1 1001 -> 1002 -> 1003 ex) 회원번호, 게시판 관리번호 등 초기화 불가능, 삭제 후 다시 생성 int count = 1; count++; --EMPLOYEES테이블 시퀀스에 값 넣어보기 ->nextval을 통해 마지막 사원번호 다음 번호로 삽입됨. INSERT INTO employees(EMPLOYEE_ID, LAST_NAME, EMAIL, HIRE_DATE, JOB_ID) VALUES(EMPLOYEES_SEQ.nextval, '홍', 'HGD@NAVER.COM', '91/10/12', 'IT_PROG'); --nextval을 통해 마지막 사원번호 다음 번호로 삽입됨. --sequence의 생성 CR..
무결성 table 생성과 key, 외래키 무결성 : column에 적용 COLUMN을 지정하는 성질. 설정 Primary Key(PK) : 기본키. NULL을 허용하지 않는다. 중복을 허용하지 않는다. (EX, ID, 주민번호) Unique Key(UK) : 고유키. NULL을 허용한다. 중복을 허용하지 않는다. (EX, E-MAIL) Foreign Key : 외래키. 테이블과 테이블을 연결하는 목적의 성질이다. (JOIN의 목적이다), NULL허용 외래키로 설정된 컬럼은 연결된 테이블에서 PK나 UK로 설정되어 있어야 한다 CHECK : 범위를 설정. NULL을 허용 NOT NULL : NULL을 허용하지 않는다 ---FOREIGN KEY : 외래키 , 테이블끼리의 연결 --TABLE과 TABLE을 연결하기 위한 무결성 제약조건이다. --다른..
table 생성 및 셋팅 명령 Object - create, drop, select, alter Data - insert, delete, select, update --SYS --Query로 Tablespace 만들기 CREATE TABLESPACE TABLESPACE2 DATAFILE 'C:\TEST\TEST_TBS1_02.DBF' SIZE 10M --저장위치 AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED --추가되는 용량 LOGGING --로깅 사용 EXTENT MANAGEMENT LOCAL AUTOALLOCATE --자동 할당(로컬) BLOCKSIZE 8K --BLOCK 크기 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON; --TABLE SPACE 수정 --1. ..
헷깔리는 함수문제~ --문제3) EMPLOYEES 테이블에서 100번 부서의 최소 급여보다 최소 급여가 --많은 다른 모든 부서를 출력하라 ->>부서출력 : 먼저 부서를 그룹으로 묶어주고 HAVING절에 서브쿼리 추가 그룹명과 그룹함수만 출력 가능, WHERE절 추가하여 IS NOT NULL 추가가능 SELECT department_id, MIN(salary) FROM employees GROUP BY department_id HAVING MIN(salary) > (SELECT MIN(salary) FROM employees WHERE department_id = 100); --문제4) 업무별로 최소 급여를 받는 사원의 정보를 사원번호,이름,업무,부서번호 --를 출력하여라. 단 업무별로 정렬하여라. ->> '업무별로 최소급..
순위함수 SELECT 절 SELECT 컬럼, 함수, 그룹함수, SUB QUERY, OVER() PARTITION BY FROM 테이블, SUB QUERY [ WHERE ] 조건 IN AND ALL ANY LIKE 123456 순서 매겨짐 (코드) SELECT first_name, salary, RANK()OVER(ORDER BY salary DESC) AS RANK, DENSE_RANK()OVER(ORDER BY salary DESC) AS DENSE_RANK, ROW_NUMBER()OVER(ORDER BY salary DESC) AS ROW_NUMBER FROM employees; --ROWNUM (1,2,3,4,5,6,7,.... ) SELECT ROWNUM, employee_id, first_name FRO..
OVER(), PARTITION BY --COUNT(*)OVER() : 전체 행수를 반환 --COUNT(*)OVER(PARTITION BY 컬럼): 컬럼을 그룹으로 나누어 ROW의 수를 반환한다 --OVER() 함수 SELECT 절에서만 사용 GROUP BY를 보강하기 위해 사용 SELECT department_id, COUNT(*)OVER() FROM employees; SELECT department_id, COUNT(DISTINCT department_id)OVER() FROM employees; --PARTITION BY == GROUP BY 파티션으로 묶어 그룹함수로 확인할 수 있게 만듬 SELECT department_id, first_name, salary, COUNT(*)OVER(PARTITION BY department_id..
집합 합집합 : UNION 교집합 : INTERSECT 차집합 : MINUS 합집합 : UNION -- UNION SELECT job_id FROM employees WHERE job_id IN('AD_VP','FI_ACCOUNT') UNION --합집합 SELECT job_id FROM jobs WHERE job_id IN('AD_VP', 'FI_ACCOUNT'); 교집합 : INTERSECT --INTERSECT SELECT employee_id FROM employees INTERSECT --교집합 -->매니저ID만 나옴 SELECT manager_id FROM employees; --교집합은 JOIN과 동일 --JOIN SELECT DISTINCT b.employee_id --> DISTINCT로 중복..
특수 Query -- CASE DECODE = SWITCH --1번 SELECT employee_id, first_name, phone_number, CASE SUBSTR(phone_number, 1, 3) WHEN '515' THEN '서울' WHEN '590' THEN '부산' WHEN '659' THEN '광주' WHEN '603' THEN '대전' ELSE '기타' END AS "지역" FROM employees; --2번 SELECT employee_id, first_name, phone_number, CASE WHEN SUBSTR(phone_number,1,3) = '515' THEN '서울' WHEN SUBSTR(phone_number,1,3) = '590' THEN '부산' WHEN SUBSTR(phone..