- 데이터 조작어(Data Manipulation Language, DML)
- 데이터 추가(INSERT), 변경(UPDATE), 삭제(DELETE)할 때 사용
- INSERT
- 테이블에 새로운 행 삽입
- INSERT INTO 테이블명 VALUES(값1, 값2, …);
- 컬럼명 생략 가능하나, 삽입할 값이 테이블의 컬럼 수와 순서도 동일해야 한다.
- INSERT INTO 테이블명(컬럼1, 컬럼2, …) VALUES (값1, 값2, …);
- UPDATE
- 기존 행에 있는 데이터 값 변경
- UPDATE 문에 WHERE 절이 없으면 모든 행의 값이 변경되므로 주의!
- UPDATE 테이블명 SET 컬럼1=값1, 컬럼2=값2 [WHERE 조건];
- JOIN을 사용한 UPDATE
- 하위 쿼리에서 메인 쿼리의 대상 테이블을 참조하면 오류 발생하므로 서브쿼리 대신 조인을 사용해야 한다!
- UPDATE 테이블명 뒤에 JOIN 사용
- JOIN 예시
-
UPDATE 고객 AS c JOIN (SELECT ROUND(AVG(마일리지)) AS 평균마일리지 FROM 고객 WHERE 담당자직위='대표 이사' GROUP BY 담당자직위) AS 평균 SET c.마일리지= 평균.평균마일리지 WHERE c.고객번호='ZZZAA'; SELECT * FROM 고객;
-
- DELETE
- 기존에 있는 행을 삭제
- DELETE 문에 WHERE 절이 없으면 모든 행이 삭제되므로 주의!
- DELETE FROM 테이블명 [WHERE 조건];
- JOIN 사용한 DELETE
- 하위 쿼리에서 메인 쿼리의 대상 테이블을 참조하면 오류 발생하므로 서브쿼리 대신 조인을 사용해야 한다!
- 두 테이블에서 조건 충족하는 행 삭제 (INNER JOIN)
-
DELETE 테이블명1, 테이블명2 FROM 테이블명1 INNER JOIN 테이블명2 ON 테이블명1.컬럼명 = 테이블명2.컬럼명 WHERE 테이블명1.컬럼명 = 값;
-
- 한 테이블에서 조건 충족하는 행 삭제 (LEFT JOIN)
-
DELETE 부서 FROM 부서 LEFT JOIN 사원 ON 부서.부서번호 = 사원.부서번호 WHERE 사원.사원번호 IS NULL;
-
- INSERT ON DUPLICATE KEY UPDATE
- 레코드가 없다면 새롭게 추가하고, 이미 있다면 데이터 변경
- 형식
-
INSERT INTO 테이블명(컬럼1, 컬럼2, ...) VALUES(값1, 값2, ...) ON DUPLICATE KEY UPDATE 컬럼1 = 값1, 컬럼2 = 값2, ...;
- ON DUPLICATE KEY UPDATE 사용하려면 INSERT INTO 절에서 지정한 컬럼 중에 기본키 컬럼이 존재해야 한다.
-
'SQL' 카테고리의 다른 글
[SQL] 제약 조건 (0) | 2024.03.23 |
---|---|
[SQL] DDL (CREATE, ALTER, DROP) (0) | 2024.03.23 |
[SQL] 데이터 타입 (0) | 2024.03.22 |
[SQL] 서브 쿼리 (0) | 2024.03.22 |
[SQL] JOIN (CROSS, INNER, OUTER, SELF) (0) | 2024.03.22 |