목록Programming (117)
Patrick's 데이터 세상

절차형 SQL 1. 절차형 SQL 일반적 개발 언어처럼 SQL에도 절차 지향적인 프로그램이 가능하도록 DBMS 벤더별로 PL(Procedural Language)/SQL(Oracle), SQL/PL(DB2), T-SQL(SQL Server) 등의 절차형 SQL을 제공하고 있습니다. 절차형 SQL을 이용하면 SQL문의 연속적인 실행이나 조건에 따른 분기처리를 이용하여 특정 기능을 수행하는 저장 모듈을 생성할 수 있습니다. 2. PL/SQL Oracle의 PL/SQL은 Block 구조로 되어있고 Block 내에는 DML 문장과 QUERY 문장, 그리고 절차형 언어(IF, LOOP) 등을 사용할 수 있으며, 절차적 프로그래밍을 가능하게 하는 트랜잭션 언어입니다. 이런 PL/SQL을 이용하여 다양한 저장 모듈(..
DCL * DCL 개요 유저를 생성하고 권한을 제어할 수 있는 명령어 * 유저와 권한 유저 역할 SCOTT Oracle 테스트용 샘플 유저 Default 패스워드 : TIGER SYS DBA ROLE을 부여받은 유저 SYSTEM 데이터베이스의 모든 시스템 권한을 부여받은 DBA 유저 Oracle 설치 완료 시에 패스워드 설정 * 유저 생성과 시스템 권한 부여 및 회수 권한을 생성하기 위해서는 우선 DBA 유저로 접속을 해야 합니다. 데이터베이스에 접속했다고 해서 테이블, 뷰, 인덱스 등과 같은 오브젝트(Object)를 생성할 수는 없습니다. 사용자가 실행하는 모든 DDL 문장(CREATE, ALTER, DROP, RENAME 등)은 그에 해당하는 적절한 권한이 있어야만 문장을 실행할 수 있습니다. 이러한..
그룹 내 비율 함수 * RATIO_TO_REPORT 함수 - 파티션 내 전체 SUM 값에 대한 행별 컬럼 값의 백분율을 소수점으로 구할 수 있습니다. 결과 값은 > 0 & = 0 & 0 &
그룹 내 행 순서 함수 * FIRST_VALUE 함수 - 파티션별 윈도우에서 가장 먼저 나온 값을 구합니다. MIN 함수를 활용하여 같은 결과를 얻을 수도 있습니다. SQL Server에서는 지원하지 않는 함수입니다. EX) SELECT DEPTNO , ENAME , SAL , FIRST_VALUE(ENAME) OVER (PARTITION BY DEPTNO ORDER BY SAL DESC ROWS UNBOUNDED PRECEDING) AS DEPT_RICH FROM EMP; - RANGE UNBOUNDED PRECEDING : 현재 행을 기준으로 파티션 내의 첫 번째 행까지의 범위를 지정합니다. DEPTNO ENAME SAL DEPT_RICH 10 KING 5000 KING 20 SCOTT 3000 SC..
일반 집계 함수 * SUM 함수 - SUM 함수를 이용하여 파티션별 윈도우의 합을 구할 수 있습니다. EX) SELECT MGR , ENAME , SAL , SUM(SAL) OVER (PARTITION BY MGR) MGR_SUM FROM EMP; - PARTITION BY MGR 구문을 통해 매니저별로 데이터를 파티션화 합니다. MGR ENAME SAL MGR_SUM 7566 FORD 3000 6000 7566 SCOTT 3000 6000 7839 BLAKE 2850 8275 7839 JONES 2975 8275 7839 CLARK 2450 8275 7902 SMITH 800 800 EX) RANGE UNBOUNDED PRECEDING 활용 ( * 윈도우 함수 참고 ) SELECT MGR , ENAME..
순위 함수 * RANK 함수 - 특정 항목(컬럼)에 대한 순위를 구하는 함수 - 특정 범위(Partition) 내에서 순위를 구할 수도 있고 전체 데이터에 대한 순위를 구할 수도 있습니다. EX) SELECT JOB , ENAME , SAL , RANK() OVER (ORDER BY SAL DESC) ALL_RANK , RANK() OVER (PARTITION BY JOB ORDER BY SAL DESC) JOB_RANK FROM EMP; - RANK() OVER(ORDER BY SAL DESC) : 전체에 대한 순위입니다. - RANK() OVER(PARTITION BY JOB ORDER BY SAL DESC) : 각각 파티션 그룹 항목에 대한 순위입니다. 결과) JOB ENAME SAL ALL_RAN..