Oracle 기초 # 스피드 퀴즈: DB 기초 이론~Join

codePark·2020년 6월 16일
1

Oracle

목록 보기
9/23

SQL의 약자와 그 의미는?

Structured Query Language. 즉 구조화된 질의 언어라는 의미이다.
//보충: Database에서 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색 언어이다.

DBMS의 종류를 3가지 이상 열거하라. 그 중 Oracle은 어떠한 종류의 DBMS이며 이는 어떠한 특징을 가지는가?

Relational Database Management System(RDBMS) 관계형 DBMS,
Object-Oriented Database management system 객체지향형 DBMS,
Hierarchical Database management System 계층구조 DBMS 등이 있으며,
Oracle은 RDBMS에 포함된다. RDBMS는 각 테이블은 테이블간 관계되어 있다는 것에 기반하여 데이터를 조회 및 관리한다.

DB가 파일 저장을 통한 데이터 관리 방식보다 나은 이유는 무엇인가? 또한 이에 비해 DB를 통한 데이터 관리의 장점은 무엇인가?

파일 저장을 통한 데이터 관리 방식은 시공간적 낭비가 발생하고, 모든 데이터에 동일한 보안성을 유지하기 어렵고, 무엇보다 데이터의 무결성을 유지할 수 없다는 부분에서 문제가 있다. 그러나 DB의 경우 :

무독보편

  • 중복을 최소화하여 데이터의 무결성을 유지할 수 있다.(중복 최소화, 데이터 무결성)
  • 데이터와 응용프로그램의 분리를 통해 상호 영향의 정도를 감소(데이터 독립화)
  • DBMS를 통한 접근 통제 및 데이터의 암호화 가능(데이터 보안 향상)
  • 다양한 방법의 데이터 백업 및 복구가 가능(관리 편의성 향상)

DB의 정의와 특징은? (총 8가지)

정의: OSIS

  • 목적에 의해 운용되는(Operational)
  • 디바이스에 저장된(Stored)
  • 통합된 (Intergrated, 중복이 제거된 또는 최소화된)
  • 공동으로 사용되는 (Shared)

특징: RCRC

  • Real-Time Accessibility: 실시간 접근 가능
  • Concerrent sharing: 동시 공유
  • Reference by Content: 값에 의한 참조
  • Continuous Change: 지속적으로 변화되는

DB언어의 분류와 역할, 대표 명령어를 열거하라.

  • DDL data definition language 데이터 정의어
    쉽게 말해, 테이블 만들 때 쓰는 애들. create, drop, truncate, alter 등

  • DML + DQL data manipulation language + data query language
    데이터 조작어 + 데이터 쿼리어 (CRUD의 수행)
    Insert, Update, Delete 등

  • DCL + TCL data control language + transaction control language
    데이터 제어어 (grant:권한 부여, revoke: 권한 회수 등)
    트랜잭션 제어어 (commit, rollback, savepoint)

SQL에는 commit이 자동으로 이루어지는 경우도 있고, 사용자가 명시적으로 commit해야만 하는 경우도 있다. 각각의 SQL의 종류를 설명하라.

DML은 사용자가 명시적으로 commit해야 해당 트랜잭션이 반영된다.
그에 반해 DDL은 자동으로 commit이 이루어진다.

Clause의 작성순서와 처리 순서를 정확히 나열하라.

작성 순서: SFWGHO, select from where group by having order by
실행 순서: FWGHSO, from where group by having select order by

각 Clause가 수행하는 역할과 대표적인 용법을 설명하고, 대표적인 명령어를 나열하라.

From - 대상 테이블을 선언한다.
Where - 테이블 내에 존재하는 실제 값을 대상으로 조건문을 실행하고 필터링한다.
(between A and B, in, not in, is null, is not null 등)
Group by - 컬럼 또는 값을 그룹으로 묶어 처리하도록 한다.
(rollup, cube)
Having - 그룹으로 묶인 컬럼/값 또는 그룹 함수가 적용되어 도출된 값을 대상으로 조건문 실행 및 값을 필터링한다.
(where와 동일, 단 적용 대상이 다름(그룹단위))
Select 조회할 대상 컬럼/값을 선언한다
Order by 출력할 결과를 asc 또는 desc로 정렬한다.

