본문 바로가기
데이터베이스/Oracle

[Oracle] Select문 연습1

by BGwon_C 2023. 8. 1.

레코드 추출

select 필드, 필드,.. from 테이블명;

select * from 테이블명;

select * from 테이블명 order by 필드명 asc; 오름차순(asc는 생략가능)

     select * from 테이블명 order by 필드명 desc; 내림차순

     select * from 테이블명 order by 필드명 asc, 필드명 desc;

     → 첫번째 필드에 똑같은 데이터가 존재하면 두번째 필드로 정렬한다.

select * from 테이블명 where 조건;

 

select name, age, height, logtime from dbtest;

select name, age from dbtest;

select * from dbtest;

select * from dbtest where name='홍길동';

select * from dbtest where name like '%';

select * from dbtest where name like '_%';

select * from dbtest where name like '__%';

select * from dbtest where name='hong'; -- 데이터는 대소문자 가린다.

select * from dbtest where lower(name) = 'hong'; -- lower() 소문자

select * from dbtest where upper(name) = 'HONG'; -- upper() 대문자

select * from dbtest where name like '%%' and age<20;

select * from dbtest where age is null;

select * from dbtest where age is not null;

select name, age+height from dbtest;

select name, age+height as "나이와 키의 합" from dbtest;

select * from dbtest order by name asc; -- asc는 생략가능

select * from dbtest order by name desc;

 
💡 ※ 주의

SQL Developer에서 select로 추출한 내용중 (Null)은 널값이 아니라 그냥 빈칸에 sql developer가 (Null)로 표시한 것 뿐이다. 실제로는 Null값이 아니다.

 


select문 형식

[형식]

   select [distinct] [컬럼1, 컬럼2,.....][as 별명][ || 연산자][*]

   from 테이블명

   [where 조건절]

 

distinct : 중복제거

  • * : 모든
  • 조건절 : and, or, like, in, between and, is null, is not null

 

 

 

ex1) employees 테이블의 모든 사원의 사원번호, 이름(last_name), 급여 검색

select employee_id, last_name, salary from employees;

 

ex2) 별명붙이기(as는 생략가능)

        employees테이블의 모든 사원의 사원번호, 이름(last_name), 급여 검색

        조건) title 사원번호, 이름 ,급여로 출력할것

select employee_id as 사원번호 , last_name as "이 름", salary as "급 여"

from employees;

 

ex3) employee테이블에서 사원번호, 이름, 연봉을 구하시오

        조건1) 연봉 = 급여 * 12

        조건2) 제목을 사원번호, 이름, 연봉으로 출력

select employee_id as 사원번호 , last_name as "이 름", salary*12 as "연 봉"

from employees;

 

ex4) 연결연산자( || ) : 컬럼을 연결해서 출력

        frist_namelast_name을 연결해서 출력하시오

 

                이    름

          -------------------

           Ellen      Abel

 

select first_name||' '||last_name as "이 름" from employees;

 

[문제1] 다음처럼 출력하시오

 

[문제2] 다음처럼 출력하시오 (last_name, job_id)

 


 

ex5) distinct(중복제거)

        employees 테이블에서 부서ID를 출력하시오

select distinct department_id from employees;

 

ex6) 10번부서 또는 90번부서 사원들의 이름, 입사일, 부서ID를 출력하시오

select last_name, hire_date, department_id

from employees

where department_id=10 or department_id=90;

 

ex7) 급여가 2500이상 3500미만인 사원의 이름(last), 입사일, 급여를 검색하시오

select last_name, hire_date, salary

from employees

where salary>=2500 and salary<3500;

 


[문제3] 급여가 2500이하 이거나 3000이상이면서 90번 부서인 사원의 이름, 급여, 부서ID를 출력하시오.

조건1) 제목은 사원명, 월급, 부서코드로 하시오

조건2) 급여 앞에 $를 붙이시오

조건3) 사원명은 first_namelast_name을 연결해서 출력하시오


ex8) 'King'사원의 모든 컬럼을 표시하시오

