SQL(1)

YongJun·2024년 2월 19일

SQL

목록 보기
1/1
post-thumbnail

데이터 조작어(DML : Data Manipulation Language) : select, insert, update, delete, merge
데이터 정의어(DDL : Data Definition Language) : create, alter, drop, rename, truncate
데이터 제어어(DCL : Data Control Language) : grant, revoke
트랜젝션 제어 : commit, rollback, savepoint

  • 참고
    select from tab; --테이블 목록 확인
    select
    from user_sequences; --시퀀스 목록 확인
    desc employees; --테이블 구조 확인(describe)

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;

select employee_id 사원번호, last_name 이름, salary 급여 from employees;

ex3)

employee테이블에서 사원번호, 이름, 연봉을 구하시오
조건1) 연봉 = 급여 * 12
조건2) 제목을 사원번호, 이름, 연봉으로 출력

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

ex4)

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

frist_name과 last_name을 연결해서 출력하시오

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

ex5)

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

ex6)

select last_name||' is a '||job_id "Employee Detail" from employees;

ex7)

distinct(중복제거)
employees 테이블에서 부서ID를 출력하시오

select distinct department_id from employees;

ex8)

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

select last_name, hire_date, department_id from employees
where department_id = 10 or department_id = 90;

select last_name, hire_date, department_id from employees 
where department_id in(10,90);

ex9)

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

select last_name, hire_date, salary from employees
where salary>=2500 and salary<3500;

ex10)

급여가 2500이하 이거나 3000이상이면서 90번 부서인 사원의 이름, 급여, 부서ID를 출력하시오.
조건1) 제목은 사원명, 월급, 부서코드로 하시오
조건2) 급여 앞에 $를 붙이시오
조건3) 사원명은 first_name과 last_name을 연결해서 출력하시오

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

ex11)

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

select * from employees
where last_name='King';
--문자열 검색할 때는 대, 소문자를 구분

select * from employees  where  lower(last_name)='king';
--lower : 소문자로 변환하여 출력하는 함수

ex12)

like : 문자를 포함

'%d' : 'd'로 끝나는
'a%' : 'a'로 시작하는
'%test% : 'test'가 포함되어있는
'_a%' : 두 번째 글자가 'a'로 시작하고 나머지는 무시
'__a%' : 세 번째 글자가 'a'로 시작하고 나머지는 무시

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

select last_name, job_id, department_id from employees
where job_id like '%MAN%';

ex13)

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

select last_name, job_id, department_id from employees
where job_id like 'IT%';

ex14)

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;

ex15)

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

업무ID가 FI_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');

ex16)

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;

ex17)

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

select last_name 이름, job_id 업무ID, salary||'원' 급여 from employees
where job_id in('SA_REP','AD_PRES') and salary>10000;

ex18)

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

select distinct job_id from employees;

ex19)

입사일이 2005년인 사원들의 사원번호, 이름, 입사일을 표시하시오

select employee_id, last_name, hire_date from employees
where hire_date like '05%';
profile
개(발자어)린이

0개의 댓글