본문 바로가기

오라클

(9)
잘못 삭제하거나 수정한 데이터 복구하는 방법(FLASHBACK 설정과 사용) 데이터를 수정하려다가 잘못하는 경우나 이상이 있어 과거의 데이터를 보려고 할 때가 있습니다. 데이터 수정시 실수 많이 하는 유형은 DELETE나 UPDATE에서 WHERE절 실수로 벌어지는 경우가 많습니다. 평소에는 분명이 커밋하기 전에 확인하는데 실수할 때는 뭐에 홀린 듯이 확인도 안 하고 커밋을 합니다. COMMIT메시지를 보는 순간 정신이 돌아오게 되지만 이미 늦은 경우가 대부분입니다. 또는 실수가 아니여도 데이터베이스 관리자 및 개발자들은 종종 과거의 데이터를 조회해야 할 때가 있습니다. 관련 설정이 되어 있는 경우 오라클 데이터 베이스에서는 이런 경우 쿼리를 사용하여 과거 데이터를 조회할 수 있습니다. 무한정은 아니고 설정된 메모리에 따라서 저장이 되므로 변경이 적은 테이블은 오래된 데이터가 남..
오라클 사용자 정의 함수 프로그래밍을 하다 보면 각자 스타일이 다른 것을 알 수 있습니다. 어떤 사람은 JAVA는 거들뿐 모든 계산을 쿼리를 통해 하고 화면에 보여주기만 하는 사람이 있는 반면 반대로 어떤 사람은 DB에서는 ROW데이터를 가져와서 JAVA에서 계산을 하기도 합니다. 물론 상황에 맞게 사용하는게 효율면에서도 유지보수면에서도 좋겠지만 자기가 편한 방식이 있으니까요. 오라클 사용자 정의 함수 (User-defined functions) 프로그램에서 어떤 사람의 상태를 과거 데이터를 가지고 판단해야 하는 경우가 있었습니다. 그런데 판단한 결과를 CS프로그램에서도 사용하고 WEB에서도 사용해야 했습니다. CS와 WEB에 판단 로직을 두면 유지보수가 어려워 지기에 이런경우 오라클 사용자 정의 함수나 프로시저를 만들어 사용했..
WHERE 절에서 연산자 사용 WHERE 절은 쿼리에서 중요하고 많이 사용합니다. 잘못된 연산자를 사용할 경우 테이블 전체를 삭제한다던가, 원하는 데이터만 빼고 나머지를 UPDATE 하는 등 생각하고 싶지도 않은 상황이 발생할 수 있습니다. WHERE에서 만큼은 돌다리를 두 번, 세 번 두들기고 COMMIT을 클릭하는 것이 좋겠습니다. 오라클 책자에서 설명하는 비교연산자는 아래표와 같지만 이번 포스팅에서는 더 추가해서 알아보겠습니다. = '=' 연산자는 두 값이 같은지 비교합니다. 값이 같으면 조건이 참이 됩니다. - 나이가 30인 직원들을 조회하고자 할 때 SELECT employee_id, full_name FROM employees WHERE age = 30; 또는 != '' 또는 '!=' 연산자는 두 값이 다른지 비교합니다. ..
쿼리에서 중복을 제거하는 방법(DISTINCT와 GROUP BY 차이점) 오라클에서 DISTINCT 키워드는 SELECT 문에서 중복된 값을 제거하고 고유한 값만을 반환하는 기능을 합니다. GROUP BY 또한 중복된 값을 제거하는 역할을 하지만 집계함수를 이용하여 다른 컬럼에대한 값을 계산할 수 있습니다. DISTINCT: SELECT 문에서 중복된 값을 제거하여 고유한 결과만 반환하는 데 사용됩니다. 특정 열이나 여러 열의 중복되지 않은 값들을 조회할 때 주로 사용합니다. 조회된 결과에는 고유값만 나오며 중복된 항목에 따라 행의 개수가 줄어들 수 있지만 내용은 원본 데이터입니다. GROUP BY: 특정 열을 기준으로 행들을 그룹화하고, 그룹별로 집계 함수를 적용할 때 사용됩니다. 각 그룹에 대해 계산된 결과를 반환합니다. COUNT, SUM, AVG, MAX, MIN 등의..
오라클 데이터 타입과 정확히 작성해야 하는 이유 Oracle에서 데이터 타입은 데이터베이스에서 저장되는 값을 분류하는 데 사용됩니다. 테이블을 설계할 때 부터 데이터 타입을 정확히 지정해 놓으면 나중에 오류와 실수를 줄일 수 있습니다. 완벽한 AI가 DB를 설계하고 프로그래밍 한다면 VARCHAR만 가지고도 가능할지 모르겠지만 사람은 프로그램 작성이나 쿼리작업시 실수 할 수있기 때문에 처음부터 신중히 정하는 것이 좋습니다. 이 외에도 데이터타입을 정확히 작성해야하는 이유는 많이 있습니다. 1. DB에서 데이터 타입을 정확히 작성해야 하는 이유 1-1. 저장공간을 절약 및 데이터 손실 고정 길이 문자열 (CHAR)은 입력된 값보다 길이가 크면 공백으로 채워지므로 낭비가 발생할 수 있습니다. 반대로 입력된 값보다 길이가 작으면 입력된 값이 잘릴 수 있습니..
sql에서 가독성을 높이는 별칭 사용법(Column Aliases, Table Aliases) 쿼리가 복잡해 질수록 열 별칭은 가독성을 높여줍니다. 또한 함수를 사용시 열 이름이 변경되는데 이때도 별칭을 지정하면 간략하게 조건절에서 참조할 수 있고 결과화면도 깔끔해 집니다. 또한 동일한 열을 여러번 사용하는 경우도 간단한 이름을 지정해 두면 편리합니다. 열 별칭(Column Aliases)은 출력을 더 읽기 쉽게 만들거나 코드를 단순화하기 위해 SQL 쿼리의 열에 할당된 대체 이름이라고 할 수 있습니다. 1. 열 별칭 사용상 이점 1-1. 가독성 향상 열에 의미 있는 별칭을 지정하면 사용자와 동료 모두 쿼리를 더 쉽게 이해할 수 있습니다. 1-2. 간소화된 코드 별칭을 사용하면 특히 복잡한 테이블 이름과 열 이름을 처리할 때 SQL 코드를 단축하고 오류 발생 가능성을 줄일 수 있습니다. 1-3. ..
10 x null = ?, null(널)에 대해 알아야할 사항 null은 DB에서 없음을 뜻합니다. 흔히 생각하는 공백('')이나 0과는 다릅니다. 공백은 문자이며 0은 숫자입니다. 간단히 말하자면 null은 사용할 수 없거나, 할당되지 않았거나, 알 수 없거나, 적용할 수 없는 값입니다. null을 사용하는 산술식은 null로 계산됩니다. 위와 같은 수식의 결과는 null입니다. 그래서 수식에 사용되는 컬럼은 명시적인 숫자를 넣어줄 필요가 있습니다. 어떤 사원이 인센티브를 받지 않는다면 null이 아닌 0이 되어야 정상적으로 계산이 될 수 있습니다. 1. NULL 사용법 예시 1-1 테이블 생성 먼저, 아래와 같이 employees 테이블을 생성하겠습니다. CREATE TABLE employees ( employee_id NUMBER PRIMARY KEY, fir..
SQL에서 산술 연산자 종류, 우선순위, 팁(암시적 변환, 정밀도 및 배율, 오버플로, 언더플로) 산술연산자를 통한 데이터를 가공하거나 가정해 볼 수 있습니다. 산술식에는 열이름, 상수 및 산술 연산자를 포함할 수 있습니다. 산술 연산자로 사용할 수 있는 연산자는 아래와 같이 5개가 있습니다. DATE 및 TIMESTAMP 데이터 유형은 더하기(+)/빼기(-)만 사용 가능합니다. 1. 산술연산자 종류 더하기 연산자(+): 더하기 연산자는 두 개의 숫자 값을 더하는 데 사용됩니다. SELECT 2 + 3 FROM dual; 결과: 5 빼기 연산자(-): 빼기 연산자는 하나의 숫자 값에서 다른 값을 빼는 데 사용됩니다. SELECT 10 - 5 FROM dual; 결과: 5 곱셈 연산자(*): 곱셈 연산자는 두 개의 숫자 값을 곱하는 데 사용됩니다. SELECT 2 * 3 FROM dual; 결과: 6 ..
오라클 SQL DECODE와 CASE(조건문, 비교) decode와 case는 조건을 평가해서 결과를 반환한다는 점, 즉 프로그램에서 IF~ELSE와 유사하지만 몇 가지 차이가 있습니다. decode는 "="조건에서만 사용 가능하며 오라클에서만 사용 가능한 함수입니다. case가 ANSI SQL을 준수하는 것과는 다릅니다. 등가연산이라면 case를 decode로 변환 가능 할 것입니다. 아래는 같은 결과를 보여주는 decode와 case의 예시입니다. DECODE decode(expression,search1,result1[,search2,result2,...][,default]) expression: 데이터 셋에서 비교할 값(컬럼)입니다. search1: expression과 비교할 값입니다. 일치하면 result1을 리턴합니다. result1: expr..