
정렬
오름차순
select empno, ename, sal as salary from emp order by sal asc;
select empno, ename, sal as salary from emp order by salary asc;
select empno, ename, sal as salary from emp order by 3 asc;
내림차순
select empno, ename, sal as salary from emp order by sal des;
select empno, ename, sal as salary from emp order by salary desc;
select empno, ename, sal as salary from emp order by 3 desc;
두 개 이상의 컬럼으로 정렬
select deptno, empno, ename, job, hiredate
from emp
order by deptno asc, hiredate asc;
select list 에 없는 컬럼으로 정렬
select empno, ename, hiredate
from emp
order by sal desc;
null 값이 포함된 경우의 정렬
select * from emp order by comm asc;
select * from emp order by comm asc nulls first;
select * from emp order by comm desc;
select * from emp order by comm desc nulls last;
가공한 결과에 의한 정렬!!
- ename의 두번째 글자를 기준으로 오름차순?
select empno, ename, substr(ename, 2, 1) from emp;
select empno, ename, substr(ename, 2, 1) from emp order by substr(ename, 2, 1);
select empno, ename from emp order by substr(ename, 2, 1);
- hiredate의 요일 기준으로 오름차순?
select empno, hiredate, to_char(hiredate, 'd day') from emp;
select empno, hiredate, to_char(hiredate, 'd day') from emp order by to_char(hiredate, 'd day');
select empno, hiredate from emp order by to_char(hiredate, 'd day');
데이터를 연결하는 방법들
1 Join
select t1.empno, t1.ename, t2.sal
from t1, t2
where t1.empno = t2.empno;
2 Subquery
select empno, ename, (select sal from t2 where t2.empno = t1.empno) as sal
from t1;
3) User-Defined Function
create or replace function uf_t2_sal(a t1.empno%type) return t2.sal%type
is
v_sal t2.sal%type;
begin
select sal into v_sal
from t2
where empno = a;
return v_sal;
end;
/
select empno, ename, uf_t2_sal(empno) as sal
from t1;
4) Set Operator
col ename format a30
select empno, max(ename) as ename, max(sal) as sal
from (select empno, ename, null as sal from t1
union all
select empno, null, sal from t2)
group by empno;
Query Transformations
Query Transformation 은 Transformer 의 기능이며 '개발자가 작성한 SQL을 옵티마이져가 다른 모습으로 재작성하는 것'
예) in이 or로 변환된다.
오늘의 tip
기본적으로 내가 만드는 테이블은 전부다 NOT NULL로 해라
(안전하려면 어쩔 수가 없다.)
(혜택이 훨씬 크다.)
오라클에서 설계할 때 왠만하면 다 NOT NULL로 해라!!!!!!!!!
오름 차순이면 null 은 맨 뒤에 나온다.
(물론 nulls first로 null이어도 가장 앞에 나오게 할 수 있다.)
SQL 실력 상승시키는 2가지 포인트
단일행 함수
집계함수 roll up, over, 에널리틱 function
_ 와일드카드 무시방법....
escape '!';
'%A!_A%' escape '!';
DBMS 버전이 올라갈 수록 (최신버전일 수록)
내가 쿼리를 날려도 자체적으로 좀더 효율적으로 변환 한 다음에 수행한다.
DB엔진?이란 표현을 왜 쓸까?
엔진이란?
다른 컴포넌트를 위해 자기 본연의 기능을 수행한는 구성품
IT를 하는 사람들이 아는거다.
Data를 Information을 바꾸기 위해 가장 핵심이고 본질적인 기능을 수행하는게 DBMS이므로
엔진이라는 표현을 한다.
'Oracle' 카테고리의 다른 글
[Oracle]그룹함수_1104 (0) | 2022.11.04 |
---|---|
[Oracle]Oracle 주요함수_1103 (0) | 2022.11.03 |
[Oracle]Join 기본(2)_1101 (0) | 2022.11.01 |
[Oracle]Join 기본(1)_1031 (1) | 2022.10.31 |
[Oracle]계정 생성,접속/포워드 엔지니어링__개발공부 80일차 (0) | 2022.06.27 |