본문 바로가기

자바스프링웹공부(2024)/마이에스큐엘

2024.08.28. 데이터조작어(DML) - insert, update, delete

반응형

* 데이터 조작어(DML)란?

- 테이블에 데이터를 삽입, 수정, 삭제하는 명령어
- DML의 종류 : insert, update, delete

 

(1) 데이터 삽입(insert)

 [문법] insert into 테이블명 [(컬럼1, 컬럼2, 컬럼3, ...)]  values (값1, 값2, 값3, ...);

 

- insert 작업시 테이블명 뒤에 컬럼리스트를 생략한 경우에는 values 절 뒤에 기본컬럼 순서대로 모든 값을 나열해야한다.
- insert into 에서 컬럼명 생략하는 경우 : values에서 desc나 select * 실행시 나오는 컬럼순서대로 모두 작성해야한다.

- insert 작업시 테이블명 뒤에 컬럼리스트를 작성한 경우 : values의 값 리스트와 순서/개수 등이 일치해야 함.
- insert 작업시 null 값을 자동(암시적)으로 삽입하려면 : 데이터를 삽입 하지않으면 된다. 

  -- 총 4개의 컬럼 중 2개는 입력하지 않으면 null 값이 자동 입력된다.
  insert into departments(DEPARTMENT_ID, DEPARTMENT_NAME) values (300, 'Java');

- insert 작업시 null 값을 수동(명시적)으로 삽입하는 방법.

insert into departments values(310, 'Jsp', null, null);

 

- insert + 서브쿼리 예제

Q. employees 테이블에서 job_id에 'rep'가 포함된  업무 담당자의 사번,  이름, 급여, 커미션 정보를 sales_reps 테이블로 삽입(복사)하시오

insert into sales_reps 
	select employee_id, last_name, salary, commission_pct
	from employees
	where job_id like '%rep%';

 

Q.  employees 테이블의 사원정보 전체를 copy_emp 테이블로 삽입(복사)하기

insert into copy_emp
	select *
	from employees;

 

Q. 다중행 삽입하기

insert into departments
values 	(320, 'CSS', 126, 1700),
 		(330, 'HTML', null, 1700),
		(340, 'Spring', 103, null);

 

 

(2) 데이터 수정(update)

[문법] update 테이블명
          set 컬럼명1 = 값1, 컬럼명2 = 값2, 컬럼명3 = 값3, ...]
          [where 조건문];

 

- update + 서브쿼리 예제
Q. copy_emp 테이블의 113번 사원의 job_id, salary를  employees 테이블의 205번 사원과 동일하게 변경하시오.

update copy_emp
set job_id = ( 	select job_id from employees
				where employee_id = 205),
	salary = ( 	select salary from employees
				where employee_id = 205)
where employee_id = 113;

Q. copy_emp테이블에서 location_id(departments 테이블에 있는)가 1800인 부서에 소속된 직원들의 급여를 10% 인상하시오.

update copy_emp
set salary = salary * 1.1
where department_id in (select department_id
from departments
where location_id = 1800);

 

(3) 데이터 삭제(delete)
[문법] delete from 테이블명  [where 조건문];
- 테이블로부터 특정행을 삭제한다.

- where절 없이 delete 구문을 실행하면 테이블의 모든 행 삭제됨.

 

Q. departments 테이블의 300번 부서를 삭제하시오.

delete from departments where department_id = 300;

 

- delete + 서브쿼리 예제
Q. copy_emp 테이블에서 location_id가 1800인 부서에 소속된 직원들을 삭제하시오

delete from copy_emp 
where department_id = ( select department_id
                    from departments
                    where location_id = 1800);

 

반응형