Oracle(2일차) - SELECT(select 문법, 특정컬럼조회, 정렬, null의 의미)

Posted by seunggwon
2009. 6. 19. 13:00 Web Develop Note/Oracle

* select 문법
select {* | 컬럼명}
from table명
order by 정렬기준 정렬방법, [정렬기준 정렬방법];

* 특정컬럼조회
- dept(부서테이블)

DEPTNO : 부서번호 (기본키 = primary key)
DNAME : 부서명
LOC : 지역

- emp(사원)

EMPNO : 사원번호 (기본키 = primary key)
ENAME : 사원명
JOB : 업무
MGR : 상사
HIREDATE: 입사일
SAL : 급여
COMM : 커미션
DEPTNO : 부서번호 (외래키 = foreign key)

- salgrade(급여등급)

GRADE : 호봉
LOSAL : 최저임금
HISAL : 최고임금

- 예제
1. dept 테이블에서 부서번호와 부서명 조회
select deptno, dname
from dept;

2. 사원테이블에서 사원번호, 사원명, 업무, 업무입사일 조회

select empno, ename, job, hiredate
from emp;

3. 사원테이블에서 사원번호, 사원명, 급여, 커미션, 부서번호 조회

select empno, ename, sal, comm, deptno
from emp;

* 정렬
오름차순(asc) : 숫자 작음 -> 큼 , 문자 a->z A->Z ㄱ->ㅎ날짜 예전->최근
내림차순(desc) : 숫자 큼 -> 작음, 문자 z->a Z->A ㅎ->ㄱ 날짜 최근->예전

*distinct : 중복되는 컬럼을 한번씩만 보여줌

- 예제
1. 부서테이블에서 부서명 내림차순 조회
select distinct *
from dept
order by dname desc;


2. 동일부서내 급여를 많이 받는 사원부터 조회
select *
from emp
order by sal desc;

3. 동일부서내에 급여를 많이 받는 사원부터 출력하되 급여가 동일하다면 이름 오름차순
select *
from emp
order by sal desc, ename asc;

* 별칭
- 칼럼명 [as] 칼럼alias
- 칼럼명 "칼럼alias" : "~~"에는 소문자, 대소문자, 공백, 한글

* null의 의미
0(zero)도 아니고, 빈공간도 아니다. 
미확정(해당사항 없음), 알수 없는(unknown) 값을 의미한다.
어떤 값인지 알 수 없지만 어떤 값이 존재하고 있다.
? 혹은 ∞의 의미이므로 연산, 할당, 비교가 불가능하다.

*산술연산
+, -, *, /

* dual 테이블
산술연산이나 가상컬럼 등의 값을 한번만 출력하고 싶을 때 많이 사용하는 테이블

- 예제
오늘 날짜를 한번만 출력
select sysdate
from dual;