오라클 데이터베이스 입문 정리
@테이블명 , 칼럼명은 대문자로 작성권장
@
order by 는 속도저하를 일으키므로 웬만하면 쓰지않는다.
@
union할때는 열개수와 열의 자료형이 순서별로 일치해야하고 최종 출력되는 열이름은 먼저 작성한 select문의 열이름으로 표기됨
@ 첫문자가 F와 같거나 뒤쪽인것만 검색한다.
SELECT * FROM EMP WHERE ENAME >= 'F';
@ FORZ를 포함한 문자열보다 알파벳순서로 앞에있는행 출력 (첫번째문자가같다면 두번째..세번째 순서대로 사전식 정렬)
SELECT * FROM EMP WHERE ENAME >= 'FORZ';
@연산자 우선순위
산술연산자> 비교연산자 > IS NULL,LIKE, IN > BETWEEN연산자 > NOT > AND > OR
@함수
INITCAP(문자열) : 첫글자만 대문자로,나머지는소문자로 변환
INSTR(대상문자열데이터,위치를 찾으려는 부분문자,위치찾기를 시작할 대상문자열 데이터위치, 시작위치에서 찾으려는 문자가 몇번째인지 지정) : 문자열에서 특정 문자 위치반환 (시작위치값에 음수를 쓰면 원본문자열데이터의 오른쪽 끝부터 왼쪽방향으로 검색한다.
ex) INSTR(ENAME,'N',-2) 으로 ALLEN을 검색하면 0을 반환 . -2 위치 인 'M'부터 왼쪽으로 검색
ex) INSTR(ENAME,'N',-2) 으로 TURNER을 검색하면 4 반환 . -2위치인 'E'부터 왼쪽으로검색하다가 'N'을 만나면 'N'의 인덱스인 4를 반환함.
@대소문자 구분않고 SCOTT단어 찾기
WHERE UPPER(ENAME) LIKE UPPER('%scott%');
LIKE문 안에 함수를 적용해도 됨.
@LIKE '%S%'는 INSTR(ENAME,'S') >0 으로 바꿀수있다. INSTR은 찾는게 없으면 0을 반환하기 때문
@deptno그룹지어진 결과에 나온 이름들을 가로로나열
SELECT deptno,
LISTAGG(ename, ',' ) WITHIN GROUP (ORDER BY sal DESC) AS enames
FROM emp
GROUP BY deptno;
@pivot함수 : 2차원표형태로 출력
select *
from(select deptno,job,sal from emp)
pivot(max(sal) for deptno in (10,20,30))
order by job;