KDT/DB

240207 DB - 고급 Subquery 2, DML 1

001cloudid 2024. 2. 7. 12:50
728x90

고급 subquery 

3. 단일컬럼 서브쿼리

서브쿼리로부터 메인쿼리로 단일 컬럼을 기준으로 값(단일행, 다중행)이 반환되는 유형

메인쿼리 좌변에 단일컬럼이 있으면 됨 = 비쌍 비교 방식

select employee_id, manager_id, department_id
from employees
where manager_id in (select manager_id from employees where employee_id in (174,141))
and department_id in (select department_id from employees where employee_id in (174,141))
and employee_id not in (174,141);

단일 컬럼 서브쿼리 + 다중행 서브쿼리

 

4. 다중컬럼 서브쿼리

서브쿼리로부터 메인쿼리로 다중컬럼을 기준으로 값(단일행, 다중행)이 반환되는 유형

메인쿼리 좌변에 다중 컬럼이 있으면 됨 = 쌍 비교 방식

select employee_id, manager_id, department_id
from employees
where (manager_id, department_id) in (select manager_id, department_id from employees where employee_id in (174,199))
and employee_id not in (174,199);

 

부서별 최소급여를 받는 사원의 정보 출력

select first_name, department_id, salary
from employees
where (salary, department_id) in (select min(salary), department_id from employees group by department_id)
order by department_id;

다중 컬럼 서브쿼리 + 다중행 서브쿼리

 

단일행 서브쿼리(단일행 비교연산자)

다중행 서브쿼리(다중행 비교연산자)

단일컬럼 서브쿼리(비쌍 비교)

다중컬럼 서브쿼리(쌍 비교)


연습문제 1

select employee_id, last_name
from employees
where department_id in (select department_id from employees where lower(last_name) like '%u%');

 

연습문제 2

select employee_id, last_name
from employees
where salary > (select avg(salary) from employees)
and department_id in (select department_id from employees where lower(last_name) like '%u%');

 


데이터조작어(DML)

  • 테이블에 새로운 행 추가(insert)
  • 테이블의 기존 행 수정(update)
  • 테이블의 기존행 삭제(delete)

1. insert 구문

insert into 테이블명[(컬럼명1, 컬럼명2, ....)]
value (값1,값2,...);

 

2. update 구문

 

3. delete 구문

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'KDT > DB' 카테고리의 다른 글

240216 DB - 치환 변수  (0) 2024.02.16
240214 DB - DML 2, 트랜잭션  (0) 2024.02.14
240202 DB - Subquery, 고급 Subquery 1  (0) 2024.02.02
240131 DB - 고급 JOIN 2  (0) 2024.01.31
240126 DB - JOIN 2, 고급 JOIN 1  (0) 2024.01.26