본문 바로가기

분류 전체보기

(143)
SQL 단일행 함수 - 일반함수 ( Decode ) decode (if 문으로 구현 하고 싶을때) = (부등호) 비교만 가능하다. decode 의 뜻 : 코드가 없고, sql 함수로만 구현하겠다. 없는 컬럼을 기존에 있던 컬럼들을 조합하거나 연산자 식을 이용하여 컬럼을 새로 생성해주는것 (파생컬럼생성) 라고 생각하면된다. 예제 : 이름, 부서번호, 보너스 출력 , 보너스가 부서번호 10이면 300, 20이면 400 나머지 부서번호는 0 으로 출력 보너스 라는 컬럼은 없는데 새로운 데이터를 위해 생성하여 출력해야하기때문에 →파생변수 (= 파생컬럼) 이라고 칭한다. 예를 들자면 학생들이 이해하기 쉽게 책의 내용을 요약한다거나 한다는 의미 emp 테이블에서 보너스라는 컬럼을 만들어 내려면 decode 라는 함수를 사용해야한다. select ename, dept..
SQL 단일행 함수 - 일반함수 (NULL 을 처리하는 NVL, NVL2) 일반함수 NVL, NVL2 (null 값 대신 다른 데이터 출력 하기) 결측치를 다른값으로 치환하는 함수 (머신러닝 할때 굉장히 중요한 함수 중 하나) null 은 어떤것과 더하더라도 출력 되는 값은 null 이 되기때문에 꼭 null은 다른값으로 치환해 주어야 계산이 원활하게 이루어 진다. 예제 : 커미션값이 null 인 사람들의 이름과, 월급과 커미션 출력 select ename, sal, comm from emp where comm is null; 설명 : 만약 데이터가 많다면 , 이게 일부러 null 값인지, 실수로 넣지 않은건지 헷갈릴 수 있기 때문에, null 값을 0으로 치환해 주는 과정을 하는것이 좋다. 예제 : 이름과, 커미션 출력 하는데 커미션이 null 인 사원들은 0으로 치환하여 출..
SQL 단일행 함수 -변환함수 (to_number) , 암시적 형 변환 TO_NUMBER (숫자형으로 변환) 만약, sal(월급) 컬럼이 to_char 인 문자형으로 되어있다면? select ename, sal from emp where sal = 3000 ; 을 출력한다면 오라클의 암시적 형변환으로 인해 출력은 된다. 하지만 제대로된 오라클의 성능을 위해서는 select ename sal, from emp where to_number(sal) = 3000; 이렇게 sal 을 숫자형으로 바꾸어서 출력해 주어야한다 - 지금의 예시는 설명을 위한 예시일뿐 컬럼에 가공(tom_number으로 ) 을 하는 식은 좋지 않다. 암시적 형 변환 다음의 식은 SAl이 숫자형이다. select ename, sal from emp where sal = '3000'; 설명 : where 절에 ..
SQL 단일행 함수 -변환함수 (To_date) 날짜형으로 변환 To _date (날짜형으로 변환), 나라마다 날짜형이 다르기 때문에 해당함수가 쓰인다. 내가 어떠한 환경에 있던 (나라 상관없이) 정확하게 81년 11월 17일에 입사한 사원의 데이터를 오류없이 검색하는 방법 년 월 일 모두를 출력 하는 경우에만 쓰일 수 있는 함수이다. 예제 : 이름과 입사일을 뽑는데 91년 11월17 일 인 사람들을 출력해라. select ename, hiredate from emp where hiredate = to_date ( '91/11/17', 'RR/NN/DD'); 설명 : 확실하게 날짜를 검색하는 방법이다. where 절에 where hiredate = '81/11/17' 도 검색이 되긴 한다. but 다른 환경(다른나라) 가면 오류가 뜰 수 있다는점 문제 : 81년도에 ..
SQL 단일행 함수 -변환함수 (To_char) 문자형으로 변환 변환함수 (데이터 유형을 변환하는 함수 ) 데이터 유형 : 문자형, 숫자형, 날짜형 to_char : 문자형으로 변환하는 함수 to_number : 숫자형으로 변환하는 함수 to_date : 날짜형으로 변환하는 함수 날짜를 문자로 출력할때 사용할 수 있는 날짜 포맷 RRRR, YYYY : 년도 4자리 RR, YY : 년도 2자리 MM, MON : 달 DD : 일 DAY, DY, D : 요일 WW, IW : 주 HH, HH24 : 시간 MI : 분 SS : 초 RR 과 YY 의 차이점 RR 1981 현재 연도에서 가장 가까운 연도로 인식 YY 2081 현재 세기로 인식 —>2050 년 이되면 ? ㅋㅋㅋ 오라클에서 해결방법을 준다고함 ! 오라클 날짜 형식을 살펴보면 대부분 한국에서는 RR/MM/DD 로 되어..
SQL 단일행 함수 - 날짜함수 날짜함수 months_between : 날짜와 날짜 사이의 개월수를 출력 add_months : 날짜에서 개월수를 더한 날짜를 출력 last_day : 특정 날짜의 달의 마지막 날짜를 출력 next_day : 해당날짜의 달에서 앞으로 돌아올 특정 요일의 날짜를 출력 오늘 날짜 출력 하기 (sysdate) select sysdate from dual; 예제 : 내일 날짜 select sysdate + 1 from dual; 날짜 - 날짜 = 숫자 (날짜에서 날짜빼면 그사이의 며칠인지를 뽑는것이기 때문에 날짜가 뽑히는게 아닌 숫자가 뽑힌다.) 날짜 + 숫자 = 날짜 날짜 - 숫자 = 날짜 (months_between) (날짜 사이의 달 구하기) 예시 : 오늘 날짜에서 입사일을 빼보세요 select sysda..
SQL 단일행 함수 - 숫자함수 (Round, Trunc, Mod)반올림, 숫자버리기, 나누기 숫자함수 ROUND (반올림 하여 출력) 예제 : 876.567 소수점 두번째 자리인 6에서 반올림 해서 출력 select round(876.567, 1) from dual; 두번째 자리에서 반올림하면 소수점 첫번째 자리 값만 출력되기 때문에 1 이다. 0 은 = '.' 의 자리수를 의미한다 round(숫자, 0 ) 의 0 은 쓰나, 안쓰나 같은 값이 나온다. 문제 : 우리반 테이블에서 나이를 출력하는데 , 일의 자리에서 바로 반올림 select round(sal, 2) from emp; Trunc (숫자를 버리고 출력하기) 예제 : 876.567 출력, 소수점 두번짜자리인 6과 그 이후 숫자를 모두 버리고 출력 select trunc(876.567, 1) from dual; 설명 : 소수점 이후는 지정..
SQL 단일행 함수 - 문자함수 (Trim, Rtrim, Ltrim) 문자잘라내기 TRIM, RTRIM, LTRIM ( 특정 철자 잘라내기, 오른쪽 철자 잘라내기, 왼쪽철자 잘라내기 ) select 'smith', ltrim('smith', 's'), rtrim('smith', 'h'). trim ('s' from 'smith') from dual; 설명 : smith 는 데이터가 없음으로 select 절 다음에 ' smith ' 입력 해 준뒤, LTRIM, PTRIM, TRIM 을 해준다. ltrim( '단어', '철자') 이고 rtrim 도 마찬가지 but , trim은 (' 철자' from '단어') 순으로 코딩 해 주어야 한다. 응용문제 : email 에서 도메인을 출력 하시오 trim 을 사용할때 ' 자르는 단어 ' 를 한 뭉텅이로 보는게 아니고 들어가있는 단어 하나하나를 인..