본문 바로가기

SQL/oracle31

oracle SQL - 날짜 함수 오라클 SQL은 데이터 유형이 date(날짜)인 데이터를 이용한 함수들이 존재한다. 1. MONTHS_BETWEEN(date1, date2) 두 날짜 사이의 달 수를 반환한다. MONTHS_BETWEEN()함수는 날짜 데이터 두 개를 받으면 숫자(숫자 타입)를 반환한다. 입사 날짜부터 현재 날짜까지 몇개월이 걸렸는지 나타낸다. 2. ADD_MONTHS(date, n) 2번째 인수 n달 만큼 더한 날짜를 반환한다. 3. NEXT_DAY(date, '요일') date 날짜로부터 오는 '요일'의 날짜를 반환한다. '요일' 자리에는 숫자 : 1은 일요일, 2는 월요일, ....7은 토요일이다. '금요일' '금' (약어) 가 올 수 있다. 2023년 3월 28일 기준 오는 일요일은 23년 4월 2일 4. LAST.. 2023. 3. 28.
oracle SQL - DML 매우매우매우 기초 (insert, update, delete) Insert insert into 테이블명 valuse (value, value....); 주의할 점은 값을 작성할 때 테이블의 칼럼 순서대로 작성해야한다. [desc 테이블명]을 통해 테이블의 칼럼 순서를 확인하면서 작성하면된다. Update UPDATE 테이블명 set column = value[, column = value,...] [where 조건]; set column = value는 해당 열의 모든 값을 작성한 value로 바꾸어주기 때문에 아래 where 조건을 통해 특정 열만 수정할 수 있다. Delete delete from 테이블명 [where 조건]; where절을 사용하지 않으면 해당 테이블은 남아있지만 한 행도 남아있지 않은 상태가 된다. where column = value를 통.. 2022. 12. 8.
oracle SQL - Join (ON).1 Join을 하는 이유? 제 3 정규화로 중복된 데이터를 따로 테이블로 두어 중복 방지하였지만, 제대로된 정보가 서로 다른 테이블에 있으니 Join을 수행한다.. 예시) 한 사원의 부서명이 400이라면 그 의미를 알아내기 힘들 것이다. 사원 테이블과 부서 테이블을 Join하면 400 의미를 보여준다. Cross, Natural 1. Cross Join - 두 테이블간 Cross Join을 수행하면 두 테이블의 행수를 곱한 수를 반환한다. 두 테이블을 강제로 합체시켜 보여준다 select [table1]column, [table2]colmn from table1 cross join table2; 2. Natural Join - 사용자의 의도와 관계없이 두 테이블에 겹치는 칼럼이 있다면 모두 합쳐서 반환한다... 2022. 12. 8.
oracle SQL - 조건 표현식 (DECODE, CASE) 오라클은 조건 처리를 구현하기 위해 DECODE 함수와 CASE 표현식을 제공한다. DECOD는 오라클 전공 함수이며, CASE 표현식은 ANSI SQL이다. DECODE 함수 프로그래밍 언어에서 사용되는 if-then-else 구문과 비슷한 기능을 한다. 구문은 다음과 같다. DECODE(col|표현식, search1, result1, search2, result2,..., default); 첫 번째 인수에 해당되는 표현식을 serach 값과 비교한 후 동일하다면 result 값을 반환한다. 마지막 default는 모든 조건에 맞지 않는 데이터에 적용할 기본값을 주기 위해 사용한다. 다음 보기를 보면 이해하기 쉬울 것이다. select emp_name, position, salary, DECODE(po.. 2022. 12. 7.
oracle SQL - 일반함수 (NVL, NVL2, NULLIF, COALESCE) 일반함수? - 표현식에 NULL 값을 비롯한 모든 데이터유형의 데이터를 사용할 수 있는 함수 NVL(표현식 1, 표현식 2) 표현식 1에는 NULL을 포함하는 열 이름 또는 표현식이온다. 표현식 2에는 NULL값을 변환할 대상 값이 온다. 사원의 연간 총 급여를 구할 때 연간 급여 + 커미션을 곱한 값을 구할 때 다음과 같이 작성하면 select emp_name, salary, comm, (salary*12) + (salary * 12 * comm) ANN_SAL from y_emp; 이처럼 잘못된 결과를 반환한다. NVL함수를 사용하면 해결할 수 있다. select emp_name, salary, comm, (salary * 12) + (salary * 12 * NVL(comm, 0)) ANN_SAL .. 2022. 12. 7.
oracle SQL - 데이터 유형의 변환 (TO_CHAR) 저장된 데이터에 대하여 내부적으로 다른 유형의 데이터로 변환하여 사용하는 경우가 있다. 이 경우 오라클 서버는 해당 데이터 유형을 자동 변환하기도 하고 사용자에 의해 명시적으로 수행 될 수 있다. 오라클 서버에 의해 자동으로 수행되는 데이터 유형 변환을 암시적 변환 (implicit), 사용자에 의해 수행되는 데이터 유형 변환은 명시적 데이터 유형 변환(explicit)이라고 한다. 암시적 변환의 예시는select salary 급여 from y_emp where dept_id = '100';위 같은 쿼리 실행 시 where절의 '100'을 자동으로 숫자로 형변환해서 실행한다. TO_CHAR(), TO_NUMBER(), TO_DATE() 와 같은 함수를 사용하여 형변환을하면 명시적 데이터 유형 변환에 해당.. 2022. 12. 7.