삭제하기 - 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 값으로도 갱신이 가능하다.

 

+ Recent posts