본문 바로가기

오라클21

[Oracle SQL] 시퀀스(SEQUENCE) 시퀀스는 호출될 때마다 자동으로 유일한 숫자를 생성하는 오라클 객체입니다. 예를 들어 게시판의 글 번호가 순차적으로 넘버링될 수 있도록 시퀀스를 사용합니다. 1. 시퀀스 생성 시퀀스를 생성하는 기본 문법입니다. CREATE SEQUENCE 시퀀스명 [START WITH n] [INCREMENT BY n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE] START WITH n 은 시작값을 지정할 때 사용하며, 생략시 1부터 시작합니다. INCREMENT BY n 은 증가값을 지정할 때 사용하며, 생략시 1부터 시작합니다. MAXVALUE n 은 최대값을 지정할 때 사용하며, 생략시 오라클이 자동.. 2022. 5. 15.
[Oracle SQL] DDL - 테이블 변경(ALTER) 및 삭제(DROP) 데이터베이스에서 테이블을 변경하고 삭제하는 방법을 알아보겠습니다. 테이블 삭제 (DROP) 앞서 dept02 테이블과 그 테이블을 참조하는 emp02 테이블을 생성했습니다. 다음과 같이 부모 테이블인 dept02 테이블을 삭제하면 오류가 발생합니다. DROP TABLE dept02; --> 오류 --> ORA-02449: unique/primary keys in table referenced by foreign keys 이때 CASCADE CONSTRAINTS 옵션을 사용해서 삭제하면, 자식 테이블의 외래키 제약 조건도 연쇄적으로 삭제되어 부모 테이블을 삭제할 수 있게 됩니다. DROP TABLE dept02 CASCADE CONSTRAINTS; 테이블 변경 (ALTER) 생성된 테이블의 구조를 변경할 .. 2022. 5. 15.
[Oracle SQL] DDL - 테이블 생성(CREATE), 제약 조건 DDL(Data Definition Language)은 데이터베이스의 구조를 생성(CREATE)하거나 수정(ALTER) 및 삭제(DROP)하는데 사용되는 데이터 정의어입니다. DML과 달리 DDL은 자동으로 COMMIT 되기 때문에 데이터베이스에 즉각 영향을 미치며 데이터베이스 사전(DATA DICTIONARY)에 정보가 저장됩니다. 오라클 데이터베이스는 테이블(table), 인덱스(index), 뷰(view), 시퀀스(sequence), 동의어(synonym)와 같은 여러 개의 데이터 구조를 가지고 있으며, 이를 오라클 객체라고 부릅니다. DDL은 이러한 오라클 객체를 생성하거나 수정 및 삭제할 때 사용합니다. 이 중 가장 중요한 객체인 테이블을 생성하고 수정 및 삭제하는 방법을 알아보겠습니다. 테이블.. 2022. 5. 14.
[Oracle SQL] DML - UPDATE문, DELETE문 이전 글에 이어서 DML에 대해 정리해 보겠습니다. UPDATE문과 DELETE문도 마찬가지로 DML이기 때문에 트랜잭션이 발생되며 반드시 COMMIT 혹은 ROLLBACK을 입력해 트랜잭션을 종료시켜야 합니다. UPDATE 문 데이터를 수정하기 위해 사용합니다. UPDATE 테이블명 SET 컬럼명=변경할값[, 컬럼명2=변경할값2] [WHERE 조건식]; 이전 글에서 만들었던 mydept 테이블에서 40번 부서의 부서명과 지역을 변경해 보겠습니다. 다음과 같이 WHERE절로 변경하고 싶은 레코드를 지정해 주어야 합니다. SELECT문을 사용해 변경된 테이블을 확인할 수 있습니다. UPDATE mydept SET dname='개발', loc='서울' WHERE deptno=40; 서브쿼리를 사용해 서브쿼리.. 2022. 5. 14.
[Oracle SQL] DML - INSERT문 앞서 배운 SELECT문은 DQL(Data Query Language), 질의어로서 데이터를 검색할 때 사용하는 SQL문이었습니다. 이번에는 실제 데이터를 입력(INSERT), 수정(UPDATE), 삭제(DELETE), 병합(MERGE)할 수 있는 DML(Data Manipulation Language), 조작어에 대해 알아보겠습니다. 먼저 데이터를 입력하기 위한 INSERT문입니다. INSERT 문 1. 단일행 INSERT 문 한 번에 하나의 행을 입력합니다. INSERT INTO 테이블명 [(컬럼명, 컬럼명2,...)] VALUES (값, 값2,...); INTO절에 명시한 컬럼의 순서대로 VALUES절에 컬럼값을 지정해야 합니다. INTO절의 컬럼명은 생략할 수 있으며, 생략하면 VALUES절에 모.. 2022. 5. 14.
[Oracle SQL] 서브쿼리 앞서 배운 조인은 하나 이상의 테이블에서 원하는 데이터를 조회할 때 사용하는 방법이었습니다. 이와 달리 서브쿼리는 하나의 SELECT문만으로 원하는 데이터를 조회할 수 없을 때 사용하는 방법으로, 여러 개의 SELECT문을 한 개의 문장으로 합쳐서 원하는 데이터를 조회할 수 있도록 합니다. 서브쿼리를 잘 활용하면 조인을 이용하지 않고도 조인을 한 것과 같은 결과를 출력할 수 있습니다. SMITH가 근무하는 부서와 같은 부서의 사원들을 찾고자 할 때, 기존에는 SELECT문이 두 개가 필요했습니다. SELECT deptno FROM emp WHERE ename='SMITH'; SMITH가 근무하는 부서가 20번임을 확인한 후, 다시 20번 부서에 근무하는 사원을 찾는 것입니다. SELECT ename,de.. 2022. 5. 12.
[Oracle SQL] 조인(join) - ANSI 조인 ANSI 조인은 오라클이 아닌 환경에서도 사용 가능한 표준화된 조인입니다. 1. Natural 조인 (동등 조인) 오라클 조인의 equi 조인과 동일한 기능입니다. 단, 조인하는 테이블들에 반드시 한 개의 공통 컬럼이 있어야 되며, 두 개 이상의 공통 컬럼이 존재할 경우 엉뚱한 실행 결과가 출력될 수 있습니다. SELECT 테이블1.컬럼, 테이블2.컬럼 FROM 테이블1 NATURAL JOIN 테이블2 [WHERE 검색조건]; 어떤 컬럼을 조인시킬 것인지 지정하지 않아도 자동으로 공통 컬럼을 찾아서 조인하게 됩니다. SELECT * FROM emp NATURAL JOIN dept; 오라클 조인에서 동등 조인을 할 때는 컬럼이 총 11개(emp 테이블 8개 + dept 테이블 3개)였습니다. 반면 Natu.. 2022. 5. 12.
[Oracle SQL] 조인(join) - 오라클 조인 지금까지는 하나의 테이블에 대해서만 SELECT문을 사용했습니다. 만일 검색하고자 하는 데이터가 여러 테이블에 분산되어 있는 경우에는 어떻게 해야 할까요? 이때 필요한 것이 조인(join) 기능입니다. 예를 들어 SMITH의 부서명을 알고 싶을 때, 기존에는 emp 테이블과 dept 테이블 두 가지를 모두 확인하는 것이 필요했습니다. 하지만 emp 테이블과 dept 테이블이 공통적으로 가지는 컬럼인 deptno를 이용해서 두 테이블을 연결시켜주면 원하는 정보를 한번에 확인할 수 있게 됩니다. 즉 조인을 통해 여러 테이블들을 하나의 테이블로 합쳐서 사용할 수 있습니다. 이번 글에서는 먼저 오라클에서만 사용되는 오라클 조인을 알아보겠습니다. 1. equi 조인 (동등 조인) 조인 대상이 되는 두 테이블에서 .. 2022. 5. 11.
[Oracle SQL] SQL 함수 - 그룹 함수 GROUP BY, HAVING 그룹 함수를 사용할 때 주의해야 할 사항이 있습니다. SELECT 뒤에 일반 컬럼과 그룹 함수를 동시에 사용할 수 없다는 것입니다. 30번 부서에 속하는 사원들의 이름과 30번 부서의 인원수를 검색하고자 다음의 SQL문을 실행했을 때 오류가 발생하는 것을 확인할 수 있습니다. SELECT ename, COUNT(*) FROM emp WHERE deptno=30; 30번 부서에 속하는 사원은 6명입니다. 이들의 이름을 출력하면 행이 6개인데, COUNT 함수를 통해 출력하는 인원수는 1개의 행입니다. 즉 서로 출력해야 되는 결과의 개수가 달라집니다. 이때 필요한 것이 GROUP BY 절입니다. 1. GROUP BY 절 특정 컬럼값을 기준으로 그룹으로 묶을 때 사용합니다. 기본 문법은 다음과 같습니다. SE.. 2022. 5. 11.
[Oracle SQL] SQL 함수 - 그룹 함수 (SUM, AVG, MAX, MIN, COUNT) 함수는 크게 단일행 함수와 다중행 함수(그룹 함수)로 나뉩니다. 앞서 살펴본 단일행 함수와 달리 그룹 함수는 여러 행 또는 테이블 전체에 함수가 적용되어 하나의 결과를 반환합니다. 1. SUM 함수 null값을 제외한 해당 컬럼 값들의 총합을 구합니다. SUM( DISTINCT | ALL | 컬럼명 ) DISTINCT 키워드는 중복된 값을 제외한다는 것으로, 생략하면 ALL이 기본적으로 적용됩니다. 사원들의 월급의 총합을 구하는 SQL문입니다. SELECT SUM(DISTINCT sal), SUM(ALL sal), SUM(sal) FROM emp; --> 23675 --> 24925 --> 24925 2. AVG 함수 null값을 제외한 해당 컬럼 값들의 평균을 구합니다. AVG( DISTINCT | A.. 2022. 5. 11.