Coding Story/DATABASE
[ Oracle ] 오라클 LPAD 와 RPAD
개발을 하다 보면 문자열을 지정된 크기에 맞게 채워야 할 때가 있다. 전화번호를 11자리로 하는데 11자리 미만일경우 0으로 채워라는 경우처럼 말이다. 특정문자열을 지정한 자릿수만큼 내가 지정한 문자로 채우고자 할 때 쓰는 함수가 바로 LPAD 와 RPAD 함수이다. PAD의 영어사전적 의미로는 '덧대다'의 뜻인데 개발에서는 이를 '덧붙이다'나 '채우다'라는 의미로 사용되고 있다. 즉, LEFT PAD ( LPAD ) 는 왼쪽으로부터 채우기, RIGHT PAD ( RPAD ) 는 오른쪽으로부터 채우기인 셈이다. 먼저 문법을 살펴보자. LPAD ( x, n, y ) RPAD ( x, n, y ) 여기서 x 는 LPAD 나 RPAD 를 적용시키고자 하는 문자열이 들어간다. n 은 자릿..
[ Oracle ] 오라클 중복데이터 처리, 중복데이터 한번만
중복 데이터를 처리하는 방법은 다양하다. 중복 데이터를 처리하는 방법에는 어떤것들이 있는지 살펴보자. 만약 아래와 같은 정렬되지 않은 의류 테이블이 존재한다고 가정하자. [ 의류 ] 테이블 위 데이터를 보면 No2 ROW 와 No5 ROW 가 중복되는 데이터임을 알 수 있다. 중복데이터를 제거하고 싶다면 흔히 알고 있는 DISTINCT를 사용하면 된다. SELECT DISTINCT 분류명, 색상명, 가격, 상품번호 FROM 의류 ; 그럼 아래와 같은 결과가 나올것이다. 이처럼 DISTINCT는 데이터가 모두 동일한 ROW가 존재할경우 이를 제거해준다. 그렇다면 중복데이터를 제거하는 것이 아닌 공백이나 널로 처리해 해당데이터가 하나만 보이게하려면 어떻게 해야할까? 필자의 경우 서브쿼리를 ..
[ Oracle ] 프로시저와 함수의 차이
오라클을 사용하다보면 자주 접하게 되는 프로시저와 함수. 이 둘의 정의와 차이점에 대해 알아보자. 프로시저(Procedure)란? 넓은 의미로는 어떤 업무를 수행하기 위한 절차를 뜻한다. 예를 들어 쇼핑몰에서 신발을 구매하는 프로시저로 표현해본다면 [ Procedure Start ] ① 쇼핑몰 회원 로그인 ② 구매할 신발 선택 ③ 개인정보 및 배송지 선택 ④ 결제 [ Procedure End ] 위 처럼 어떤 프로세스를 절차적으로 기술해 놓은 것을 프로시저라 한다. 프로시저 문법 CREATE OR REPLACE PROCEDURE 프로시저 이름 ( 매개변수명1 [ IN || OUT || INOUT ] 데이터타입, 매개변수명2 [ IN || OUT || INOUT ] 데이터타입 ... ) IS||AS..
[ Database ] 제 1정규화, 제 2정규화, 제 3정규화
정규화란? 데이터베이스의 데이터들을 최대한 중복을 제거하여 이상 현상 ( Anomaly ) 을 방지하기 위한 기술이다. 여기서 말하는 이상현상은 세 가지가 있는데 간략하게 설명하면 다음과 같다. 갱신 이상 ( Modification Anomaly ) 중복된 데이터 중 일부를 갱신할 때 의도치 않은 데이터가 갱신됨으로써 생기는 데이터의 불일치 삽입 이상 ( Insertion Anomaly ) 새 데이터를 삽입할 때 의도치 않은 데이터가 삽입됨으로써 생기는 데이터의 불일치 삭제 이상 ( Deletion Anomaly ) 데이터를 삭제할 때 의도치 않은 데이터까지 삭제됨으로써 생기는 데이터의 불일치 이러한 이상 현상을 해결하기위해 데이터를 잘게 잘게 쪼개나간다고 생각하면 쉽다. ..
[ Database ] ER 다이어그램 / ERD 기호 및 표기법
데이터베이스를 다루는 과정에서 한 번쯤은 들어봤을 ERD. 이번 게시글에서는 ERD에 대해 다뤄보자. ERD ' Entity Relationship Diagram ' 흔히 E-R 다이어그램이라고 불리우며 ERD 라고 줄여 부르기도 한다. 영어 약자 그대로 '존재하고 있는 것(Entity)들의 관계(Relationship)을 나타낸 도표(Diagram)' 이다. 여기서 말하는 존재하고 있는 것이란 데이터를 뜻하니 데이터들의 관계를 나타낸 도표인 셈이다. 그럼 데이터의 관계를 어떻게 나타내는지 그림들을 참고해 이해해보자. 먼저 ERD의 규칙을 살펴보면 아래와 같다. A는 부모, B는 자식의 관계를 가진 ERD이다. 여기서 '~B로 구성되어 있다'라는 말이 살짝 헷갈..