삭제하기 - DELETE
1. DELETE로 행 삭제하기
SYNTAX) DELETE 명령
DELETE FROM 테이블명 WHERE 조건식
WHERE 조건에 일치하는 모든 행을 삭제한다.
ex)
DELETE FROM sample41 WHERE no = 1;
데이터 갱신하기 - UPDATE
1. UPDATE로 데이터 갱신하기
SYNTAX) UPDATE 명령
UPDATE 테이블명 SET 열명 = 값 WHERE 조건식
ex)
UPDATE sample41 SET b = '2022-10-07' WHERE no = 2;
(여기서 = 는 비교 연산자가 아닌 대입 연산자이다)
(WHERE 구를 생략하면 모든 행이 UPDATE 되기 때문에 주의해야 한다)
=> WHERE 조건에 해당하는 모든 행이 UPDATE 된다.
2. UPDATE로 갱신할 경우 주의사항
UPDATE 명령으로 증가 연산도 할 수 있다.
ex)
UPDATE sample41 SET no = no + 1;
현재의 no 값에 1을 더한 값으로 UPDATE 하게 된다.
3. 복수열 갱신
콤마로 구분하여 갱신할 열을 여러개 지정 가능하다.
UPDATE 테이블명 SET 열명1 = 값1, 열명2 = 값2, ... WHERE 조건식
- SET 구의 실행 순서
MYSQL은 SET 구에 기술된 순서대로 갱신이 바로바로 처리됨
Oracle은 SET구에 기술된 순서에 상관없이 갱신 이전의 값을 활용해 처리함.
ex)
UPDATE sample41 SET no = no + 1, a = no;
UPDATE sample41 SET a = no, no = no + 1;
MySQL에서는 두 UPDATE문의 결과가 다르게 나온다.
우리가 생각하는 일반적인 논리 순서대로 갱신된다고 생각하면 편하다(순차적으로 바로 적용)
no = 2 라고 가정했을 때,
첫 번째 쿼리문에서는 no가 3으로 갱신되고, a는 갱신된 no의 값인 3을 갖게 되어
no = 3, a = 3인 결과를 얻는다.
두 번째 쿼리문에서는 a가 2가 되고, no는 3이 되어
no = 3, a = 2인 결과를 얻는다.
그러나 Oracle에서는 위와 같은 순서가 바뀐 2개의 UPDATE문을 실행하면 결과가 같게 나온다.
no = 2라고 가정했을 때,
두 쿼리문 다 no = 3, a= 2인 결과를 얻는다.
즉, MySQL은 SET 구의 기술 순서에 영향을 받지만 Oracle은 순서에 영향을 받지 않는다.
그러므로 MySQL에서는 처리 순서를 고려할 필요가 있다.
4. NULL로 갱신하기
ex)
UPDATE sample41 SET a = NULL;
NULL 값으로도 갱신이 가능하다.
'SQL > SQL 첫걸음' 카테고리의 다른 글
21강[COUNT 이외의 집계함수], 22강[그룹화 - GROUP BY] (0) | 2022.10.10 |
---|---|
19강[물리삭제와 논리삭제], 20강[행 개수 구하기 - COUNT] (0) | 2022.10.09 |
15강[CASE 문으로 데이터 변환하기], 16강[행 추가하기 - INSERT] (1) | 2022.10.07 |
13강[문자열 연산], 14강[날짜 연산] (0) | 2022.10.04 |
11강[결과 행 제한하기 - LIMIT], 12강[수치 연산] (0) | 2022.10.03 |