본문 바로가기

2.2 DB/ORACLE8

[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.
[oracle] Union / Union ALL UNION은 '합집합, 조합'이라는 뜻으로 정말 합집합 함수이다.즉, 2개 이상의 데이터를 합쳐서 보여주고 싶을 때 주로 사용되는 함수입니다. 예를 들어 A, B라는 조회데이터 집합이 있고 UNION을 사용하면A∪B와 같은 합집합이 일어난다 예시를 또 하나 들면동일한의 데이터가 있는 2개의 조회데이터(A,B)와다른 데이터가 있는 1개의 조회데이터(C)를 Union을 한다면A∪B∪C와 동일한 결과가 나타난다.아래는 실제 실행 결과물이다.  UNION 구문은 2가지로 나뉜다.UNION [DISTINCT] : 중복값 제외하여 출력 (A∪B) ※DISTINCT는 안적어도 된다.UNION ALL : 중복 상관없이 출력 (A+B = A∪B + A∩B)결과값의 차이는 중복값처리이다.실제로 합집합은 중복값이 처리가 되.. 2024. 9. 30.
[Oracle] null 처리 함수 (NVL, NVL2) NVL 함수는 값이  Null인경우 지정값을 출력하고 Null이 아닌경우에는 원래의 값을 출력한다NVL(Colum1, value)Colum1 이 Null 일경우 value의 값이 들어간다.                  Null이 아닐 경우는 Colum1의 값이 나온다 예시nvl(to_date,trunc(sysdate)-1);to_date컬럼중 null 이 있으면 어제날짜를 반환하고 값이 존재하면 그대로 반환한다.  nvl2함수는 nvl함수와 대부분 동일 하지만 값이 존재하는 경우에도 값을 지정한 값으로 반환하는 함수이다.nvl2(colum,notnullValue,nullValue);colum값이  null이 아닐떄는 notnullValue의 값 이 반환되고                    null일 .. 2024. 9. 26.
[Oracle/SQL] 날짜 마지막 시간 적용에 0.99999 쓰는 이유 만약에 오늘 들어온 데이터만 봐야할 경우혹은 어제부터 오늘 전 까지의 데이터만 봐야하는 경우 와 같은 해당날의 모든 날 마지막 시간까지 체크를 해야할때아래와 같이 다음날 전을 포함하지 않는 방식으로 많이 처리를 합니다WHERE 날짜 >= TRUNC(sysdate) AND 날짜  이렇게 설계를 하시는 경우도 있지만간혹 이렇게 하는 경우도 있습니다WHERE 날짜 BETWEEN TRUNC(sysdate) AND TRUNC(sysdate) + 0.99999이 0.99999는 뭘까요? 위에서는 1을 더했는데왜 아래에선 1을 안더하고 0.99999를 더했을까요 BETWEEN은 포함하는 개념이기 때문에 +1을 더했다면다음날의 00시00분00초의 데이터까지 불러왔을겁니다.  근데 왜 0.99999를 더할까요빠른.. 2024. 9. 25.
[ORACLE] 테이블 복제 실무에서 테이블에 열을 추가하고 삭제할 요구사항이 생겨서기존의 테이블의 구조와 데이터를 임시테이블에 옮겨서 데이터를 저장하고 작업을 하기로 했습니다.이때 사용하는 테이블을 복제, 데이터 복사를 포스팅 하면 좋겠다! 생각이 들어 포스팅을 합니다:)우선 예전에 테이블을 old_table로 가정하겠습니다.그럼 새로운 테이블은 당연하게도 new_table입니다.테이블(구조, 데이터) 복제 (제약조건은 복제X)CREATE TABLE new_table AS SELECT * FROM old_table ;테이블 복제는 제약조건은 복제되지 않습니다.따라서 제약조건은 따로 지정해야 합니다.테이블만 복제(구조)CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1=0;.. 2024. 9. 23.
[Oracle/SQL] With 절 WITH 절최근에 프로그래머스를 풀면서WITH절로 해결하신 풀이를 보고 포스팅을 해보려 합니다.1. with절서브쿼리 블록을 with절 블록으로 만들어서 별칭으로 간단하게 관리하는 방식즉, 이름이 있는 서브쿼리(12c이후로는 함수,*프로시져도 가능)*프로시져 는 with절내부함수에서만 호출가능하다.추가 지식) WITH 절은 CTE(Common Table Expression)을 정의하는 데 사용됩니다.CTE는 SQL 쿼리에서 임시 결과 집합을 정의하여 쿼리의 가독성을 높이고 복잡한 쿼리를 단순화하는 데 유용2. 사용방법2-1. 기본형식with sql별칭 [(컬럼명,컬럼명2)] as ( SQL쿼리 ) select * from sql별칭; -- 메인쿼리-- 다중 WITHWITH sq.. 2024. 7. 30.
[Oracle/SQL] MERGE INTO MERGE INTO 문UPDATE문, INSERT문, DELETE문 등을 상황에 따라 나눠서 처리하는 문장으로주로 동일한 데이터가 있을경우 UPDATE, 없을경우 INSERT를 하기 위해 사용된다.MERGE INTO 테이블1 -- 테이블,뷰USING 테이블2 -- 테이블,뷰,서브쿼리,dual ON 조건 -- 매칭 조건 ( PK 또는 UNIQUE 제약조건을 사용)WHEN MATCHED THEN --조건 ture (UPDATE,DELETE) , 조건 true일때 아무것도 안하고 싶다면 없어도됨 UPDATE SET 컬럼 = 값 -- WHERE절 사용가능(오라클10g이후 INSERT는 X)WHEN NOT MATCHED THEN --조건 false (INSERT), 조건 fal.. 2024. 7. 30.
728x90