//중복되는 내용이 있을 수 있습니다.
데이터베이스(DataBase)
기업이 지속적으로 유지 관리해야 하는 데이터의 집합
특징: 실시간 접근성, 지속적 변화(데이터베이스에 저장된 데이터는 최신의 정보), 동시 공유, 내용에 대한 참조(데이터베이스내 데티터 레코드들은 주소나 위치에 의해 참조되는것이 아닌 가지고 있는 값에 따라 참조해야한다)
DBMS(Data Base Management System)
데이터베이스 관리 시스템(DataBase Management System)
방대한 양의 데이터를 편리하게 저장하고 효율적으로 관리하고 검색할 수 있는 환경을 제공해주는 시스템 소프트웨어
데이터를 공유하여 정보의 체계적인 활용을 가능하게 합니다.
응용 프로그램과 데이터베이스의 중재자로서 모든 응용 프로그램들이 데이터베이스를 공용할 수 있게끔 관리해 주는 소프트웨어 시스템입니다.
EX)관계형 DBMS(작성과 이용이 쉽고 확장이 용이): 오라클(Oracle), 사이베이스(Sybase), 인포믹스(Infomix), MYSQL, Access, SQL Server
데이터베이스 관리자 계정, 사용자 계정
데이터베이스 관리자(DBA): 데이터 베이스 설계ㅡ 정의, 관리 및 운영 등 데이터베이스 시스템을 관리하고 제어하는 사용자
응용프로그래머: 데이터베이스의 실제적 설계자, 최종 사용자들의 요구에 맞는 인터페이스와 응용 프로그램 개발
최종 사용자(END USER):데이터베이스를 실질적으로 사용
테이블(Table)
관계형 데이터베이스에서 기본 데이터를 저장하기 위한 구조
로우(행), 칼럼(열) 로 구성
SQL(Structured Query Language)
데이터베이스에 저장된 데이터를 조회, 입력, 수정 삭제하는 등의 조작이나, 테이블을 비롯한 다양한 객체(시퀀스. 인덱스 등)를 생성 및 제어하는 역할을 합니다.
SQL의 종류
데이터 정의어(DDL)
데이터베이스 관리자나 응용 프로그래머가 데이터베이스의 논리적 구조를 정의하기 위한 언어로서 데이터 사전(Data Dictionary)에 저장 됩니다.
데이터 조작어(DML)
데이터베이스에 저장된 데이터를 조작하기 위해 사용하는 언어로서 데이터 검색(Retrieval), 추가(Insert), 삭제(Delete), 갱신(Update) 작업 수행 합니다.
데이터 제어어(DCL)
데이터에 대한 접근 권한 부여 등의 데이터베이스 시스템의 트랜잭션을 관리하기 위한 목적으로 사용되는 언어입니다.
DQL: SELECT
DML: INSERT, UPDATE, DELETE
DDL: CREATE, ALTER, DROP, RENAME, TRUNCATE
TCL: COMMIT, ROLLBACK, SAVEPOINT
DCL: GRANT, REVOKE
제약조건(CONSTRAINT)
=>데이터 무결성 제약 조건(Data Integrity Constraint Rule)이란 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 테이블을 생성할 때 각 컬럼에 대해서 정의하는 여러 가지 규칙
제약조건 종류
NOT NULL: NULL을 허용하지 않는다.
UNIQUE: 중복된 값을 허용하지 않는다. 항상 유일한 값
PRIMARY KEY: NULL을 허용하지 않고 중복된 값을 허용하지 않는다.
NOT NULL 조건과 UNIQUE 조건을 결합한 형태
FOREIGN KEY: 부모 테이블의 참조되는 칼럼 값이 존재하면 허용
CHECK: 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만을 허용
외래키 제약조건 설정 시 사용하는 ON DELETE CASCADE 옵션
=부모테이블의 행이 삭제되면 자식 테이블의 행도 삭제된다.
ROLE이란
사용자에게 보다 효율적으로 권한을 부여할 수 있도록 여러 개의 권한을 묶어 놓은 것
여러 사용자에게 권한을 일일히 부여하려면 번거롭기 때문에 롤을 만들어 작업을 간소화할 수 있다.
CONNECT 롤
사용자가 데이터베이스에 접속 가능하도록 하기 위해서 다음과 같이 가장 기본적인 시스템 권한 8가지를 묶어 놓았습니다. (ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION,
CREATE SYNONYM, CREATE TABLE, CREATE VIEW)
RESOURCE 롤
사용자가 객체(테이블, 뷰, 인덱스)를 생성할 수 있도록 하기 위해서 시스템 권한을 묶어 놓았습니다. (CREATE CLUSTER, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER)
데이터 딕셔너리 뷰 중 USER_TABLES
USER_TAB_PRIVS_MADE: 해당 사용자 소유의 오브젝트에 대한 오브젝트 권한 정보
USER_TAB_PRIVS_RECD: 사용자에게 부여된 오브젝트 권한 정보
인덱스에(Index)에 대해 서술하시오.
데이터의 위치정보
데이터베이스의 객체 중 하나, 인덱스의 역할은 검색속도의 향상에 있다 테이블과는 별개의 독립된 객체로 작성되지만 테이블에 의존적이며 기본키나 유일키와 같은 제약조건이 지정되면 따로 인덱스를 생성하지 않더라도 해당 키에대한 인덱스가 자동으로 생성된다.
장점 : 검색속도 증진과 시스템 부하를 줄여 전체적 성능을 향상
단점: 은 인덱스 생성에 시간이 필요하며 인덱스를 위한 추가 공간이 필요하고 검색 외데이터 변경이 빈번히 일어날 경우 성능이 저하될 수 있다.
테이블의 행의 수가 많거나 WHERE문에 특정 컬럼이 많이 사용될 때 NULL을 포함하는 행이 많은 칼럼의 경우 등에 필요하다.
트랜잭션 (Transaction)
데이터 처리의 한 단위입니다.
오라클에서 발생하는 여러 개의 SQL 명령문들을 하나의 논리적인 작업 단위로 처리하는데 이를 트랜잭션이라고 합니다. 하나의 트랜잭션은 All-OR-Nothing 방식으로 처리
여러 개의 명령어의 집합이 정상적으로 처리되면 정상 종료하도록 하고 여러 개의 명령어 중에서 하나의 명령어라도 잘못되었다면 전체를 취소해버립니다.
데이터의 일관성을 유지하면서 안정적으로 데이터를 복구시키기 위해서 사용.
데이터 딕셔너리 (Data Dictionary)에 대하여 서술하시오.
관계형 데이터베이스에서 객체를 정의하게 되면 그 객체가 가진 메타데이터(객체에 대한 정보들-예를들면 테이블 객체일 경우 컬럼, 도메인 및 제약조건에 대한 내용) 의 정보가 저장되는 시스템 테이블
데이터 딕셔너리는 사용자가 테이블을 생성하거나 사용자를 변경하는 등의 작업을 할 때 데이터베이스 서버에 의해 자동으로 갱신되는 테이블로 사용자는 데이터 딕셔너리의 내용을 직접 수정하거나 삭제 할 수 없습니다.
오라클은 사용자가 이해할 수 있는 데이터를 산출해 줄 수 있도록 하기 위해서 데이터 딕셔너리에서 파생한 데이터딕셔너리 뷰를 제공
VIEW
논리적인 가상 테이블
실제 테이블에 저장된 데이터를 뷰를 통해서 볼 수 있도록 합니다.
사용자에게 주어진 뷰를 통해서 기본 테이블을 제한적으로 사용하게 됩니다.
뷰는 이미 존재하고 있는 테이블에 제한적으로 접근하도록 합니다.
뷰를 생성하기 위해서는 실질적으로 데이터를 저장하고 있는 물리적인 테이블이 존재해야 하는데 이 테이블을 기본 테이블이라고 합니다. 데이터를 물리적으로 저장하고 있지 않습니다.
쓰는 이유: 복잡하고 긴 쿼리문을 뷰로 정의하면 접근을 단순화시킬 수 있다. 보안에 유리하다.
Set Operator
두 개 이상의 쿼리 결과를 하나로 결합하는 연산자
여러 개의 select 문을 하나로 연결한다.
집합 연산자로 결합되는 결과의 컬럼은 데이터 타입이
동일해야한다.
union: 합집합, 결합시키는 두 테이블의 중복 데이터는 제거
union all: 결합시키는 두 테이블의 중복 데이터까지 반환
intersect: 여러개의 sql문의 결과에 대한 교집합을 나타내고 중복 행은 하나의 결과로 보여준다.
minus 여러개의 sql문의 결과에 대한 차집합을 나타내고 중복행은 하나의 결과로 보여준다.
TCL (Transaction Control Language)
트랜잭션 제어를 위한 명령어(Transaction Control Language)
COMMIT
모든 작업들을 정상적으로 처리하겠다고 확정하는 명령어로 트랜잭션의 처리 과정을 데이터베이스에 모두 반영하기 위해서 변경된 내용을 모두 영구 저장합니다.
COMMIT 명령어를 수행하게 되면 하나의 트랜잭션 과정을 종료
Transaction(INSERT, UPDATE, DELETE) 작업 내용을 실제 DB에 저장합니다.
이전 데이터가 완전히 UPDATE 됩니다.
모든 사용자가 변경된 데이터의 결과를 볼 수 있습니다.
SAVEPOINT
SAVEPOINT 명령을 써서 현재의 트랜잭션을 작게 분할할 수 있습니다.
저장된 SAVEPOINT는 ROLLBACK TO SAVEPOINT 문을 사용하여 표시한 곳까지 ROLLBACK할 수 있습니다.
여러 개의 SQL 문의 실행을 수반하는 트랜잭션의 경우, 사용자가 트랜잭션 중간 단계에서 세이브포인트를 지정할 수 있습니다.
이 세이브포인트는 차후 롤백과 함께 사용해서 현재 트랜잭션 내의 특정 세이브포인트까지 롤백할 수 있게 됩니다.
ROLLBACK
ROLLBACK은 작업 중 문제가 발생되어서 트랜잭션의 처리 과정에서 발생한 변경사항을 취소하는 명령어입니다.
ROLLBACK 명령어 역시 트랜잭션 과정을 종료하게 됩니다.
ROLLBACK은 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전의 상태로 되돌립니다.
Transaction(INSERT, UPDATE, DELETE) 작업 내용을 취소합니다.
이전 COMMIT한 곳 까지만 복구
조인문 (JOIN)
한 개 이상의 테이블에서 데이터를 조회하기 위해 사용되는 것을 조인이라고 한다.
Equi Join 동일 칼럼을 기준으로 조인합니다.
Non-Equi Join 동일 칼럼이 없이 다른 조건을 사용하여 조인합니다.
Outer Join 조인 조건에 만족하지 않는 행도 나타낸다.
Self Join 한 테이블 내에서 조인합니다.
'✏️ 서술형&면접 준비 > DB' 카테고리의 다른 글
개념정리/기술면접 준비_DB (0) | 2022.08.28 |
---|---|
오라클 DB 기본 SQL문 (0) | 2022.08.28 |