no image
[SQLD] 28. 절차형 SQL
제 8절 절차형 SQL 1. 절차형 SQL 개요 SQL 언어에서도 일반적인 개발 언어처럼 절차 지향적인 프로그램이 가능하도록 DBMS 벤더별로 PL(Procedural Language) / SQL(Oracle), SQL/PL(DB2), T-SQL(SQL Server) 등의 절차형 SQL을 제공하고 있다. 이는 조건에 따른 분기처리를 이용해 특정 기능을 수행하는 저장 모듈을 생성할 수 있고, 절차형 SQL을 통해 생성할 수 있는 모듈인 Procedure, User Defined Function, Trigger에 대해서 간단하게 살펴보도록 한다. 2. PL / SQL 개요가. PL / SQL 특징 Oracle의 PL / SQL은 Block 구조로 되어있고, 블럭 내에는 DML 문장과 QUERY 문장, 그리고..
2016.09.04
no image
[SQLD] 27.DCL(DATA CONTROL LANGUAGE)
제 7절 DCL(DATA CONTROL LANGUAGE) 1. DCL 개요 - DDL : 테이블 생성과 조작에 관련된 명령어- DML : 데이터를 조작하기 위한 명령어- TCL : 트랜잭션을 제어하기 위한 명령어 (COMMIT, ROLLBACK, SAVEPOINT 등)- DCL: 유저를 생성하고 권한을 제어할 수 있는 명령어 2. 유저와 권한 데이터베이스 시스템을 운영할 때 새로운 유저를 생성하고, 생성한 유저에게 공유할 테이블이나 기타 오브젝트에 대한 접근 권한만을 부여한다면 문제는 쉽게 해결할 수 있다. 대부분의 데이터베이스는 데이터 보호와 보안을 위해서 유저와 권한을 관리하고 있는데, 오라클에서는 기본적으로 제공되는 유저들인 SYS, SYSTEM, SCOTT 유저에 대해서 간단하게 알아보고자 한다...
2016.09.02
[SQLD] 26. 윈도우 함수(WINDOW FUNCTION)
제 6절 윈도우 함수(WINDOW FUNCTION) 1. WINDOW FUNCTION 개요 기존 관계형 데이터베이스는 칼럼과 칼럼간의 연산, 비교, 연결이나 집합에 대한 집계는 쉬운 반면, 행과 행간의 관계를 정의하거나, 행과 행간을 비교, 연산하는 것을 하나의 SQL문으로 처리하는 것은 매우 어려운 일이었다. 하지만, 윈도우 함수를 이용한다면 행과 행간의 관계를 쉽게 정의할 수 있게 된다. 분석 함수(ANALYTIC FUNCTION)나 순위 함수(RANK FUNCTION)로도 알려져 있는 윈도우 함수는 데이터 웨어하우스에서 발전한 기능이다. 다른 함수들처럼 중첩해서 사용하지는 못하지만, 서브쿼리에서는 사용할 수 있다. - 그룹 내 순위 관련 함수 : RANK, DENSE_RANK, ROW_NUMBER-..
2016.09.01
[SQLD] 25. 그룹함수(GROUP FUNCTION)
제 5절 그룹 함수(GROUP FUNCTION) 1. 데이터 분석 개요데이터 분석을 위한 세가지 함수는 다음과 같다.- AGGREGATE FUNCTION- GROUP FUNCTION- WINDOW FUNCTION 1) AGGREGATE FUNCTION GROUP AGGREGATE FUNCTION 이라고도 부르며, GROUP FUNCTION의 한 부분으로 분류할 수 있다. 앞서 포스팅했던 COUNT, SUN, AVG, MAX 와 같은 함수들이 집계함수에 속한다. 2) GROUP FUNCTION 결산개념을 가지는 업무의 경우, 소계, 중계, 합계, 총 합계 등 여러 레벨의 결산 보고서를 만드는 것이 중요 업무 중의 하나이다. 그런데 이러한 레벨별 집계를 위해서는 여러 단계의 SQL을 UNION, UNION ..
2016.09.01
no image
[SQLD] 24. 서브쿼리
제 4절 서브쿼리 서브쿼리(Subquery)란 하나의 SQL문 안에 포함되어 있는 또 다른 SQL 문을 말한다. 서브쿼리는 다음과 같이 메인쿼리가 서브쿼리를 포함하는 종속적인 관계에 놓여있다. - 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있음- 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없음- 서브쿼리 칼럼을 표시해야 한다면 스칼라 서브쿼리, 함수 등을 사용- 서브쿼리는 서브쿼리 레벨과는 상관없이 항상 메인쿼리 레벨로 결과 집합이 생성- 서브쿼리는 괄호로 감싸서 사용- 서브쿼리는 단일행 또는 복수행 비교연산자와 함께 사용 가능- 서브쿼리에서는 ORDER BY 절을 사용하지 못하고, 메인쿼리 마지막 문장에 사용 가능 - 서브쿼리가 SQL 문에서 사용 가능한 곳SELECT절, FROM절, WHERE절, HA..
2016.09.01
no image
[SQLD] 23. 계층형 질의와 셀프 조인
제 3절 계층형 질의와 셀프 조인 1. 계층형 질의 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해서 계층형 질의(Hierarchical Query)를 사용한다. 계층형 데이터란 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말한다. 이는 엔티티를 순환관계 데이터 모델로 설계한 경우 계층형 데이터가 발생하게 된다. 순환관계 데이터 모델의 예로는 조직, 사원, 메뉴 등이 있다. 가. 오라클(Oracle) 계층형 질의 오라클은 계층형 질의를 지원하기 위해 아래와 같이 계층형 질의 구문을 제공한다. - START WITH : 계층 구조 전개의 시작 위치를 지정하는 구문이다. 즉, 루트데이터를 지정한다.- CONNECT BY : 다음에 전개될 자식 데이터를 지정하는 구문이다. 자식..
2016.09.01
no image
[SQLD] 22. 집합 연산자 (SET OPERATOR)
제 2절 집합 연산자(SET OPERATOR) 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회하는 방법 중에 또 다른 방법이 있는데, 바로 집합 연산자(Set Operator)를 사용하는 방법이다. 기존 조인에서는 FROM 절에 검색하고자 하는 테이블을 나열하고, WHERE 절에 조인 조건을 기술하여 원하는 데이터를 조회하였으나, 집합연산자를 사용하게 되면, 여러 개의 질의의 결과를 연결하여 하나로 결합하는 방식을 사용한다. 즉, 집합 연산자는 2개 이상의 질의 결과를 하나의 결과로 만들어주는 역할을 하게 된다. 집합 연산자는 SELECT 절의 칼럼 수가 동일하고 SELECT 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 상호 교환 가능해야한다. UNION, INTERSECT, EX..
2016.08.31
no image
[SQLD] 21. 표준 조인(STANDARD JOIN)
제 1절 표준 조인(STANDARD JOIN) 1. STANDARD SQL 개요 대표적인 ANSI / ISO 표준 SQL의 기능은 다음 내용을 포함한다- STANDARD JOIN 기능 추가 (CROSS, OUTER JOIN 등 새로운 FROM 절 JOIN 기능들)- SCALAR SUBQUERY, TOP-N QUERY 등의 새로운 SUBQUERY 기능들- ROLLUP, CUBE, GROUPING SETS 등의 새로운 리포팅 기능- WINDOW FUNCTION 같은 새로운 개념의 분석 기능들 가. 일반 집합 연산자 현재 사용하는 SQL의 많은 기능이 관계형 데이터베이스의 이론을 수립한 E.F.Codd 박사의 논문에 언급이 되어 있다. 논문에 언급된 8가지 관계형 대수는 다시 각각4개의 일반 집합 연산자와 순..
2016.08.24
no image
[SQLD] 20. 조인(JOIN)
제 9절 조인(JOIN) 1. JOIN 개요 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것을 JOIN이라고 하며, 일반적으로 사용되는 SQL 문장 상당수가 JOIN이라고 생각하면 된다. JOIN은 관계형 데이터베이스의 가장 큰 장점이면서 대표적인 핵심 기능이라고 할 수 있다. 일반적인 경우 행들은 PRIMARY KEY(PK)나 FOREIGN KEY(FK) 값의 연관에 의해 JOIN이 성립된다. 하지만 어떤 경우에는 이러한 PK, FK의 관계가 없어도 논리적인 값들의 연관만으로 JOIN이 성립 가능하다. FROM 절에 여러 테이블이 나타나더라도 SQL 에서 데이터를 처리할 떄는 단 두 개의 집합 간에만 조인이 일어난다는 것이다. FROM 절에 A, B, C 테이블이 나열되었더라도, 특정..
2016.08.18
[SQLD] 19. ORDER BY 절
제 8절 ORDER BY 절 1. ORDER BY 정렬 ORDER BY 절은 SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정 칼럼을 기준으로 정렬하여 출력하는데 사용한다. SELECT 칼럼명 [ALIAS명]FROM 테이블명[WHERE 조건식][GROUP BY 칼럼이나 표현식][HAVING 그룹조건식][ORDER BY 칼럼이나 표현식 [ASC 또는 DESC]]; - ORDER BY 절에 칼럼명 대신 SELECT 절에서 사용한 별명 사용 가능- 또한, 칼럼 순서를 나타내는 정수 사용 가능하나, 유지보수성이나 가독성이 떨어짐- ORDER BY 절에서 칼럼명, 별명, 칼럼순서(정수)를 같이 혼용하는 것도 가능- 기본적으로 오름차순 적용(ASC), 내림차순은 DESC- SQL 문장 맨 마지막 위치- 숫..
2016.08.18
no image
[SQLD] 18. GROUP BY, HAVING 절
제 7절 GROUP BY, HAVING 절 1. 집계 함수(Aggregate Function) 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 다중행 함수 중 집계 함수(Aggregate Function)의 특성은 다음과 같다. - 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수- GROUP BY 절은 행들을 소그룹화- SELECT절, HAVING절, ORDER BY절에 사용 가능- WHERE절에 사용하지 않음 - 일반적으로 집계함수는 GROUP BY 절과 같이 사용되지만, 테이블 전체가 하나의 그룹이 되는 경우에는 GROUP BY 절 없이 단독으로 사용 가능 집계함수명([DISTINCT | ALL] 칼럼이나 표현식) - COUNT(*) 는 NULL 값을 포함한 행의 수를 ..
2016.08.18
no image
[SQLD] 17. 함수 (Function)
제 6절 함수(FUNCTION) 1. 내장 함수(Built-in function) 개요 함수는 벤더에서 제공하는 함수인 내장함수와 사용자가 정의할 수 있는 함수(User Defined Function)로 나눌 수 있다. 본 절에서는 SQL 내장함수에 대해서 설명하기로 한다. 내장함수는 SQL을 더욱 강력하게 해주고 데이터 값을 간편하게 조작하는데 사용된다. 내장함수는 다시 함수의 입력 값이 단일행 값이 입력되는 단일행함수(Single-Row Function)와 여러 행의 값이 입력되는 다중행 함수(Multi-Row Function)로 나눌 수 있다. 다중행 함수는 다시 집계 함수(Aggregate Function), 그룹함수(Group Function), 윈도우 함수(Window Function)로 나눌..
2016.08.18