연산자 개념


select last_name, department_id, hire_date
from employees
order by 2 desc;

select last_name, department_id, hire_date
from employees
order by 2 desc, hire_date desc

select last_name "이 름", salary*12 "연 봉"
from employees
order by 2 desc
단일행 함수 개념



select employee_id, last_name, department_id
from employees
where lower(last_name) = 'higgins';

select mod(10, 3)
from dual;

select round(35765.357, 2) from dual;
select round(35765.357, 0) from dual;
select round(35765.357, -3) from dual;

select trunc(35765.357, 2) from dual;
select trunc(35765.357, 0) from dual;
select trunc(35765.357, -3) from dual;
-
select ceil(35765.357) from dual;

select concat('hello', ' world') from dual;

create table text (str1 char(20),str2 varchar2(20));
insert into text(str1,str2) values('엘리트','엘리트');
insert into text(str1,str2) values('elite','elite');
commit;
select * from tab;
select * from text;
select length(str1),length(str2) from text where str1='엘리트';
select lengthb(str1),lengthb(str2) from text where str1='엘리트';
-
select length(str1),length(str2) from text where str1='elite';
select lengthb(str1),lengthb(str2) from text where str1='elite';

select length('hello') from dual;
select length('헬로우') from dual;
select lengthb('hello') from dual;
select lengthb('헬로우') from dual;

select instr('HelloWorld', 'W') from dual;
select instr('HelloToWorld', 'o', -5) from dual;

select substr('I am very happy', 6, 4) from dual;
select substr('I am very happy', 6) from dual;

select employee_id, concat(first_name, last_name) name,
length(concat(first_name, last_name)) "length"
from employees
where substr(last_name, -1, 1) = 'n';

select width_bucket(74, 0, 100, 10)
from dual;

select rtrim('test ') || 'exam' from dual;
select ltrim(' test') || 'exam' from dual;
select trim(' test ') || 'exam' from dual;

select sysdate
from dual;
-
select to_char(sysdate)
from dual;
-
select to_char(sysdate, 'YYYY"년" MM"월" DD"일"')
from dual;
-
select to_char(to_date('13/1/5'), 'YYYY"년" MM"월" DD"일"')
from dual;
-
select to_char(to_date('13/1/5'), 'YYYY"년" fmMM"월" DD"일"')
from dual;
-
select to_char(to_date('13/1/5'), 'YYYY"년" fmMM"월" fmDD"일"')
from dual;

select add_months(sysdate, 6) from dual;

select last_day(sysdate) from dual;
select last_day('2004-02-01') from dual;
select last_day('2005-02-01') from dual;

select last_day(sysdate) - sysdate || '일' "남은 날수" from dual;

select months_between(sysdate, add_months(sysdate, 6)) from dual;
select months_between(add_months(sysdate, 6), sysdate) from dual;
select round(months_between('2014-02-10', '2013-10-21')) from dual;
select trunc(months_between('2014-02-10', '2013-10-21')) from dual;

desc employees;
select employee_id, last_name
from employees
where department_id='90';
-
select months_between(add_months(sysdate, 6), sysdate)
from dual;

select last_name, to_char(salary, 'L99,999.00')
from employees
where last_name='King';

select last_name, hire_date
from employees
where hire_date='05/06/25';
-
select last_name, hire_date
from employees
where hire_date='05/6/25';


select to_char(to_date('97/9/30', 'yy-mm-dd'), 'yyyy-mm-dd')
from dual;
-
select to_char(to_date('97/9/30', 'rr-mm-dd'), 'rrrr-mm-dd')
from dual;
-
select to_char(to_date('57/9/30', 'yy-mm-dd'), 'yyyy-mm-dd')
from dual;
-
select to_char(to_date('57/9/30', 'rr-mm-dd'), 'rrrr-mm-dd')
from dual;

select last_name, to_char(hire_date, 'DD-MON-YYYY') hire_date
from employees
where hire_date >= '2005/01/01';
-
select last_name, to_char(hire_date, 'DD-MON-YYYY') hire_date
from employees
where hire_date >= to_char(to_date('2005/01/01', 'yy-mm-dd'), 'yy-mm-dd');

select count(salary), max(salary), min(salary), trunc(avg(salary), 0), to_char(sum(salary), 'L999,999')
from employees;

select count(*)
from employees
where commission_pct is null;

select count(distinct nvl(department_id,0))
from employees
-
select distinct department_id from employees;
select distinct nvl(department_id, 0) from employees;

select last_name 사원이름, salary 급여, nvl(commission_pct,0) 커미션, salary*12 + (salary*12)*nvl(commission_pct,0) 연봉
from employees;


select job_id as 직무,
decode(job_id, 'SA_MAN', 'Sales Dept', 'SA_REP', 'Sales Dept', 'Another') 분류
from employees
order by 2;
-
select job_id,
case job_id when 'SA_MAN' then 'Sales Dept'
when 'SA_REP' then 'Sales Dept'
else 'Another'
end
from employees
-
select job_id,
case when job_id = 'SA_MAN' then 'Sales Dept'
when job_id = 'SA_REP' then 'Sales Dept'
else 'Another'
end
from employees
order by 2;

select employee_id 사원번호, last_name 사원명, case
when salary < 10000 then '초급'
when salary < 20000 then '중급'
else '고급'
end "구 분"
from employees
order by 3, 2;

select rank(3000) within group(order by salary desc) "rank"
from employees;

select employee_id, last_name, salary, rank() over(order by salary desc)
from employees;

select employee_id, salary,
first_value(salary)
over(partition by department_id order by salary desc)
as "부서별 최고급여",department_id
from employees;

select employee_id 사원번호, last_name 이름, salary 급여, nvl(commission_pct, 0) 커미션,
to_char(salary*12+ salary*12*nvl(commission_pct,0), '$999,999') "연봉"
from employees;

select employee_id 사원번호, last_name 이름, nvl(manager_id, 1000) 매니저ID
from employees;

select last_name, salary, case
when salary>=7000 then '고급'
when salary>=3000 then '중급'
else '초급'
end "grade"
from employees
order by 3
익숙하지 않은 코드
- order by에 1, 2, 3 인덱스 지정 가능(select 문 컬럼순)
- 날짜 형식 YYYY, MM, DD
- 숫자 형식 9, 0, $, L, . , ,
- 기타 함수 nvl, decode, case
- 가상 테이블 from dual
- 지정한 문자열 찾기 instr()
- case when then
- rank, first_value, over 함수
- trunc() 내림, mod(10, 3) 나머지