DB/SQL - Oracle 29

[SQL] 날짜 데이터 타입 - date, timestamp

오라클에서 제공하는 날짜 데이터 타입 중 자주 사용하는 타입은 DATE와 TIMESTAMP이다. 보통 날짜 데이터의 경우 사용자가 직접 입력하기 보단 특정 시점에 데이터를 저장할 때 그 시점을 자동으로 저장하는 용도로 많이 사용한다. 그래서 INSERT문으로 데이터를 입력할 때 날짜와 관련된 값은 디폴트값으로 저장하는 경우가 많다. 얼마나 세밀한 데이터가 필요한 지에 따라, 상황에 따라 DATE나 TIMESTAMP를 선택할 수 있다. 사실 이 두 타입 말고도 날짜형 데이터 타입이 더 있긴 하다. 예를 들면, INTERVAL_DAY TO SECOND, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE 등이 있다. DATE DATE 는 연,월,일,시,분,초..

DB/SQL - Oracle 2024.02.19

[SQL] 그룹 함수 (1) ROLLUP(소그룹 간 소계 출력), CUBE(다차원 소계 출력)

먼저, 그룹 함수란 무엇인지 살펴보자. 그룹 합수(Group Funtion)는 테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼 값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수를 말한다. 소계* 및 총계 등을 구하기 위해서 그룹 함수를 사용한다면 단일 DML만으로도 원하는 작업을 할 수 있다. *소계 : 전체가 아닌 어느 한 부분만 계산한 합계 그룹 함수의 유형에는 ROLLUP, CUBE, GROUPING SETS가 있다. 그 중 ROLLUP과 CUBE는 GROUP BY절에서 사용되어 그룹별 소계를 추가로 보여주는 역할을 한다. 이번에 다룰 ROLLUP과 CUBE의 특징을 요약하자면, ROLLUP의 경우 레벨별로, CUBE의 경우 가능한 조합별로 집계를 수행한다. ROLLUP(expr1, expr..

DB/SQL - Oracle 2024.02.18

[SQL] 그룹 함수 (2) GROUPING SETS(특정 항목에 대한 소계 출력)

이번에는 그룹쿼리의 일종인 GROUPING SETS에 대해 다뤄보고자 한다. UNION ALL의 개념이 섞여 있어서 집합 연산자 내용과 함께 보면 좀 더 이해하기 수월한 개념이다. 2024.02.17 - [DB/SQL - Oracle] - [SQL] 집합 연산자 : UNION, UNION ALL, INTERSECT, MINUS [SQL] 집합 연산자 : UNION, UNION ALL, INTERSECT, MINUS SELECT 문으로 반환된 결과를 데이터 집합이라 한다. 이러한 데이터 집합(Set)을 연결하는 역할을 하는 것이 바로 집합 연산자(Set Operator)이다. 먼저 각 개념에 대해 살펴보고 예시를 통해 유의사항 bio-logisch.tistory.com 그룹 함수에 대한 개념과 앞서 다룬 ..

DB/SQL - Oracle 2024.02.18

[SQL] 집합 연산자(Set Operator) - UNION, UNION ALL, INTERSECT, MINUS

SELECT 문으로 반환된 결과를 데이터 집합이라 한다. 이러한 데이터 집합(Set)을 연결하는 역할을 하는 것이 바로 집합 연산자(Set Operator)이다. 먼저 각 개념에 대해 살펴보고 예시를 통해 유의사항에 대해서도 함께 다뤄보고자 한다. 집합 연산자의 개념과 특징 집합 연산자는 두 개 이상의 테이블에서 여러 개의 질의의 결과를 연결하여 하나로 결합하는 연산자를 말한다. 데이터 집합이 대상이므로 집합 연산자를 사용할 때 데이터 집합의 수는 한 개 이상을 사용할 수 있다. 즉, 여러 개의 SELECT문을 연결해 또 다른 하나의 쿼리를 만드는 역할을 한다고 볼 수 있다. 집합 연산자는 수학의 집합 개념과 같고, 합집합은 UNION, 대상 집합에서 중복된 건까지 모두 포함한 합집합은 UNION ALL..

DB/SQL - Oracle 2024.02.17

[SQL] Sub-Query(서브쿼리) - 스칼라, 인라인 뷰, 중첩 서브쿼리

서브 쿼리(Sub-Query)란, 한 쿼리문 안에 포함된 또 다른 SELECT 문을 의미한다. 최종 결과를 출력하는 쿼리를 메인쿼리라고 한다면, 이를 위한 중간 단계 혹은 보조 역할을 하는 SELECT문을 서브쿼리라 한다. ***메인쿼리는 SELECT문 외에도 INSERT, UPDATE, MERGE, DELETE문도 가능하다. 하지만 서브쿼리는 SELECT문만 가능하다. 서브쿼리의 특징 메인쿼리와 서브쿼리의 관계는 주종 관계로서, 서브쿼리에 작성된 컬럼명은 메인쿼리의 컬럼명을 가져와서 사용할 수 있으나 그 역은 성립하지 않는다. 하나의 SQL 문을 기준으로 메인쿼리를 제외한 나머지 모든 SELECT문을 서브쿼리로 보면 된다. 하나의 메인쿼리 안에는 1개 이상의 서브쿼리를 사용할 수 있다. (물론 필요없으..

DB/SQL - Oracle 2024.02.16

[SQL] 조인(JOIN) - Inner join, outer join, cross join

조인(JOIN)은 두 개 이상의 테이블(뷰나 서브쿼리와 같은 논리 테이블 포함)을 연결하여 데이터를 검색하는 방법이다. 두 개 이상의 릴레이션(테이블)로부터 '관련된 튜플들'을 결합하여 하나의 튜플로 만드는 가장 대표적인 데이터 연결 방법이다. 여기서 포인트는 '관련된 튜플들'이라는 점이다. 조인의 전제조건으로는 연결하려는 테이블에 각각 '관련된 튜플들', 즉 매칭되는 컬럼이 있어야 한다. 예를 들어, 회원 테이블에 있는 회원명 컬럼과 자동차 등록정보 테이블에 있는 소유주명 컬럼과 같이 값이 사람의 이름이며, 조인 시 관련 튜플로서 연결될 수 있는 컬럼을 기준으로 조인할 수 있는 것이다. 조인의 종류 조인은 크게 논리적 조인과 물리적 조인으로 구분된다. 분류 설명 유형 예시 논리적 조인 사용자 SQL 문..

DB/SQL - Oracle 2024.02.16

[SQL] DML(데이터 조작어) - select *order by* 정렬 + ASCII(아스키코드) + UNICODE(유니코드)

SQL 종류 1. 데이터를 정의하는 쿼리 - DDL(데이터 정의어) : create, drop, alter, truncate 2. 데이터를 조작하는 쿼리 - DML(데이터 조작어) : insert, select, update, delete 3. 데이터를 제어하는 쿼리 - DCL(데이터 제어어) : grant, revoke 4. 트랜잭션 제어하는 쿼리 - TCL(트랜잭션 제어어) : commit, rollback, checkpoint SELECT에 대한 기본적인 내용은 아래 글을 참고해주세요! 2024.02.02 - [DB/SQL - Oracle] - [SQL] DML(데이터 조작어) - select [SQL] DML(데이터 조작어) - select SQL 종류 1. 데이터를 정의하는 쿼리 - DDL(데이..

DB/SQL - Oracle 2024.02.16

[SQL] DML(데이터 조작어) - select *group by, having* 그룹화

SQL 종류 1. 데이터를 정의하는 쿼리 - DDL(데이터 정의어) : create, drop, alter, truncate 2. 데이터를 조작하는 쿼리 - DML(데이터 조작어) : insert, select, update, delete 3. 데이터를 제어하는 쿼리 - DCL(데이터 제어어) : grant, revoke 4. 트랜잭션 제어하는 쿼리 - TCL(트랜잭션 제어어) : commit, rollback, checkpoint SELECT에 대한 기본적인 내용은 아래 글을 참고해주세요! 2024.02.02 - [DB/SQL - Oracle] - [SQL] DML(데이터 조작어) - select [SQL] DML(데이터 조작어) - select SQL 종류 1. 데이터를 정의하는 쿼리 - DDL(데이..

DB/SQL - Oracle 2024.02.16

[SQL] 뷰(VIEW)의 생성과 삭제 그리고 장단점

뷰(VIEW)는 논리적인, 가상의 테이블을 말한다. 즉, 실제 데이터를 저장하지 않고 쿼리 결과를 가상의 테이블 형태로 제공하는 논리 테이블이라고 보면 된다. 뷰는 실제 존재하는 물리 테이블로부터 생성될 수 있으며 다수의 테이블 또는 다른 뷰를 이용해서 만들 수 있다. VIEW의 장점 VIEW는 데이터베이스의 저장 공간을 차지하지 않으면서, 또한 데이터베이스에 어떠한 영향을 주지 않으면서도 애플리케이션이 원하는 형태로 데이터에 접근할 수 있게 해준다. 또한 복잡한 쿼리나 자주 사용되는 데이터를 간단하게 조회할 수 있는 방법을 제공한다. 예를 들어, 여러 테이블을 조인하여 필요한 데이터를 가져오거나, 특정 조건에 따라 필터링된 데이터를 조회할 수 있다. 하나의 뷰에 여러 개의 테이블에 대한 데이터가 담겨 ..

DB/SQL - Oracle 2024.02.15

[SQL] DCL(데이터 제어어) - grant, revoke

SQL 종류 1. 데이터를 정의하는 쿼리 - DDL(데이터 정의어) : create, drop, alter, truncate 2. 데이터를 조작하는 쿼리 - DML(데이터 조작어) : insert, select, update, delete 3. 데이터를 제어하는 쿼리 - DCL(데이터 제어어) : grant, revoke 4. 트랜잭션 제어하는 쿼리 - TCL(트랜잭션 제어어) : commit, rollback, checkpoint 데이터 제어어(DCL)의 유형에는 GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT(=CHECKPOINT)가 있다. 그런데 위와 같이 분류한 이유는 COMMIT, ROLLBACK, SAVEPOINT(=CHECKPOINT)가 DCL(데이터 제어어)라고..

DB/SQL - Oracle 2024.02.15