[데이터베이스] 15일차 - select(where,like,order by,in,between), 함수 :: 소림사의 홍반장!
-- hr 계정 언락
alter user hr account unlock;

-- hr 계정 비밀번호 설정
alter user hr identified by hr;

-- schema : table이나 view 등이 이루고 있는 논리 단위
-- table : row-행, column-열로 이루어진 데이터 집합체
select * from tab;
select * from employees;
select employee_id, first_name from employees;

--alias 멸칭 붙이기
select employee_id 사원번호, first_name as 이름,
  last_name "성", salary "월 급 Dolloar", salary Dollar
from employees;



-- table 구조 파악 : desc[ribe]
desc employees;
select job_id from employees;

-- 중복된 값을 제거 : distinct
select distinct job_id from employees; 
        ------------->        


-- where 절 : 조건절
select * from employees
 where salary >= 5000; -- 5000달러 이상의 월급만 조회


-- 부서번호가 100번인 사원들 출력
select * from employees where department_id = 100;

-- 직업이 IT 프로그래머 인 사람들 출력 'IT PROG'
select * from employees where job_id = 'IT_PROG';



-- order by 정렬 : 오름차순(ASC), 내림차순(DESC)
select * from employees order by salary;  -- 오름차순이 기본값이다
select * from employees order by salary DESC;

-- 100번 부서 사람들을 월급의 내림차순으로 출력하시오
select * from employees where department_id = 100 order by salary desc;



-- 월급으로 1차정렬, 이름(first_name)으로 내림차순 정렬
select first_name, salary from employees order by salary desc, first_name;



** select 쿼리 실행(파싱) 순서 ( from - where - group by - having - select - order by )

(5) select

(1) from

(2) where

(3) group by

(4) having

(6) order by


-- where 조건절 2개 이상 ( and, or )
-- 직업이 IT_PROG 이고 월급이 5000 이상인 사원들 출력 ( 이름 역순으로 )
select * from employees
 where job_id = 'IT_PROG' and salary >= 5000
 order by first_name desc; 
-- where
select * from employees
 --where job_id = 'FI_ACCOUNT' or job_id = 'IT_PROG';
 --where job_id in ('FI_ACCOUNT', 'IT_PROG'); -- or 의 경우에만 해당, 위와 동일
 --where not job_id in ('FI_ACCOUNT', 'IT_PROG'); -- 부정
 where job_id not in ('FI_ACCOUNT', 'IT_PROG'); -- 부정
-- like 연산자
-- _(자리수), %(모든것) 와 같이 쓰인다.
select *
from employees
--where first_name like 'Steven';
--where first_name like 'S%';
--where first_name like '___e%';
--where first_name like '%s%';  -- 이경우엔 대문자S로 시작하는 사람은 검색 안됨
where lower(first_name) like '%s%'; -- 대문자까지 검색 가능!!

-- 같지 않음 ( !=, <>, ^= )
-- 날짜 이름도 부등호 사용 가능
select * 
from employees
where hire_date >= '00/01/01';

-- 00'년도에 입사한 사람들을 출력
select *
from employees
where hire_date >= '99/01/01' and hire_date < '00/01/01';
--where hire_date like '99%';

--between A and B
--월급이 5000~9000 사이의 사람들 출력
select *
from employees
--where salary >=5000 and salary <= 9000 order by salary desc;
where salary between 5000 and 9000 order by salary desc;

--null값 비교
select * from employees
--where commission_pct is null;   --값이 없을때
where commission_pct is not null; -- 값이 있을때

-- 함수 ( function )
-- ceil 올림
select 1, '완샘', ceil(0.5), ceil(0.2), ceil(0.333*10)/10
from dual;    -- 있는 그대로 출력, 주로 테스트용
--floor 내림
select floor(0.999*10)/10
from dual;
--round 반올림
select round(0.4), round(0.6)
from dual;


2012/08/16 - [Dev. 데이터베이스/SQL 예제] - [SQL 문제] 기본 select 문제


2012/08/16 - [Dev. 데이터베이스/Oracle 관련] - [Oracle SQL Reference] 오라클 함수 menual


다른 카테고리의 글 목록

Dev. 640시간 뭉개기/강의내용정리 카테고리의 포스트를 톺아봅니다