분류 전체보기
Oracle Database 18c XE 설치 1: SQL 실습 환경 준비
SQLD를 위해 실습을 진행해보려고 한다. SQL을 실제로 사용하려면 DBMS(데이터베이스 관리 시스템)를 설치해야한다. DBMS 종류는 Sybase, Oracle. DB2, MySql, MS-SQL 등 다양한데, 여기서는 SQLD 전반의 기초가되는 Oracle을 설치해보도록 하자. 1. https://www.oracle.com/kr/downloads/ 에 접속한다. 오라클 소프트웨어 다운로드 | 오라클 | Oracle 대한민국 개발자 다운로드 모든 소프트웨어 다운로드는 무료이며 애플리케이션의 개발 및 프로토타이핑을 위해, 또는 엄격하게 본인의 학습 용도로 제한하여 무료로 제품의 전체 버전을 사용할 수 있도록 허용하는 개발자 라이센스가 제공됩니다. (별도로 명시하지 않는 이상, 오라클 기술 지원 조직은 ..
1과목 - 01
[1] 주문제품가격은 수량과 제품단가에 수량을 곱해 나온 값, 즉 계산된 값이다. 계산된 값은 추출속성이다. [2] 부분함수 종속성Partial Dependency Attribute을 가지므로 2차 정규화가 필요한 모델이다. [3] 속성의 특징 엔터티와 마찬가지로 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이다. (강사의 교재이름 등) 정규화 이론을 근거로 주식별자에 함수적으로 종속된다. 즉 기본키가 변경되면 속성 값도 변경된다. 한 속성은 한 개의 값만 가진다. 한 속성에 다중값이 있을 경우 별도의 엔터티를 이용하여 분리한다. 속성의 분류 기본속성: 업무에서 도출되는 본래 속성 설계속성: 새로 만들거나 변형해 도출된 속성 ex. 상품코드, 지점코드 파생속성: 다른 속성에 의해 계산되는 속성 ex..
5-3 조인 수행 원리
조인은 두 테이블 이상을 한 집합으로 만드는 연산이다. SQL문에서 FROM 절에 두 개 이상의 테이블이 나열되면 조인이 수행된다. 조인 연산은 두 테이블 사이에서 수행된다. 즉, FROM 절에 A, B, C라는 세 테이블이 존재하더라도 세 테이블이 동시에 조인이 수행되는 것이 아니다. 먼저 두 개 테이블의 조인 후 먼저 수행된 조인 결과와 나머지 한 개 테이블 사이에 조인이 수행된다. 이런 작업은 FROM 절에 나열된 모든 테이블을 조인할 때까지 반복 수행한다. 테이블 또는 조인 결과를 이용하여 조인을 수행할 때 조인 단계별로 다른 조인 기법을 사용할 수 있다. 예를 들어, A와 B 테이블을 조인할 때는 NL Join 기법을 사용하고 해당 조인 결과와 C 테이블을 조인할 때는 Hash Join 기법을 ..
Challenge old 43 (250)
파일 업로드 취약점 문제로 웹쉘을 업로드해서 플래그를 보자. 웹 쉘Web Shell? 웹 서버에 명령을 수행할 수 있도록 작성한 웹 스크립트 파일로 웹 브라우저를 통해 원격에서 서버 제어가 가능한 악성파일이다. 확장자는 .php, .asp, .jsp, .cgi 등이다. 업로드 파일 제한 우회 방법 프록시 툴을 이용한 Content-Type 검사 우회 .htaccess 파일을 이용한 확장자 우회 Unix의 경우 파일명에 %00, %zz, ; 을 포함시켜 확장자 검사 우회 프록시 툴을 이용한 Client Side Script 코드 우회 출처: https://grini25.tistory.com/61?category=853151 먼저, php 파일을 이렇게 작성하고 업로드해봤다. 'wrong type' 이래서 ..
5-2 인덱스 기본
인덱스 특징과 종류 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념으로 테이블을 기반으로 선택적으로 생성할 수 있는 구조이다. 테이블에 인덱스를 생성하지 않아도 되고 여러 개를 생성해도 된다. 인덱스의 기본적인 목적은 검색 성능의 최적화이다. 즉, 검색 조건을 만족하는 데이터를 인덱스를 통해 효과적으로 찾을 수 있도록 돕는다. 그렇지만 Insert, Update, Delete 등과 같은 DML 작업은 테이블과 인덱스를 함께 변경해야 하기 때문에 오히려 느려질 수 있다는 단점도 존재한다. 트리 기반 인덱스 DBMS에서 가장 일반적인 인덱스는 B-트리 인덱스이다. B-트리 인덱스는 브랜치 블록Branch Block과 리프 블록Leaf Block으로 구성된다. 브랜치 블록 중에..
5-1 옵티마이저와 실행계획
옵티마이저Optimizer 옵티마이저는 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을 한다. 이러한 최적의 실행 방법을 실행 계획Execution Plan이라고 한다. 관계형 DB는 SQL문을 통해서만 데이터를 처리할 수 있다. JAVA, C등과 같은 프로그램 언어와는 달리 SQL은 사용자의 요구사항만 기술할 뿐 처리과정에 대한 기술은 하지 않는다. 그러므로 사용자의 요구사항을 만족하는 결과를 추출할 수 있는 다양한 실행 방법이 존재한다. 그리고 다양한 실행 방법들 중에서 최적의 실행 방법을 결정하는 것이 바로 옵티마이저의 역할이다. 관계형 DB는 옵티마이저가 결정한 실행 방법대로 실행 엔진이 데이터를 처리하여 결과 데이터를 사용자에게 전달할 뿐이다. 옵티마이저가 선택한 실행 방법의..
4-8 절차형 SQL
절차형 SQL 개요 일반 개발 언어처럼 SQL에도 절차 지향 프로그램이 가능하도록 DBMS 벤더별로 PL(Procedural Language/SQL(Oracle), SQL/PS(DB2), T-SQL(SQL Server) 등 절차형 SQL을 제공한다. 절차형 SQL을 이용하면 SQL문의 연속적인 실행이나 조건에 따른 분기 처리를 이용하여 특정 기능을 수행하는 저장 모듈을 생성할 수 있다. PL/SQL 개요 PL/SQL 특징 Oracle의 PL/SQL은 Block 구조로 되어있고 절차적 프로그래밍이 가능한 트랜잭션 언어다. Block 내에는 DML/QUERY 문장/절차형 언어(IF, LOOP) 등을 사용할 수 있다. 이런 PL/SQL을 이용하여 다양한 저장 모듈Stored Module을 개발할 수 있다. 저..
4-7 DCL
DCL 개요 지금까지 살펴본 SQL 문장을 분류하면 테이블 생성과 조작에 관련된 명령어(DDL)와, 데이터를 조작하기 위한 명령어(DML), 그리고 TRANSACTION을 제어하기 위한 명령어(TCL)가 있었다. 추가로, 이런 명령어들 이외에도 유저를 생성하고 권한을 제어할 수 있는 DCL(DATA CONTROL LANGUAGE) 명령어가 있다. 유저와 권한 다른 부서/다른 회사 간 데이터 공유를 위해 DB를 오픈해야 하는 경우가 있을 수 있다. 이 때 DB 오픈 자체가 데이터 손실 우려가 크다. 이런 경우엔 새로운 유저를 생성하고 생성한 유저에게 공유할 테이블이나 기타 오브젝트에 대한 접근 권한만 부여하면 쉽게 해결할 수 있다. 일반적으로 회원제 웹사이트를 방문하여 서비스를 이용하려면 먼저 회원 가입을..
4-6 윈도우 함수
WINDOW FUNCTION 개요 기존 관계형 DB는 칼럼간의 연산/비교/연결/집합에 대한 집계는 쉬운 반면, 로우간의 관계 정의/비교/연산하는 것을 하나의 SQL 문으로 처리 하는 것은 매우 어려운 문제였다. PL/SQL, SQL/PL, T-SQL, PRO*C 같은 절차형 프로그램을 작성하거나, INLINE VIEW를 이용해 복잡한 SQL 문을 작성해야 하던 것을, 그나마 행간 관계 정의를 쉽게하기 위해 만든 함수가 바로 WINDOW FUNCTION이다. 윈도우 함수를 활용하면 복잡한 프로그램을 하나의 SQL 문장으로 쉽게 해결할 수 있다. 분석 함수ANALYTIC FUNCTION나 순위 함수RANK FUNCTION로도 알려져 있는 윈도우 함수(ANSI/ISO SQL 표준은 WINDOW FUNCTION..
4-5 그룹 함수
데이터 분석 개요 ANSI/ISO SQL 표준은 데이터 분석을 위해서 다음 세 가지 함수를 정의하고 있다. AGGREGATE FUNCTION GROUP FUNCTION WINDOW FUNCTION AGGREGATE FUNCTION GROUP AGGREGATE FUNCTION이라고도 부르며, GROUP FUNCTION의 한 부분이다. 1장 7절에서 설명한 COUNT, SUM, AVG, MAX, MIN 외 각종 집계 함수들이 포함되어 있다. GROUP FUNCTION 결산 개념의 업무를 가지는 원가, 판매 시스템의 경우는 소계, 중계, 합계, 총 합계 등 여러 레벨의 결산 보고서를 만드는 것이 중요 업무 중의 하나이다. 개발자들이 이런 보고서를 작성하기 위해서는 SQL이 포함된 3GL으로 배치 프로그램을 작..
4-4 서브쿼리
서브쿼리Subquery란 하나의 SQL문안에 포함되어 있는 또 다른 SQL문을 말한다. 서브쿼리는 알려지지 않은 기준을 이용한 검색을 위해 사용한다. 서브쿼리는 아래와 같이 메인쿼리가 서브쿼리를 포함하는 종속적인 관계이다. 조인은 조인에 참여하는 모든 테이블이 대등한 관계에 있기 때문에 조인에 참여하는 모든 테이블의 칼럼을 어느 위치에서라도 자유롭게 사용할 수 있다. 그러나 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있지만 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없다. 질의 결과에 서브쿼리 칼럼을 표시해야 한다면 조인 방식으로 변환하거나 함수, 스칼라 서브쿼리Scalar Subquery 등을 사용해야 한다. 조인은 집합간의 곱Product의 관계이다. 즉, 1:1 관계의 테이블이 조인하면 1(= 1 *..