DATABASE(oracleDB 11g)/SQL 36

[SQL]조인(JOIN)의 기초-Equi join 과 Non-Equi Join

조인(JOIN)의 기초 - Equi Join과 Non-Equi Join Equi Join #EQUI JOIN 은 조인 조건식에 '='를 사용한다. 내가 한개의 테이블의 열의 정보를 알고있고 그것에 대한 다른 테이블의 정보를 알고 싶을때 예를들어 1234567select department_idfrom employeeswhere employee_id = 110; select department_namefrom departmentswhere department_id = 100;cs이와같이 해당 employees 테이블의 department_id를 연관된 departments 테이블의 department_name을 알고싶을때 위의 예시와같이 select문을 두번을 써야할때 JOIN을 쓸 수 있다. JOIN은 ..

[SQL] 분석 함수

분석 함수 10g 부터 추가된 내용일반적인 group function이 하나의 집단에 하나의 결과만 return 되는 것에 비해, 여러 가지 기준을 적용해 여러 results를 return 할 수 있다. 다음 예시를 보자123select last_name, salary,first_value(salary) over(order by salary desc) 첫번째값연봉from employees;Colored by Color Scriptercs이경우 desc가 있으면 첫번째값(최고연봉) asc가 있으면 첫번째값(최저연봉) 이러한 식으로 출력이 된다. 처리 대상이 되는 행의 집단을 window 라고 한다. 123select first_name 이름, salary 연봉,first_value( salary ) ove..

[SQL]GROUP BY의 기초

GROUP BY의 기초 GROUP BY는 간단하게 '그룹을 지어라'라는 뜻이다. 좀더 말하면, 그룹으로 묶은 col만 불러올 수 있다. 다음의 예시를 보자123select department_id, min(salary), max(salary)from employeesgroup by department_id;cs이경우 group by를 빼면 동작하지 않으나, department_id를 group으로 묶어줌으로써 department_id를 따로 select할 수가 있다. 다음은 잘못된 예시이다.123select employee_id, min(salary), max(salary)from employeesgroup by department_id;cs이 경우 department_id를 group하였으나 emplo..

[SQL]집합 함수의 기초

집합 함수의 기초 집합함수는 값을 계산해서 1개의 값으로 나타내어 준다. 종류는 기본적으로 SUM(), AVG(), MAX(), MIN(), COUNT(), rank()등이 있으며각각 합, 평균, 최대, 최소, 갯수, 순위를 나타낸다 다음은 잘못된 예시이다. (ORA-00937: not a single-group group function)123select last_name, salary, sum(salary)from employees; Colored by Color Scriptercs위의 예시를 볼경우 sum()의 값은 1개인데 나머지 값들이 1개이상이므로 에러가 발생한다. 즉 이러한 다중함수는 다중함수끼리 혹은 1개의 row로만 또는 분석함수를 사용해서 나타내주어야 한다. 다음의 옳은 예시를 보자12..

[SQL]decode와 case함수

decode와 case함수 decode와 case함수는 프로그래밍을 할때 if문과 case문이라고 생각하면 된다. 아래의 예시를 참고하자decode1234567select last_name, department_id,decode(department_id,90, '비서', 80, '영업', 60, '관리') 부서from employeeswhere department_id in (60, 80, 90);cs이경우 90일때 비서, 80일때 영업, 60일때 관리로 표시해서 col을 만들주는 것이다. 또한 col을 표시하기 때문에 부서라는 alias를 사용할 수 있다. case의 경우 쓰는법이 살짝 다르다.123456789select last_name, department_id,casewhen department_..

[SQL]날짜관련함수 연습문제

날짜관련함수 연습문제 사번과 이름, 입사일과 근속연수, 근속일수를 표현이때 값은 근속연수, 근속일수 순으로 내림차순 한다. 12345select employee_id 사번, last_name 이름, hire_date 입사일, trunc(months_between(sysdate, hire_date)/12) 근속연수, trunc(mod(sysdate - hire_date, 365))+1 근속일수from employeesorder by 근속연수 desc, 근속일수 desc;cs SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.

[SQL]width_bucket함수

width_bucket함수 width_bucket( 지정값, 최소값, 최대값, bucket개수 )의 형식으로 사용한다. 지정값을 최소값과 최대값 기준으로 bucket의 개수 만큼 나누어주고 그 등급만큼 할당하여 준다. 입사일 기준으로 근속연수에 따라 30 등급으로 나누고 등급에 따라 1000의 수당을 준다. 2000년 1월 1일 기준. (수당으로 내림차순) 1234select employee_id 사번, last_name 이름, salary 연봉, width_bucket(hire_date, sysdate, '01/01/2000', 30)*1000 수당from employeesorder by 수당 desc;Colored by Color Scriptercs SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을..

[SQL]일반 함수 기초

일반 함수 기초 조건문1. NVL (expr1, expr2)if expr1 is not null then expr1 else expr2사용할 수 있는 데이터 유형은 날짜, 문자 및 숫자.데이터 유형이 일치해야 한다.다음 예시를 참고하자.12345select employee_id, salary, NVL(commission_pct,0.1), NVL(salary*commission_pct, salary*0.1)from employees; select employee_id, salary, NVL(commission_pct,0.1), salary*NVL(commission_pct,0.1)from employees;Colored by Color Scriptercs 2. NVL2 (expr1, expr2, expr3..

[SQL]변환함수

변환함수 데이터 유형 변환에는 암시적 데이터 유형변환과 명시적 데이터 유형변환이 있다.Oracle 서버는 표현식에서VARCHAR2 or CHAR을 NUMBER로 또는 DATE로 자동으로 변환할 수 있다.그리고 표현식 평가 시 NUMBER or DATE를 VARCHAR2로 또는 CHAR로 자동으로 변환할 수 있다. 즉 다음 예시를 참고하면12345select upper(1)from dual; select upper(sysdate)from dual;cs이와 같은 경우 1과 sysdate는 CHAR로 변환된다. 다음은 날짜에 TO_CHAR함수를 쓰는 유효한 날짜 형식으로의 변환의 예시이다.12select to_char(sysdate, 'YYYY/MM/DD')from dual;cs 12select to_char..

[SQL]function 기초

function 기초 arguments 를 fx로 input해서 output을 던져준다.단일 행 함수는 하나의 row의 값을 input해서 output 하는 것을 말한다.다중 행 함수는 여러개의 row값음을input해서 output 하는 것을 말한다. 타입별로 사용할 수 있는 함수, 여러 타입에 범용적으로 사용할 수 있는 함수 otn.oracle.com 에서 software download에 들어가면 원하는 소프트웨어를 다운 받을 수 있다.(상업적 이용 불가.)또한 documentation에서 메뉴얼을 참고할 수 있다. 문자함수 대소문자 변환 함수함수결과 LOWER('TEST Example') test example UPPER('TEST Example') TEST EXAMPLE INITCAP('TEST ..