
1. 개요 SQL로도 절차적 프로그램이 가능하도록 제공하는 SQL을 말한다. DBMS 벤더별로 PL/SQL(Oracle), SQL/PL(DB2), T-SQL(SQL Server) 등이 있다. 이번 글에서는 절차형 SQL로 만들 수 있는 Procedure, User Defined Function, Trigger에 대해 살펴본다. 2. PL/SQL PL/SQL은 저장 모듈을 개발하고 사용할 수 있게 해준다. 저장 모듈이란 PL/SQL 문장을 DB 서버에 저장하여 사용자와 애플리케이션 사이에서 공유할 수 있도록 만든 일종의 SQL 컴포넌트 프로그램이며, 독립적으로 실행되거나 다른 프로그램으로부터 실행될 수 있는 완전한 실행 프로그램이다. Oracle에서는 Procedure, User Defined Functi..
1. DCL 권한에 관련된 명령어. 유저를 생성하고 권한을 제어하는 명령어이다. 2. 유저 - Oracle 유저를 통해 즉, 아이디와 비밀번호 방식으로 인스턴스에 접속을 하고 그에 해당하는 스키마에 대한 권한을 부여받는다. SCOTT: Oracle 테스트용 샘플 유저 SYS: DBA ROLE을 부여받은 유저 SYSTEM: 데이터베이스의 모든 시스템 권한을 부여받은 DBA 유저 - SQL Server Oracle과 달리 인스턴스에 접속하기 위해 로그인을 생성한다. (CREATE LOGIN) 그 후 데이터베이스에서 작업할 수 있도록 유저를 생성하여 로그인과 맵핑한다. 그 중 특정 유저는 특정 DB내의 특정 스키마에 대해 권한을 부여받을 수 있다. 따라서 접속 경로는 인스턴스 -> 맵핑된 유저 -> 스키마 -..

SYSTIMESTAMP(SESSIONTIMEZONE) vs CURRENT_TIMESTAMP(DBTIMEZONE) SESSIONTIMEZONE: SESSION의 타임존을 따라간다 DBTIMEZONE: 설치되어 있는 DB의 타임존을 따라간다 SYSDATE: OS의 시간 FROM_TZ FROM_TZ 함수는 TIMESTAMP 값을 TIMESTAMP WITH TIME ZONE 값으로 변환한다. TIME_ZONE_VALUE값은 포맷 'TZH:TZM'의 문자값 또는 옵션 TZD 포맷을 가지는 TZR의 문자열이다. 간단하지만 DATE와 TIMESTAMP로 작업한다면 많이 사용되는 함수이다. 실행 예시) SELECT FROM_TZ(TIMESTAMP '2020-07-23 11:00:00', 'America/New_york..
Oracle에는 크게 LIST PARTITION(특정값 지정), RANGE PARTITION(범위), HASH PARTITION(해쉬적용), COMPOSITE PARTITION(범위와 해쉬가 복합) 등이 가능하다. 1. RANGE PARTITION 가장 많이 사용하는 기법. 대상 테이블이 날짜 또는 숫자값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리된다면 사용한다. 또한 데이터 보관주기에 따라 테이블에 데이터를 쉽게 지우는 것이 가능하므로 (해당 파티션 테이블을 DROP하면 된다) 데이터보관주기에 따른 테이블 관리가 용이하다 2. LIST PARTITION 특정값에 따라 파티셔닝하는 방법이다. 예를 들어 지점, 사업소 같은 컬럼을 PK로 하는 테이블이라면 각 지점마다 파티션하는 방식으로 분할한다. 3..
반정규화의 대상 - 자주 사용되는 테이블에 접근(Access)하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우 - 테이블에 대량의 데이터가 있고 대량의 데이터 범위를 자주 처리하는 경우에 처리범위를 일정하게 줄이지 않으면 성능을 보장할 수 없을 경우 - 통계성 프로세스에 의해 통계 정보를 필요로 할 때 별도의 통계테이블(반정규화 테이블)을 생성 - 테이블에 지나치게 많은 조인(JOIN)이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 다른 방법 - 테이블에 지나치게 많은 조인(JOIN)이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 VIEW 를 사용하는 방법. 조회의 성능을 향상시키기보다는 성능을 고려한 뷰를 생성하고 개발자가 접근하게 하여 개발자의 SQL 문에 의해 성능 저..
* JOIN 은 FROM에 여러 개의 테이블이 있더라도 특정 2개의 테이블이 먼저 JOIN 처리 되고, JOIN 의 결과로 나온 새로운 테이블과 다른 테이블을 JOIN 한다. 1. EQUI JOIN - PK ↔ FK 의 관계를 기반으로 한다 - 계층형(Hierarchical)이나 망형(Network) DB에 비교해서 RDB의 큰 장점 - WHERE 절에 = 으로 표현 - ANSI/ISO SQL 표준 방식으로 표현하면 INNER JOIN과 같다 SELECT A.NAME FROM CUSTOMER A, PRODUCT B WHERE A.ID = B.ID 2. Non EQUI JOIN 추후 추가. 3. STANDARD JOIN E.F.CODD 박사의 논문에 언급된 8가지 관계형 대수는 4개의 일반 집합 연산자와 ..
1. 집계 함수 집계 함수 사용 목적 COUNT(*) NULL 값을 포함한 행의 수를 출력 COUNT(표현식) 표현식의 값이 NULL 값인 것을 제외한 행의 수를 출력 SUM([DISTINCT | ALL] 표현식) 표현식의 NULL 값을 제외한 합계를 출력 AVG([DISTINCT | ALL] 표현식) 표현식의 NULL 값을 제외한 평균을 출력 MAX([DISTINCT | ALL] 표현식) 표현식의 최대값 출력 (문자, 날짜 데이터도 가능) MIN([DISTINCT | ALL] 표현식) 표현식의 최소값 출력 (문자, 날짜 데이터도 가능) STDDEV([DISTINCT | ALL] 표현식) 표현식의 표준 편차를 출력 VARIAN([DISTINCT | ALL] 표현식) 표현식의 분산을 출력 2. GROUP ..
- Total
- Today
- Yesterday
- annotation
- WebClient
- DesignSystem
- 메모리 릭
- TroubleShooting
- 코테 log
- 암호화
- Lombok
- 이펙티브자바
- ActiveAdmin
- aws
- point
- SQL 전문가 가이드
- SHA
- Git
- Java
- querydsl
- 이벤트스토밍
- fetchResults
- IntelliJ
- 실용주의
- ASCII
- effective-java
- ruby
- Generic
- Spring-Boot
- 사고..
- sort algorithm
- gitignore
- Encoding
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |