본문 바로가기

Database75

DBMS_RANDOM 패키지 DBMS_RANDOM패키지를 사용하면 숫자와 문자 랜덤 데이터를 생성할 수 있으며, 테이블 데이터를 랜덤 한 순서로 정렬하여 조회할 수 있다. 1. DBMS_RANDOM.VALUE - 랜덤하게 숫자를 추출하는 함수이다. - DBMS_RANDOM.VALUE( min IN NUMBER, max IN NUMBER)와 같은 문법으로 사용한다. SELECT DBMS_RANDOM.VALUE(1,100) FROM DUAL CONNECT BY LEVEL 2021. 5. 16.
[oracle] db review 데이터베이스를 다루면서 혹은 SQL문을 작성할 때 무의식 적으로 실수하는 경우가 발생했다. 복습을 한번~ 1. Index Suppressing Error는 인덱스를 구성하고 있는 칼럼에 대한 함수의 적용 , 칼럼의 변형, 계산식 등으로 인해 기존의 칼럼이 변형되어 인덱스를 타지 못하는 상태이다. 의식하지 못하는 에러는 묵시적 형변환 시 속도가 느려질 수 있는데, 그 이유는 해당 칼럼에 인덱스가 생성되어 있는 경우 묵시적 형 변환이 생기면 그 인덱스를 사용하지 못하게 됨으로 써 인덱스를 타지 못하는 Index Suppressing Error가 발생하기 때문이다. 2. 집합연산자 사용 시 UNION, INTERSECT, MINUS는 결과를 정렬하여 출력한다. 그렇기에 의도치 않은 성능 저하가 발생할 수 있음.. 2021. 5. 15.
파일 구조(file organization) 보호되어 있는 글 입니다. 2021. 5. 2.
조인 수행원리 조인이란 두 개 이상의 테이블을 하나의 집합으로 만드는 연산이다. 테이블 또는 조인 결과를 이용하여 조인을 수행할 때 조인 단계별로 다른 조인 기법을 사용할 수 있다. 예를 들어 A, B, C 3개의 테이블을 조인한다고 했을 때 (A JOIN B) -> ((A JOIN B) JOIN C)와 같이 2번의 조인 연산이 이루어진다. 이때 각각 다른 조인 기법을 사용할 수 있는 것이다. 많이 사용되는 조인 기법을 알아보자 NL JOIN NLJOIN은 프로그래밍에서 사용하는 중첩된 반복문과 유사한 방식으로 조인을 수행한다. 반복문의 외부에 있는 테이블을 선행 테이블이라고 하고 반복문 내부에 있는 테이블을 후행 테이블이라고 한다. 먼저 선행테이블의 조건을 만족하는 행을 추출하여 후행 테이블을 읽으면서 조인을 수행한.. 2021. 5. 1.
인덱스의 기본 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념이다. 인덱스는 테이블을 기반으로 선택적으로 생성할 수 있는 구조이다. 테이블에 인덱스를 하나만 생성해도 되고 여러 개를 생성해도 된다. 인덱스의 기본적인 목적은 검색 성능의 향상이다. 즉 검색조건을 만족하는 데이터를 인덱스를 통해 효과적으로 찾을 수 있도록 돕지만 insert, update, delete와 같은 연산에는 인덱스의 삽입, 수정, 삭제가 일어나기 때문에 추가적인 비용이 들어가게 되어 trade-off가 발생된다. Table Scan 종류 FULL TABLE SCAN - 전체 테이블 스캔방식으로 데이터를 검색한다는 것은 기본적으로 테이블에 존재하는 모든 데이터를 읽어가면서 조건에 맞으면 결과로써 추출하고 조건에 맞.. 2021. 5. 1.
실행계획 (Execution Plan) 실행 계획 - SQL에서 요구한 사항을 처리하기 위한 절차와 방법을 의미한다. 실행계획을 생성한다는 것은 SQL을 어떤 순서로 어떻게 실행할지를 결정하는 작업이다. 옵티마이저는 다양한 처리방법들 중에서 가장 효율적인 방법을 찾아 주는데 실행 계획을 보고 SQL문이 어떻게 실행되는지 정확이 이해할 수 있다면 보다 향상된 SQL의 이해 및 활용이 가능할 것이다. 실행계획을 구성하는 요소에는 조인 순서(JOIN ORDER), 액세스 기법(ACCESS METHOD), 최적화 정보 (Optimization Information) , 연산 (Operation) 등의 있다. 조인 순서 - 조인 작업을 수행할 때 참조하는 테이블의 순서를 의미한다. 논리적인 조인 순서는 n! 만큼 존재한다. 여기서 n은 FROM절에 존.. 2021. 5. 1.
SQL 최적화의 기본원리 데이터베이스를 활용해 애플리케이션을 만드는 것은 애플리케이션 개발에 있어서 큰 한 부분을 차지한다. 하지만 데이터베이스의 기초지식없이 단지 원하는 데이터를 가져오기 위한 복붙과 복잡한 SQL 쿼리로 데이터만을 가져오는데 집중하다 보면 나중에 커다란 대가를 치르게 될지도 모른다. 내가 DBA를 진로로 삼지않았지만 그래도 공통적인 부분에 대해선 공부를 하고 가는 게 맞다고 생각해 SQLD를 공부하면서 최적화에 대해 나중에 찾아볼 수 있도록 글을 남긴다. 옵티마이저의 실행 계획 1. 옵티마이저(Optimizer) - 옵티마이저라는 단어는 IT카톡방이든 네이버든 구글이든 최적화에 관련해 검색을 할때 빠지지 않고 나오는 부분이다. 이 옵티마이저는 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을.. 2021. 5. 1.
절차형 SQL 일반적인 개발 언어처럼 SQL에도 절 자치 향적인 프로그램이 가능하도록 DBMS 벤더별로 PL(Procedural Language)/SQL : ORACLE SQL/PL : DB2 T-SQL : SQL SERVER 등의 절차형 SQL을 제공하고 있다. 절차형 SQL을 이용하면 SQL 문의 연속적인 실행이나 조건에 따라 분기 처리를 이용하여 특정 기능을 수행하는 저장 모듈인 Procedure, User Defined Function, Trigger가 있다. 여기선 ORACLE에서 제공하는 PL/SQL만을 다뤄본다. PL/SQL 특징 오라클의 PL/SQL은 BLOCK 구조로 되어 있고, BLOCK 내에는 DML문장, Query 문장 그리고 절차형 언어(IF, LOOP) 등을 사용할 수 있으며, 절차적 프로그래.. 2021. 5. 1.
DCL(Data Controll Language) DCL을 많이 다룰 필요가 없어 공부를 소홀히 하다가 이번에 SQLD공부를 하면서 한번 정리를 해볼 생각이다. DCL 개요 - DML , DDL을 제외하고 유저를 생성하고, 권한을 제어할 수 있는 명령어입니다. 유저와 권한 - 다른 부서 간에 또는 다른 회사 간에 데이터를 공유하기 위해 데이터베이스를 오픈해야 하는 경우 새로운 유저를 생성하고, 생성한 유저에게 공유할 테이블이나 기타 오브젝트에 대한 접근 권한만을 부여한다면 공유가 가능해질 것이다. ORACLE을 기준으로 제공해주는 기본 유저들이 존재한다. SCOTT : 테스트용 샘플 유저이며 Defalut pwd : TIGER SYS : DBA ROLE을 부여받은 유저 SYSTEM : 데이터베이스의 모든 시스템 권한을 부여받은 DBA유저이다. ORACL.. 2021. 5. 1.
그룹함수 (2) chinggin.tistory.com/494 그룹 함수 (1) ANSI/ISO SQL 표준은 데이터 분석을 위해서 다음 세 가지 함수를 제공한다. 1) AGGREGATE FUNCTION GROUP AGGREGATE function이라고도 부르며 count, sum, avg, max, min 등등 의 각종 집계 함수 등이 포함된다... chinggin.tistory.com 을 이어서 WINDOW 함수에 대해서 알아보려고 한다. WINDOW FUNCTION 기본 관계형 데이터베이스는 칼럼과 칼럼 간의 연산, 비교, 연결이나 집합에 대한 집계는 쉬운 반면 행과 행간의 관계를 정의하거나, 행과 행간의 비교, 연산하는 것을 하나의 SQL문으로 처리하는 것은 매우 어려운 문제였다. PL/SQL과 같은 절차형 프로그.. 2021. 5. 1.