dongdorodongdong
JOIN정의 - 두 개 이상의 테이블을 하나의 집합으로 만드는 연산 - FROM 절에 나열된 모든 테이블이 join 될 때 까지 반복 수행 종류 - NL JOIN - Sort Merge JOIN - Hash JOIN NL JOIN (Nested Loop Join)특징 - 랜덤 방식으로 데이터를 엑세스 하기 때문에 처리 범위가 좁은 것이 유리 - 선행 테이블의 조건을 만족하는 모든 행의 수 만큼 반복작업을 실시 (결과 수가 적은 테이블을 선행테이블로 선정하는 것이 좋음) - Sort-Merge, Hash Join과는 다르게 OLTP 목록 처리 업무에 많이 사용 - Join 컬럼에 적당한 인덱스가 있어서 Natural Join이 효율적일 때 유용 - Unique Index를 활용하여 수행시간이 적게 걸리는 ..
인덱스 특징 - 원하는 데이터를 쉽게 찾을 수 있도록 돕는 것 (책의 찾아보기와 유사) - 검색(조회) 성능의 최적화가 목표 - 동일 컬럼으로 구성된 인덱스를 중복으로 생성X (컬럼의 순서가 다른 것은 서로 다른 인덱스로 취급) - 기본 인덱스에 중복된 키값, NULL 값 X - 자주 변경되지 않는 컬럼이 좋은 인덱스 후보 - 테이블의 전체 데이터를 읽는 경우는 인덱스가 거의 불필요 - 대량의 데이터를 삽입할 때는 모든 인덱스를 제거하고 데이터를 입력 - 인덱스를 구성하는 컬럼의 순서는 성능에 영향을 줌 - DML 처리 성능을 저하 시킬 수 있음 - 인덱스를 구성하지 않는 컬럼의 데이터가 UPDATE될 때는 인덱스로 인한 부하가 발생하지 않음 종류 - 트리 기반 인덱스 - 클러스터형 인덱스 (SQL Se..
옵티마이저 (Optimizer)정의 - 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할 수행 (실행방법 : Execution plan) - 옵티마이저가 선택한 실행 방법의 적절성 여부는 쿼리 수행 속도에 가장 큰 영향을 미침 - 현재는 비용기반 위주로 신규 기능에 지원 방법 - 규칙기반 옵티마이저 (RBO, Rule Based Optimizer) - 비용기반 옵티마이저 (CBO, Cost Based Optimizer) 규칙기반 옵티마이저 (RBO)특징 - 규칙(우선순위)를 가지고 실행계획을 생성 - 되도록이면 인덱스를 사용하는 실행계획을 생성 - 참조하는 정보에는 인덱스 유무, 인덱스 종류, 연산자의 종류, 참조하는 객체의 종류 등 - 인덱스를 이용한 엑세스 방식이 전체 테이블 엑세스 ..
개요특징 - SQL에도 절차 지향적인 프로그램이 가능하도록 제공 - SQL문의 연속적인 실행이나 조건에 따른 분기처리를 이용하여 특정 기능을 수행하는 모듈 생성 가능(Procedure, User Defined Function, Trigger) 종류 - Oracle : PL/SQL - DB2 : SQL/PL - SQL Server : T-SQL PL/SQL특징 - 절차적 프로그래밍을 가능하게 하는 트랜잭션 언어 - Block 구조로 되어있고 Block 내에는 DML 문장과 Query문장, 그리고 절차형 언어(IF, LOOP) 등을 사용 - 다양한 저장모듈(Stored Module) 개발 가능 - 변수, 상수 등을 선언하여 SQL문장 간 값을 교환 - Oracle에 내장되어 있으므로 Oracle 및 PL/S..
정의Data Control Language유저를 생성하고 권한을 제어할 수 있는 명령어 유저, 권한Oracle - 유저를 통해 DB에 접속하는 형태 - ID, PW를 통해 인스턴스에 접속을 하고, 그에 해당하는 스키마에 오브젝트 생성 등의 권한을 부여 SQL Server - 인스턴스 내 다수의 데이터베이스에 연결하여 작업하기 위해 유저를 생성한 후 로그인과 유저를 매핑 - 특정 유저는 특정 데이터베이스 내 특정 스키마에 대한 권한을 부여 받을 수 있음 시스템 권한 - 유저 생성 후 데이터베이스 접속한다고 해서 Object (테이블, 뷰, 인덱스 등)에 접할 수 없다. - 사용자가 실행하는 DDL 문장은 그에 해당하는 권한이 있어야만 실행할 수 있다. Object 권한 - 특정 Object에 대한 DML ..
정의행과 행간의 관계를 쉽게 정의하기 위해 만든 함수 결과에 대한 함수처리이기 때문에 결과 건수는 줄지 않음적용 범위는 PARTITION을 넘을 수 없음 종류순위 관련 함수 - RANK - DENSE_RANK - ROW_NUMBER 집계 관련 함수 - SUM - MAX, MIN - AVG, COUNT 행 순서 관련 함수 - FIRST_VALUE, LAST_VALUE (Oracle) - LAG (Oracle) - LEAD (Oracle) 비율 관련 함수 - CUME_DIST (ANSI, Oracle) - PERCENT_RANK (ANSI, Oracle) - NTILE (Oracle, SQL Server) - RATIO_TO_REPORT (Oracle) 구문 - SELECT 윈도우함수(ARGUMENTS) O..
AGGREGATE FUNCTIONGROUP AGGREGATE FUNCTION이라고 부름 COUNT, SUM, AVG, MAX, MIN 외 각종 집계 함수 GROUP FUNCTIONROLLUP, CUBE, GROUPING SETS 일반 그룹 함수로 동일한 결과 추출 가능집계 대상 컬럼 이외의 GROUP 대상 컬럼의 값은 NULL을 반환 ROLLUP특징 - GROUP BY의 확장된 형태로 사용하기가 쉬움 - 인자로 주어진 컬럼의 순서에 따라 다른 결과를 추출 - SELECT절에 ROLLUP을 사용함으로써 보통의 SELECT된 데이터와 그 데이터의 총계를 구할 수 있음 코드 - SELECT deptno, SUM(sal) FROM emp GROUP BY deptno; # deptno를 그룹지어서 SUM(집계) ..
서브쿼리정의 - 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문 특징 - 괄호로 감싸서 사용 - 서브쿼리에서 ORDER BY절 사용X (ORDER BY절은 메인쿼리의 마지막 문장에 위치) - SELECT 절, FROM 절, HAVING 절, ORDER BY 절 등에서 사용 가능 종류 - 연관 서브쿼리 > 서브쿼리가 메인쿼리 컬럼을 가지고 있는 형태의 서브쿼리 > WHERE sal > (SELECT MAX(sal) FROM emp e2 WHERE e2.name = e1.name) - 비연관 서브쿼리 > 서브쿼리가 메인쿼리 컬럼을 가지고 있지 않은 형태의 서브쿼리 > 주로 메인쿼리에 값을 제공하기 위한 목적으로 사용 - 단일 행 서브쿼리 > 서브쿼리의 실행 결과가 항상 1건 이하인 서브쿼리를 의미 > ..
계층형 데이터정의 - 동일 테이블에 계층적으로 상위, 하위 데이터가 포함된 데이터 - 순환관계 데이터 모델로 설계할 경우 계층형 데이터 발생 (조직, 사원, 메뉴 등) 계층형 질의정의 - 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해 계층형 질의를 사용 OracleLEVEL 컬럼 - Root 데이터면1, 그 하위 데이터면 2, Leaf 데이터까지 1씩 증가 CONNECT_BY_ISLEAF 컬럼 - Leaf 데이터면1, 아니면 0 CONNECT_BY_ISCYCLE 컬럼 - 자식 데이터와 부모 데이터에서 Cycle이 존재하면1, 아니면 0 START WITH 절 - 계층 구조에서 전개 시작 위치를 지정하는 구문 - Root 데이터를 지정 - 결과목록에 항상 포함되어 짐 WHERE 절 - 모든..
집합 연산자정의 - 연관된 데이터를 조회하는 방법 중 하나 - 여러개의 결과를 연결하여 하나로 결합하는 방식 사용 특징 - 서로 다른 테이블에서 비슷한 형태의 결과를 반환하는 것을 하나의 결과로 합칠 때 사용 - 같은 테이블에서 서로 다른 질의를 수행하여 결과를 합칠 때 - 튜닝관점에서 실행계획을 분리하고자 하는 목적으로도 사용 제약조건 - SELECT 절의 컬럼 수가 동일 - ORDER BY는 마지막 줄에 한번만 기술 UNION - 여러개의 SQL문의 결과에 대한 합집합 - 중복된 행은 하나의 행으로 만듬 UNION ALL - 여러개의 SQL문의 결과에 대한 합집합 - 중복된 행도 고려X - 개별 SQL문의 결과가 서로 중복되지 않을때 UNION의 결과와 동일 INTERSECT - 여러개의 SQL문의 ..
STANDARD SQL표준 SQL 기능 - STANDARD JOIN(CROSS, OUTER JOIN) 추가 - SCALAR Subquery, TOP-N query 등의 새로운 Subquery 기능 - ROLLUP, CUBE, GROUPING SETS 등의 새로운 리포팅 기능 - Window Function 같은 새로운 분석 기능 연산자 기능 - UNION : UNION - INTERSCETION : INTERSECT - DIFFERENCE : MINUS / EXCEPT - PRODUCT : CROSS JOIN - SELECT : WHERE 절로 구현 - PROJECT : SELECT 절로 구현 - JOIN : 다양한 JOIN - DIVIDE : 사용X FROM 절 JOIN 형태INNER JOIN - 기존..
개요특징 - 두 개 이상의 테이블들을 연결, 결합하여 데이터를 출력 - 관계형 데이터베이스의 가장 큰 장점, 핵심기능 필요성 - Data Warehouse 모델 처럼 하나의 테이블에 모든 데이터를 집중시키고 조회할 수도 있지만, 데이터의 정합성에 큰 비용이 들고 필요한 데이터를 조회, 삭제, 수정하는 작업 또한 힘들다. 성능 부분에서도 규모가 큰 테이블에서 필요한 데이터를 찾아야 하니 오래 걸린다. 따라서, JOIN을 통해 테이블을 정규화하여 분할하게 되면 위와 같은 문제는 해결된다. - JOIN을 잘못 기술하게 되면 시스템 자원부족, 과다한 응답시간 지연의 중요 원인이 된다. EQUI JOIN특징 - JOIN 조건에 서로 값이 일치하는(=) 조건을 가진 데이터를 JOIN 코드 SELECT * FROM ..
집계함수 특징 - 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 반환하는 함수 COUNT(*) - NULL값을 포함한 행의 수를 반환 COUNT(표현식) - 표현식의 값이 NULL 값인 것을 제외한 행의 수를 반환 SUM(표현식) - 합계를 반환 AVG(표현식) - 평균을 반환 MAX(표현식), MIN(표현식), STDDEV(표현식), VARIAN(표현식) - 최대, 최소, 표준 편차, 분산을 반환 GROUP BY 특징 - FROM, WHERE 절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여 통계정보를 얻을 때 사용 - GROUP BY로 소그룹 기준을 정한 후, SELECT절에 집계 함수 사용 - 집계 함수의 정보는 NULL값을 제외 후 수행 - GROUP BY 절에서는 Alias 명을 사용X -..
내장함수특징 - 데이터 값을 간편하게 조작 - 함수의 입력 값에 따라 단일행 함수, 다중행 함수로 나뉜다. - 입력 값에 상관없이 출력은 하나만 된다. (M:1) 종류 - 문자형 - 숫자형 - 날짜형 - 변환형 - NULL 관련 DUAL 테이블정의 - Data Dictionary와 함께 Oracle에 의해 자동으로 생성되는 테이블 - 사용자 SYS의 스키마에 있음 (그래도 모든 사용자가 엑세스 가능) - SELECT ~ FROM ~ 의 형식을 갖추기 위한 일종의 DUMMY 테이블 (계산, 사용자 함수 등을 실행하고자 할 경우 유용) - 'X'라는 값을 1건 포함 ※ Oracle함수 / SQL Server함수 문자형 함수LOWER(문자열) - 알파벳 문자를 소문자로 바꾸어 준다. UPPER(문자열) - 알..
WHERE특징 - WHERE절에 조건이 없는 FTS(Full Table Scan) 문장은 SQL 튜닝의 1차적인 검토 대상이 된다. (이는 무조건 나쁜 것이 아니라 유용하게 사용하는 경우도 있음) 연산자종류 - 비교 연산자(=, >, >=,
트랜잭션정의 - 데이터베이스의 논리적 연산단위 - 분할할 수 없는 최소의 단위 - 따라서 All or Nothing (Atomicity 특성) 특징 - 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함 특성 - Atomicity : 모두반영 or 반영x - Consistency : 시스템의 고정요소는 트랜잭션 수행 전과 후의 상태가 같아야 함 - Isolation : 트랜잭션은 완료될 때까지 다른 트랜잭션이 참조X - Durability : 트랜잭션의 결과는 영구 반영 TCL (Transaction Control Language)COMMITROLLBACKSAVEPOINTCOMMIT COMMIT 이전의 데이터상태 - 메모리 버퍼에만 영향 - 변경 이전 상태로 복구 가능 - SELECT문으로 변경 결과를 ..
DML (Data Manipulation Language)SELECTINSERTUPDATEDELETESELECT DISTINCT : 검색 결과에서 중복 배제 GROUP BY : 그룹별 검색 - COUNT( ) : 그룹별 튜플 수 - AVG( ) : 그룹별 평균 - SUM( ) : 그룹별 합계 - MAX( ) : 그룹별 최대 - MIN( ) : 그룹별 최소ORDER BY : 정렬 검색 - ASC : 오름차순 - DESC : 내림차순 AS : Alias 부여 산술연산자 : 숫자, 날짜 형식에 적용 - ( ) : 괄호 - * : 곱셈 - / : 나눗셈 - + : 덧셈 - - : 뺄셈합성연산자 - Oracle : 문자와 문자 연결은 ' || ' - SQL Server : 문자와 문자 연결은 ' + ' - CON..
DDL (Data Definition Language)CREATEALTERDROPRENAMETRUNCATECREATE코드제약조건 - NOT NULL : NULL 값은 허용하지 않는다. - PRIMARY KEY : 주키 - UNIQUE : 해당 속성은 유일해야 한다. - FOREIGN KEY : 외래키 - REFERENCES : 외래키를 참조하는 참조 릴레이션 - CHECK : 입력할 수 있는 값의 범위 등을 제한 VIEW 생성 코드 - 학생 테이블에서 성별이 '여'인 데이터만 뷰로 생성하여 시스템 성능을 향상 생성된 테이블 구조 확인 - Oracle DESC 테이블명; - SQL Server exec s_hepl '테이블명' go SELECT 문장을 통한 테이블 생성 - 주의 점 : not null 제약..
데이터베이스정의 - 기업, 조직, 개인이 필요에 의해 데이터를 일정한 형태로 저장 - DBMS (DB 관리 S/W) 발전 - 60년대 : flow-chart 중심 - 70년대 : Hierachical, Network - 80년대 : 관계형 데이터베이스 상용화, Oracle, Sybase, DB2와 같은 제품 - 90년대 : 객체 관계형 데이터베이스, Oracle, Sybase, Informix, DB2, Teradata, SQL Server 관계형데이터베이스 - E.F. Codd 박사의 논문에서 처음 소개 - 장점 > 정규화를 통해 Anomaly 현상을 제거하고 데이터 중복을 피함 > 동시성 관리, 병행 제어를 통해 데이터 공유 > 데이터 표준화, 품질 확보 > 보안 기능 > 데이터의 무결성 보장 > 데..
모델링 정의 - 복잡한 '현실세계'를 단순화시켜 표현 - '현실세계'의 추상화된 반영 - 즉, '현실세계'를 추상화, 단순화, 명확화하기 위해 일정한 표기법에 의해 표현하는 기법 * 정보시스템 구축에서의 모델링 > 계/분/설 : 업무를 분석하고 설계의 목적 > 구/운영 : 변경과 관리의 목적특징 - 추상화 "현실세계, 다양한 현상을 일정한 양식의 표기법에 의해 표현" - 단순화 "복잡한 현실세계를 표기법, 언어로 쉽게 표현하여 이해할 수 있도록 하는 개념" - 명확화 "누구나 이해하기 쉽게 대상에 대한 애매모호함을 제거하여 정확하게 기술" 3가지 관점 - 데이터 관점 "업무가 어떤 데이터와 관련이 있지?" "데이터간의 관계는 무엇이지?" - 프로세스 관점 "실제로 업무가 하는 일은 무엇이지?" "업무에서..