Rdbms 12

[Etc] 실행 계획

# 실행 계획- 셀렉트문을 통해서 데이터를 찾는 경로를 뜻한다.- 쿼리문에서 f10 단축키를 통하여 확인할 수 있다.- 아래 사진의 Options 항목의 By User Rowid는 해당 셀렉트문이 데이터를 찾은 방식을 가르킨다.  ​[예시] Full Scan 방식이 되는 경우- unique 혹은 primary key가 있는 컬럼은 index가 자동으로 생성된다.- 인덱스가 걸려있는 컬럼에 함수를 사용하면 Full Scan 방식으로 셀렉트문이 동작한다.- 대용량이 존재하는 테이블에서는 주의해야 한다.select * from employees where to_number(employee_id) = 100;     [예시] 데이터 분포와 SCAN 방식- 아래의 두 쿼리는 서로 다른 값을 검색한 결과이다.쿼리 ..

Rdbms/Etc 2025.01.10

[Etc] Database

# DB- Database, 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 정보- 데이터의 체계적인 집합이며 공유하고 사용할 목적으로 관리되는 정보 # RDBMS- Relational Database Management System, 관계형 데이터베이스 관리 프로그램을 뜻한다.- 관계형 데이터베이스는 2차원 형식의  행과 열 (row, col) 의 데이터가 테이블이라는 공간에 저장되는데- 이러한 데이터Q를 관계형 데이터라고 부른다. - 반대로, 비관계형 데이터에는 대표적으로 JSON (Javascript Object Notation) 이 있다. # Sql- Structred Query Language​- 관계형 데이터베이스의 데이터를 관리할 용도로 설계된 프로그래밍 언어이다.Sql은 Rdbms에서 데이터..

Rdbms/Etc 2025.01.10

[Database] 제약 조건

# 제약 조건- 테이블 내 잘못된 데이터가 입력되지 않게 막기위한 규칙- 생성 시 명칭이 따로 지정하지 않으면 오라클에서 임의의 명칭으로 생성한다.constraintsindexindex columnselect * from user_constraintswhere table_name = '테이블명';select * from user_indexeswhere table_name = '테이블명';select * from user_ind_columnswhere table_name = '테이블명';특정 컬럼의 제약조건 확인인덱스 확인어떤 인덱스가 어떤 컬럼에 있는지 확인​(1) primary key- 테이블 내 대표 컬럼 값임을 나타내는 키 (기본키이자 아이덴티티가 되는 고유 값)- 중복 값이나 null을 허용하지 ..

Rdbms/Database 2025.01.10

[Database] 인덱스

# 인덱스- 색인이라고도 부르며, 데이터가 어디에 있는지에대한 정보를 가진 객체를 뜻한다.- 색인은 데이터의 고유 주소 정보가 담겨있으며, 이를 통해 table을 전부 찾아가는 방식보다 더 빠르게 찾는 것이 가능하다. ​[예시] 색인이란- 색인은 책의 목차 개념과 비슷하다.- 책 속에서 특정 내용을 찾고자하는 경우, 목차를 통해서 페이지 번호를 찾아가는 방식으로 정보를 찾는다. (1) Index Scan- 목차를 통해서 정보를 찾는 방식 (2) Full Scan- 페이지를 한장 씩 넘겨서 정보를 찾는 방식 [결론] 검색하는 데이터의 양이 전체 중 큰 비중을 차지하는 경우 Full Scan 이, 적은 경우 Index Scan이 유리하다.​  # 사용 조건사용해도 되는 경우사용하면 안되는 경우(1) 테이블의..

Rdbms/Database 2025.01.10

[Database] Transaction

# 트랜젝션- DML를 하나로 묶어서 처리하는 논리적 작업 단위- insert, update, delete, merge 작업이 해당된다.- 트랜젝션 상태는 영구 반영이 되지 않은 상태로 commit, rollback등의 명령어로 완료 처리를 해야한다. [예시] 트랜젝션이란- 상단의 인서트문을 통해서 IT부서가 삽입되었고, 셀렉트문 조회 시 사진처럼 삽입된 결과가 보인다.- 이를 작업 단위를 트랜젝션이라고 부른다.- 화면 상에서만 수정된 결과가 보이지만 수정이 영구 반영되지 않은 상태이므로 commit으로 작업을 완료해야한다.insert into dept values ('60', 'IT',606); # TCL 명령어명령어설명commit트랜젝션  상태가 종료되며, DML 작업의 변경 내용을 영구히 저장rol..

Rdbms/Database 2025.01.10