Numeric Function, Character Function, Date Function, Conversion Function, Conditional Expression/Statement의 문법과 쓰임을 나열하라.

  1. Conditional: decode, case
  2. Aggregate Function: max, min, avg, sum, count
  3. Conversion Function: to_char, to_number, to_date
  4. Single-Row Function:
    4-1. Char/lpad, rpad, ltrim, rtrim, concat, substr...
    4-2. date/extract, months between
    4-3. Numeric/ (보충 필요)

Oracle의 데이터 타입과 그 선언법을 나열하고, 각 데이터타입의 최대 크기를 설명하라.

  1. Number(size) 정형화된 Numeric 타입.
  2. Varchar(size) 가변의 Numeric 타입. 최대 크기는: 4000byte
  3. Char(size) 문자타입. 최대 크기는: 2000byte
  4. Date(date) 날짜 타입.
  5. CLOB, BLOB... CLOB: 4GB

Oracle XE와 타 Oracle의 차이를 2개 이상 설명하라.

  1. Oracle XE에서는 데이터 베이스를 1개만 생성 가능
  2. Char타입 크기 인식시 unicode 문자는 개당 3byte 취급 (기존 2byte)

where절과 having절의 차이를 설명하라.

조건문을 반영하는 구절이라는 점에서는 같지만, where 절은 테이블에 존재하는 실제값을 대상으로 조건문을 대입하고, having절은 그룹으로 묶인, 또는 그룹 함수(Aggregate Functions)를 통해 도출된 값울 대상으로 조건문을 대입한다는 차이가 있다.

group by절에서 데이터의 소계와 총계를 내는 방법 2가지를 설명한 후, 그 차이점을 명확히 설명하라.

하나의 Column을 대상으로 다음 두 가지의 방법을 사용하는 경우 리턴되는 값은 다르지 않다. 두 방법 모두 해당 Column의 총계를 하나의 행으로 산출하여 리턴한다. 단, 다수의 Column을 대상으로 사용하게 되면 결과값은 달라지게 된다.
1. rollup:
계층구조 기반이다. 즉, 선언된 Column의 순서가 매우 중요하며 먼저 선언된 Column일 수록 그 중요도가 높아진다. 예를 들어 첫 번째 순서로 선언된 Column의 경우 모든 경우의 소계와 합계에 포함되지만, 가장 마지막으로 선언된 Column의 경우 합계에만 그 값이 대입된다.

  1. cube: 모든 경우의 수를 리턴한다. 즉, 선언된 Column의 순서와는 상관없이 선언된 Column간 모든 조합에 대한 소계와 총계를 리턴한다.

group by에서 도출한 소계/총계의 행이 (null)로 표기될 때 이를 직접 지정한 값으로 바꾸려면 어떻게 해야하는가? 간단한 코드를 작성하고 원리를 설명하여라.

grouping과 decode를 사용한다.
먼저 grouping(ColumnName)을 선언하게 되면 해당 Column이 행들에서 rollup/cube로 산출한 소계와 총계가 무엇인지 판별할 수 있다.(산출된 소계/총계인 경우 grouping 결과 1 리턴, 그 외의 경우 0 리턴) 그 위에 다시 decode를 선언하여 grouping이 리턴한 결과가 1인 경우 소계/총계명을 직접 선언하여 대체하고, else 값에 해당하는 부분에 해당 ColumnName을 다시 적어주면 소계/총계명만 깔끔하게 변경할 수 있다.

join과 union의 차이를 설명하라.

join은 행(row)과 행간의 결합, union은 열과 열과의 결합을 다룬다.

join의 종류를 Standard 기준 2가지, 문법 기준 2가지, 쓰임에 따라 총 6가지로 분류한 후 설명하여라.

  1. ANSI Standard/ Oracle Standard
  2. Equi-Join/Non Equi-Join
  3. inner join, left outer join, right outer join, full outer join, cross join (cartesian product), self join
profile
아! 응애에요!

0개의 댓글