본문 바로가기

BackEnd/DataBase - Oracle

(20)
[Oracle] 제약 조건 (Constraint) 제약 조건명을 명시해주지 않을 경우 ORACLE에서는 자동으로 이름을 부여 제약 조건명은 중복될 수 없으며 제약 조건명이 곧 오브젝트 이름이다 제약 조건명은 일반적으로 '테이블명_대상컬럼_제약조건 종류'를 줄여서 쓰는 것이 암묵적인 규칙 (Ex: 테이블 employees, 컬럼 last_name, 제약조건 NOT NULL => emp_ln_nn) 테이블당 한 번만 쓸 수 있는 경우 Table-Level에서 묶어줘야하고 특별한 경우가 없으면 Column-Level에서 실행한다 제약조건 조회 구문 (오브젝트명, 타입, 조건설명) 타입 코드 설명 C Check on a table O Read Only on a view P Primary Key R Referential AKA Foreign Key U Uniqu..
[Oracle] 데이터 정의어(DDL) 오브젝트 종류 Table - 행을 구성하며 저장의 기본 단위 View - 논리적으로 표현된 하나 또는 여러 개의 테이블 들의 부분집합 Sequence - 숫자 생성기 Index - 일부 쿼리문의 성능 높여줌 Synonym - 오브젝트에 추가적인 이름을 부여함 CREATE (오브젝트 생성) 필수 : 테이블명, 컬럼명, 데이터 타입, 컬럼사이즈 선택 : Default 값, 제약조건 기본 문법 CREATE TABLE 테이블명 ( 컬럼명1 데이터 타입, 컬럼명3 데이터 타입, 컬럼명2 데이터 타입, ... ); 테이블 복사하는 방법 CREATE TABLE 테이블명 AS SELECT * FROM 복사할테이블명 WHERE 1=2; 테이블의 특정 컬럼만 복사하는 방법 CREATE TABLE 테이블명 AS SELECT..
[Oracle] DML - 트랜잭션(Transaction) 논리적인 작업 단위 여러 DML이 모여서 하나의 트랜잭션으로 구성됨 DML 작업 후 commit 또는 rollback으로 트랜잭션 종료해야함 Oracle은 DML 수행 수 rollback이나 commit을 해야 완료되지만 SQL Server는 트랜잭션을 명시적으로 지정하지 않으면 자동 commit된다 이 글의 내용은 Oracle DB에만 해당하는 명령어다 commit (확정) commit을 하고난 뒤에는 rollback하지 못한다 rollback (되돌리기) 되돌리기 실행 후 해당 savepoint 다음에 있는 모든 savepoint는 자동으로 삭제된다 기본 문법 rollback to savepoint insert_포인트명; 하나의 DELETE문으로 100개의 레코드를 삭제할 때 이는 하나의 트랜잭션이기..
[Oracle] 서브 쿼리(Sub Query) 한 번의 쿼리 구문으로는 원하는 조건을 얻기 어려운 경우 서브쿼리를 사용할 수 있다 실행 순서는 안 쪽에 있는 쿼리 구문이 먼저 실행되며 실행결과를 바깥 쿼리에 넘겨준다 SELECT employee_id, last_name, salary FROM EMPLOYEES e WHERE employee_id IN (SELECT DISTINCT manager_id FROM employees); 위 서브쿼리(SELECT ... employees)의 값은 employees 테이블에서 중복 된 manager_id 값을 제거한 값들만 추려내어 IN 함수를 통해 그 값 중에서 하나라도 일치하는 것이 있다면 SELECT 조회 컬럼에 맞춰 출력한다 서브쿼리의 문법은 다양한 위치에서 활용되는 문법으로, 테이블을 대신할 수 있는 ..
[Oracle] JOIN과 Self-Join JOIN 두 개 이상의 테이블을 연결하여 데이터를 조회할 때 사용하는 구문 아래 예문을 통해 알아보자 SELECT dept.department_id, dept.department_name, dept.location_id, loca.location_id, loca.city FROM departments dept JOIN locations loca ON dept.location_id = loca.location_id; departments 테이블의 별칭은 dept JOIN하는 locations 테이블의 별칭은 loca 보여줄 컬럼은, departments 테이블의 department_id, department_name locations 테이블의 location_id, city JOIN 시 연결시켜줄 조건은,..
[Oracle] 그룹으로 묶는 GROUP BY절과 HAVING절 GROUP BY 보통 검색 된 여러 행을 이용하여 통계 정보를 계산하는데 쓰임 NULL 값은 무시하고 연산 GROUP BY절에 명시 된 컬럼은 SELECT절에 기술해주는 것이 올바른 형태 (없다면 어디서 그룹화한건지, 제목이 없으니 없는 것이나 마찬가지) 기본 문법 SELECT 컬럼, 그룹함수(컬럼) FROM 테이블 [WHERE 조건] GROUP BY 그룹대상 [ORDER BY 정렬대상 [ASC/DESC]] 컬럼이 오고 그룹 함수가 SELECT절에 있으나 GROUP BY절에 컬럼이 없으면 에러가 발생한다 숫자 데이터 입력 받는 함수 AVG ( [DISTINCT | ALL] n ) - 평균 STDDEV ( [DISTINCT | ALL] n ) (Standard Deviation) - 표준편차, 중심에서 관..
[Oracle] 변환 함수 정수 또는 문자열을 변환할 수 있는 함수이다 TO_CHAR (NUMBER -> CHAR) 정수를 문자로 변환해준다 TO_CHAR(number, 'format_model') SELECT TO_CHAR(salary, '$99,999.00') SALARY FROM employees WHERE last_name = 'Ernst'; -- 실제 값은 6000이지만 TO_CHAR 함수를 통해 '$6,000.00' 으로 출력 2번째 인자의 'format_model'은 아래 표와 같다 요소 결과 9 숫자를 나타냄 0 0이 표시되도록 강제 적용 $ 부동 달러 기호 배치 L 부동 로컬 통화 기호 사용 . 소수점 출력 , 천 단위 표시자로 쉼표 출력 TO_NUMBER (CHAR -> NUMBER) 문자를 정수로 변환해준다 T..
[Oracle] 날짜 함수 날짜를 조작할 수 있는 함수이다 SYSDATE 현재 데이터베이스 서버의 날짜 및 시간을 반환해준다 (시간은 보이지 않지만 포함되어 있다) 날짜를 이용한 산술 연산식 연산 결과 설명 날짜 + 숫자 날짜 날짜에 일 수를 더한다 날짜 - 숫자 날짜 날짜에서 일 수를 뺀다 날짜 - 날짜 일 수 한 날짜를 다른 날짜에서 뺀다 날짜 + 숫자/24 날짜 날짜에 시간 수를 더한다 (날짜 - 날짜)/7 몇 주 몇 주가 지났는 지 계산 MONTHS_BETWEEN 두 날짜 간의 월 수를 구한다 MONTHS_BETWEEN('01-SEP-95', '11-JAN-94') => 19.6774194 -- 보이지 않는 서버의 시간도 포함되어 있어 소수점으로 표현 되었음 ADD_MONTHS 월을 더하거나 뺀다 ADD_MONTHS('31..