select * from employees where last_name='King';

문자열 검색할 때는 , 소문자를 구분

 

select * from employees where lower(last_name)='king';

 

like : 문자를 포함

         '%d' - d로 끝나는

         'a%' - a로 시작하는

         '%test% - test가 포함되어있는

 

         '_a%' - 두 번째 글자가 a로 시작하고 나머지는 무시

         '__a%' - 세 번째 글자가 a로 시작하고 나머지는 무시

 

ex9) 업무IDMAN이 포함되어있는 사원들의 이름, 업무ID, 부서ID를 출력하시오

select last_name, job_id, department_id

from employees

where job_id like '%MAN%';

 

ex10) 업무IDIT로 시작하는 사원들의 이름, 업무ID, 부서ID를 출력하시오

select last_name, job_id, department_id

from employees

where job_id like 'IT%';

ex11) is null / is not null

커미션을 받는 사원들의 이름과 급여, 커미션을 출력하시오

select last_name, salary, commission_pct

from employees

where commission_pct is not null;

 

커미션을 받지 않는 사원들의 이름과 급여, 커미션을 출력하시오

select last_name, salary, commission_pct

from employees

where commission_pct is null;

 

ex12) in연산자 (or연산자의 다른 표현)

업무IDFI_MGR이거나 FI_ACCOUNT인 사원들의 사원번호, 이름, 직무를 출력하시오

select employee_id, last_name, job_id

from employees

where job_id='FI_MGR' or job_id='FI_ACCOUNT';

 

select employee_id, last_name, job_id

from employees

where job_id in('FI_MGR', 'FI_ACCOUNT');

 

ex13) between연산자(and연산자의 다른 표현) : 초과, 미만에서는 사용할 수 없다

급여가 10000이상 20000이하인 사원의 사원번호, 이름, 급여를 출력하시오

select employee_id, last_name, salary

from employees

where salary>=10000 and salary<=20000;

 

select employee_id, last_name, salary

from employees

where salary between 10000 and 20000;

 


[문제4] 업무ID'SA_REP' 이거나 'AD_PRES' 이면서 급여가 10,000를 초과하는 사원들의 이름, 업무ID, 급여를 출력하시오

 

[문제5] Employees테이블의 업무ID가 중복되지 않게 표시하는 질의를 작성하시오

 

[문제6] 입사일이 2005년인 사원들의 사원번호, 이름, 입사일을 표시하시오

 


정답 : 

더보기

 

select * from employees;

--문제1
select employee_id as 사원번호, first_name|| ' '||last_name as "이 름", salary*12||'달러' as 연봉 from employees;

--문제2
select last_name|| ' '|| 'is a' || ' ' || job_id as "Employee Detail" from employees;

--문제3
select first_name||' '||last_name as "사원명", salary as 월급, department_id as 부서코드 from employees
where (salary <= 2500 or salary >= 3000) and department_id = 90;

--문제4
select first_name||' '||last_name as "이름", job_id as 업무ID, salary as 급여 from employees
where job_id in ('SA_REP', 'AD_PRES') and salary > 10000;

--문제5
select distinct job_id as 업무ID from employees;

--문제6
select employee_id as 사원번호, first_name||' '||last_name as "이름", hire_date as 입사일 from employees 
where TO_CHAR(hire_date, 'YY-MM-DD') >= '05-01-01' and TO_CHAR(hire_date, 'YY-MM-DD') <= '05-12-31';

select employee_id as 사원번호, first_name||' '||last_name as "이름", hire_date as 입사일 from employees 
where hire_date like '05%';

'데이터베이스 > Oracle' 카테고리의 다른 글

[Oracle] DDL / DML / DCL  (0) 2023.08.02
[JDBC] 웹과 오라클DB 연동하기  (0) 2023.08.01
[Oracle] Select문 연습2  (0) 2023.08.01
[Oracle] 데이터베이스(DB)의 개념  (0) 2023.08.01
[Oracle] 설치 및 설정  (0) 2023.07.31

댓글