본문 바로가기

2.2 DB/ORACLE16

[SQL] PIVOT (행을 열로 돌려버렷) 해당 포스팅은 Oracle기반으로 작성되었습니다. Pivot에 대해서 약간 사전적으로 이야기를 하면데이터를 재구성하여 특정 기준에 따라 행 데이터를 열 데이터로 변환하는 기능입니다.즉 하나의 행의 값들을 여러개의 열로 변환시켜주는 것입니다.  Pivot의 구조는 다음과 같습니다.-- 생략가능Select 열 FROM 테이블명 Pivot ( 집계함수(값) FOR 피벗기준열 in( 값1 , 값2 ...) ) ;Pivot은 집계함수 사용하는데 집계 함수는 데이터를 요약할때 사용되는 것으로SUM,COUNT,AVG등을 사용하는데 즉, Pivot에서는 집계함수가 필요하다고 볼수있습니다. 이론만 보면 세밀한 경우를 설명하기 힘드니까 실전으로 알아가보도록 하겠습니다.WITH절을 이용해서 해당 테이블이 .. 2024. 12. 26.
[Oracle] 날짜(년,월,일), 시간(시,분,초) 더하고 빼기 이번 포스팅은 그냥 날짜와 시간을 Oracle에서 연산하는 관련된걸 가능한 다 적어보려고 합니다. 우선적으로 오라클은 기본적으로 시간에 +1을 할 경우엔 하루를 더하게 됩니다.관련 실험은 포스팅을 한적이 있습니다. [날짜 마지막 시간 적용에 0.99999 쓰는 이유] 그래서  간단하게 시간을 더하기로 진행하면 일, 시간(시,분,초)에 대한 연산을 진행할 수 있습니다. 더하기 예시 WITH ADDTIME AS ( SELECT TO_DATE('2024-11-28 18:30:10', 'YYYY-MM-DD HH24:MI:SS') TEST_TIME FROM DUAL)SELECT TEST_TIME AS 기준시간 , TEST_TIME +1 A.. 2024. 11. 28.
[Oracle PL/SQL] PL/SQL 기본개념 PL/SQL (Procedural Language extension to SQL)PL/SQL은 SQL을 확장한 절차적 언어SQL 단점을 해결변수선언가능조건문 가능반복문 가능예외처리 가능 PL/SQL은 블록단위로 실행하며 3개로 나눠서 구성되어있다.선언부(DECLARE)  [생략가능]   실행부(BEGIN) [필수]예외처리(EXCEPTION)  [생략가능] END;(종료)  [필수] 마지막 라인에 /를 입력하면 해당 블록이 실행된다.CREATE OR REPLACE FUNCTION a RETURN VARCHAR2 ISBEGIN DBMS_OUTPUT.PUT_LINE('Function A!'); RETURN 'Function A executed';END a;/CREATE OR REPLACE FUNCT.. 2024. 10. 21.
[Oracle] 데이터베이스의 문자 집합 확인하기 Oracle 데이터베이스에서 문자 집합(Character Set)과 언어 설정은 데이터 저장 및 처리에 중요한 역할을 합니다.올바른 설정을 통해 다양한 언어의 데이터를 정확하게 처리할 수 있습니다. 1. NLS_DATABASE_PARAMETERS란?NLS_DATABASE_PARAMETERS는 Oracle 데이터베이스의 국가 언어 지원(NLS) 설정을 포함하고 있는 데이터 딕셔너리 뷰입니다. 이 뷰는 문자 집합, 날짜 형식, 숫자 형식 등 다양한 지역화 설정을 보여줍니다.PARAMETER: NLS 설정의 이름을 나타냅니다.e.g.  NLS_CHARACTERSET, NLS_LANGUAGE, NLS_TERRITORY 등이 있습니다.VALUE: 해당 파라미터의 현재 값을 보여줍니다.e.g.  예를 들어, 기본 .. 2024. 10. 18.
[Oracle] 글자의 바이트(byte)알려주는 함수 (VSIZE, LENGTHB) feat. 한글 바이트 확인 +두 함수 차이점 오라클에서 당연하게도 한글은 영어와 바이트가 다르다. 사용하는 Charater Set마다 다르다 (2~3Btye) 매번 Charater Set를 조회할 수는 없으니까 간단하게 글자의 바이트를 알려주는 함수를 알아보자 VSIZE사용법 VSIZE(data) 내부에서 사용되는 바이트(Byte)의 수를 반환즉, 문자열뿐만 아니라 BLOB, CLOB 등 다양한 데이터 유형에 대해 사용 가능합니다.LENGTHB사용법 LENGTHB(문자열) 주어진 문자열의 바이트 수를 반환즉, VARCHAR2, CHAR, NCHAR 등의 문자열 데이터 유형에 사용됩니다.둘의 차이점은  LENGTHB는 LENGTH의 바이트반환이기 때문에 문자열을 넣어야 합니다. 설명은 예시를 한번보고 해보겠습니다SELECT LENGTHB('dohi'.. 2024. 10. 18.
[Oracle] 숫자,문자 자르기 함수 (SUBSTR) 문자를 자르는 함수로 유명한 SUBSTR함수입니다. 사용법SUBSTR(data,start,length)data : 자를 데이터start : 시작점length : 자를 문자열의 길이 (생략가능 생략시 끝까지)  예시1. 문자 자르기 (사용법)SELECT SUBSTR('가나다라마',1,3) -- 문자자르기 첫번째부터 3개 , SUBSTR('가나다라마',3) -- 3번째부터 끝까지 , SUBSTR('가나다라마',-2) -- 뒤에서 2번째부터 끝까지 잘라보기 , SUBSTR('가나다라마',3,0) -- 0개를 잘라보기 , SUBSTR('가나다라마',3,-1) -- -1 개를 잘라보기 FROM dual ;함수해석 SUBSTR('가나다라마',1,3.. 2024. 10. 17.
[Oracle] 문자 채우기 (LPAD, RPAD) +응용 오라클에서 특정 문자로 채워야할때  LPAD,RPAD 함수를 사용합니다. 우선 문자 길이를 맞추고나서 부족하면LPAD는 왼쪽에  RPAD는 오른쪽에 특정 문자를 넣어주는 함수입니다. 즉 문자길이를 우선적으로 맞추고 나서 조정에 들어갑니다. 사용법 둘다 같으며LPAD( 값 , 문자길이 , 특정문자) RPAD( 값 , 문자길이 , 특정문자)만약 특정문자가 없을 경우 공백으로 대체됩니다. 특정문자가 들어가는 정도는 (문자길이 - 값의 문자 길이)의 만큼 들어갑니다.예시 LPAD( 'dohi' , 7 , 'D')일경우에 D가 붙는 갯수는 3(=7-4)개로 왼쪽(L)에붙습니다   사용 예제 SELECT LPAD('dohi',6) -- dohi가 길이가 6이 되도록 왼쪽에 2개의 공백추가 , RPAD.. 2024. 10. 17.
[Oracle] CLOB과 BLOB의 정의 LOB(Large Object)는 데이터베이스에서 대량의 데이터를 저장하기 위해 사용하는 데이터 타입입니다.LOB은 크게 두 가지로 나눌 수 있습니다. CLOB (Character Large Object) 주로 대용량의 텍스트 데이터를 저장예를 들어, 문서, XML 파일, 긴 문자열 등을 저장할 수 있습니다.BLOB (Binary Large Object) 대용량의 이진 데이터를 저장이미지, 비디오, 오디오 파일 등 다양한 유형의 이진 데이터를 저장할 수 있습니다.그외로 NCLOB, BFILE(외부).. 등이 있긴 하다.BLOB (Binary Large Object)의 사용 이유다양한 데이터 유형: 이진 데이터로 저장하기에 이미지, 비디오, 오디오 파일 등 다양한 이진 데이터를 저장가능데이터 무결성: 이진.. 2024. 10. 11.
[Oracle] 시간과 숫자를 원하는 단위까지 절사하는 함수 (TRUNC) TRUNC함수는 Oracle에서 시간 및 숫자를 절사할때 많이 사용한다.대략 내림함수와 비슷하다.-- 기본 틀 TRUNC(데이터, 설정값)데이터: 잘라낼 시간 및 숫자설정값 : 자르는 조건 1.숫자SELECT 1234.1234 AS MAIN , TRUNC(1234.1234) AS no -- 0과 동일 , TRUNC(1234.1234, 1) AS one -- 소수점1까지남기고 절삭 , TRUNC(1234.1234, 2) AS two -- 소수점2까지 남기고 절삭 , TRUNC(1234.1234, 0) AS zero -- 소수점이하절삭 , TRUNC(1234.1234, -1) .. 2024. 10. 7.
[Oracle] OUTER JOIN (+) 조인의 종류INNER JOIN두 테이블에서 일치하는 행만 반환합니다.JOIN이라고만 쓰면 기본적으로 INNER JOIN으로 해석됩니다.예: SELECT * FROM A INNER JOIN B ON A.id = B.id OUTER  LEFT JOIN (LEFT OUTER  JOIN)왼쪽 테이블(A)의 모든 행을 반환하고, 오른쪽 테이블(B)에서 일치하는 행이 없으면 NULL을 반환합니다.예: SELECT * FROM A LEFT JOIN B ON A.id = B.idRIGHT JOIN (RIGHT OUTER JOIN)오른쪽 테이블(B)의 모든 행을 반환하고, 왼쪽 테이블(A)에서 일치하는 행이 없으면 NULL을 반환합니다.예: SELECT * FROM A RIGHT JOIN B ON A.id = B.idF.. 2024. 10. 4.
728x90