[Database] 데이터베이스 저장 구조

# 데이터베이스 저장 구조논리적 (logical)물리적 (physical)설명databaseOS (data file)다수가 사용하기위한 목적으로 설계된 데이터의 저장 공간tablespaceData File- 객체(object)를 저장하는 공간으로 파티션의 개념을 가진다.- 객체는 테이블, 인덱스, 프로시저, 뷰 등을 뜻한다.​- database에는 여러 tablespace가 저장된다.- tablespace는 1:다수의 관계로 여러 data file로 구성된다.​​(1) data file 구성- OS block으로 구성되어 있으며 대부분 8k (Block내 8천개의 Row 존재) 이다.​(2) tablespace의 구성- segment, extent, block으로 구성되어있다.segment(table)​..

Rdbms/Database 2025.01.10

[Database] Grant

# 권한권한이란 특정 쿼리문을 수행할 수 있는 권리를 뜻한다. ​종류- system 관련 권한은 DB에 영향이 미치는 권한이며, 객체 권한은 객체를 사용할 수 있는 권한을 의미한다.권한설명connectDB에 접속할 수 있는 권한alter session환경 변수를 변경할 수 있는 권한unlimited tablespaceDB안에 있는 모든 tablespace를 사용할 수 있는 권한resource객체 및 데이터 조작 권한dba테이블에 대한 접근 권한 권한 부여- 직접 부여와 role이라는 덩어리의 형태로 부여하는 방식 두가지가 존재한다.- role이란, DB엔지니어가 특정 용도를 위해서 남겨둔 권한 묶음을 뜻한다.- 기본적으로는 유저 생성 시 create session, create table 두가지의 권한이..

Rdbms/Database 2025.01.10

[Sql] Rowid

# Rowid- 데이터베이스 내 데이터 공유의 주소로서, 이 값을 검색하여 데이터에 접근할 수 있다.​- 데이터베이스에서 각 데이터의 고유한 주소를 의미한다.- 총 18자리(10byte)의 구조로 생성된다. select employee_id, rowid, last_name,  from employees;[예시] Rowid의 구조 AAAEAbAAEAAAADNAAA- 위 Rowid는 employee_id 100번의 주소를 뜻한다.- Rowid를 확인할 수 있다는 것은 해당 데이터를 접근 할 수 있음을 뜻한다.​# 1 Object Number- 해당 데이터가 속하는 번호값, 오브젝트마다 고유값을 가지고있다.​# 2 Data File Number- 오라클의 테이블 스페이스는 여러개의 데이터파일을 생성할 수 있다..

Rdbms/Sql 2025.01.10

[Sql] Join

# Join- 테이블 간 서로 같은 조건의 값을 맵핑하여 조회하는 셀렉트문의 기능- 데이터의 관리와 유지보수 효율을 높이는데 목적 [예시] Join 관계# employees & departments ​- 직원과 사원 양 테이블에는 department_id라는 동일한 명칭의 컬럼이 존재한다.- 부서에서 해당 값은 유일 값이며 사원 테이블에서 이 값은 중복이 허용되는 값으로 둘은 서로 동일한 개념의 값이다.- 이러한 조건 하에서 Join은 양 테이블간의 관계를 묶는 역할을 한다. # 카다시안의 곱- 조인의 조건이 생략되었거나 조건 절을 잘못 묶은 경우 발생한다. - 카다시안의 곱이 발생하면 경우의 수처럼 테이블에 존재하는 모든 행 갯수를 곱한만큼의 결과 값이 반환된다.- 특히 카다시안의 곱은 시스템 상의 오..

Rdbms/Sql 2025.01.10

[Sql] Select

# Select- DQL(Data Query Language)문이라고도 한다.- 검색문으로서 테이블에서 특정 데이터를 검색할 때 사용한다.- *는 테이블내의 모든 컬럼의 데이터를 출력한다는 뜻이다.- Ctrl + Enter로 문장의 실행이 가능하다. select * from 테이블명;​[참고] Sql 문장은 ; 표시로 쿼리문이 종료됨을 표현한다.  [예시] DB 내 전체 유저 조회- username, user_id 등의 세로 영역을 컬럼, 가로 행의 영역을 로우라고 부른다.- 컬럼과 로우의 교차 영역은 데이터로서 필드 값이라고 부른다.select * from dba_users; # 셀렉트문의 기능- 셀렉트문은 기본적으로 PROJECTION, SELECTION, JOIN의 기능이 있다. (1) Projec..

Rdbms/Sql 2025.01.10