Notice
Recent Posts
Recent Comments
Link
쯔이's Dev
DML(INSERT, UPDAT, DELETE) 본문
반응형
DQL (QUERY 데이터 정의어) |
SELECT |
DML (MANIPULATION 데이터 조작어) |
INSERT, UPDATE, DELETE |
DDL (DEFINITION 데이터 정의어) |
CREATE, ALTER, DROP |
DCL (CONTROL 데이터 제어어) |
GRANT, REVOKE |
TCL (TRANSACTION 트랜잭션 제어어) |
COMMIT, ROLLBACK |
[ [ 데이터 조작 언어 ] ]
테이블 값을 삽입(INSERT), 수정(UPDATE), 삭제(DELETE)하는 구문
1. INSERT
테이블에 새로운 행을 추가하는 구문
[표현식]
1)
INSERT INTO 테이블명 VALUES ( 값, 값, 값.... )
테이블의 모든 컬럼에 대한 값을 직접 제시해서 한 행을 INSERT하고자 할 때
컬럼의 순번을 지켜서 VALUES에 값을 나열해야함
부족하게 값을 제시할 경우 OR 값을 더 많이 제시한 경우 => 에러
2)
INSERT INTO 테이블명(컬럼, 컬럼, 컬럼..) VALUES(값, 값, 값...)
테이블에 내가 선택한 컬럼에 대한 값만 INSERT할 때 사용
그래도 한 행 단위로 추가되기 때문에 선택 안된 컬럼은 기본적으로 NULL이 들어감
=> NOT NULL 제약조건이 걸려있는 컬럼은 반드시 직접 값을 넣어줘야한다.
단, 기본값이 지정되어 있으면 NULL이 아닌 기본값이 들어감
3)
INSERT INTO 테이블명 (서브쿼리);
VALUES에 직접 값을 명시하는 것 대신 서브쿼리로 조회된 값을 통째로 INSERT가능
2. INSERT ALL
두개 이상의 테이블에 각각 INSERT할 때 사용되는 서브쿼리가 동일한 경우
[표현식]
INSERT ALL
INTO 테이블명1 VALUES(컬럼, 컬럼, 컬럼...)
INTO 테이블명2 VALUES(컬럼, 컬럼...)
서브쿼리;
EX)
INSERT ALL INTO emp_dept VALUES (
emp_id,
emp_name,
dept_code,
hire_date
) INTO emp_manager VALUES (
emp_id,
emp_name,
manager_id
) ( SELECT
emp_id,
emp_name,
dept_code,
hire_date,
manager_id
FROM
employee
WHERE
dept_code = 'D1'
);
3. UPDATE
테이블에 기록되어있는 기존의 데이터를 수정하는 구문
*업데이트시에도 제약조건 잘 확인해야한다.
[표현식 1]
UPDATE 테이블명
SET 컬럼 = '값'
컬럼 = '값'
...
[WHERE 조건] -> 생략시 전체 모든 행의 데이터가 변경
EX1)
UPDATE emp_salary
SET
salary = 7000000,
bonus = 0.2
WHERE
emp_name = '선동일'
EX2)
UPDATE emp_salary
SET
salary = salary * 1.1;
[표현식 2]
UPDATE에서 서브쿼리사용
UPDATE 테이블명
SET 컬럼명 = (서브쿼리)
WHERE 조건
EX) 방명수 사원의 급여와 보너스값을 유재식 사원의 급여와 보너스값으로 변경
UPDATE emp_salary
SET
salary = (
SELECT
salary
FROM
emp_salary
WHERE
emp_name = '유재식'
),
bonus = (
SELECT
bonus
FROM
emp_salary
WHERE
emp_name = '유재식'
)
WHERE
emp_name = '방명수';
EX2)ASIA지역에서 근무하는 사원들의 보너스값을 0.3으로 변경
UPDATE emp_salary
SET
bonus = 0.3
WHERE
emp_id IN ( -- 서브쿼리의 결과값이 여러개이므로 IN 사용
SELECT
emp_id
FROM
emp_salary
JOIN department ON ( dept_code = dept_id )
JOIN location ON ( location_id = local_code )
WHERE
local_name LIKE 'ASIA%'
);
4. DELETE
테이블에 기록된 데이터를 삭제하는 구문(한 행 단위로 삭제가 된다.)
[표현식]
DELETE FORM 테이블명
[WHERE 조건] -> WHERE절 제시안하면 전체행 다 삭제됨
EX)
DELETE FROM department
WHERE
dept_id = 'D1';
728x90
반응형