a battle with myself

[ANSI SQL] 3. 데이터 수정(UPDATE) / 삭제(DELETE) 본문

sql

[ANSI SQL] 3. 데이터 수정(UPDATE) / 삭제(DELETE)

열공_중 2016. 8. 4. 09:25

데이터 수정 / 변경(UPDATE)

- 테이블의 특정한 행을 수정/변경(update)

- 테이블의 모든 행을 수정/변경(update)

 

기본 형식

- 업데이트 할 테이블

- 열 이름과 새값

- 수정/변경(update) 할 행을 결정 짓는 필터 조건

 

* 예시 : Temp_Table

 Temp_Table field1 의 값을 유일 값인 기본키로 하고 data2-3 의 값을 변경해보자.

field1 

 field2

field3 

field4 

 data1

data1-2

data1-3

data1-4

data2

data2-2

data2-3

data2-4

data3

data3-2

 data3-3

data3-4

 

UPDATE Temp_Table SET field3='변경된 값' WHERE field1 = 'data2';

해석 해보자면 Temp_Table field1의 값이 'data2' 인 행의 field3의 값을 '변경된 값'으로 수정 해라.

 

실행 후 table 검색 결과

SELECT * FROM Temp_Table ;     

field1 

 field2

field3 

field4 

 data1

data1-2

data1-3

data1-4

data2

data2-2

변경된 값

data2-4

data3

data3-2

 data3-3

data3-4

--------------------------------------------------------------------------------------------------------------------

*주의 : 만약 해당 구문에서  WHERE 문이 없다면 table 의 field3 열의 모든 데이터가 '변경된 값' 으로 수정 될 것이다.

UPDATE Temp_Table SET field3='변경된 값';

 

실행 후 table 검색 결과

SELECT * FROM Temp_Table ;     

field1 

 field2

field3 

field4 

 data1

data1-2

변경된 값

data1-4

data2

data2-2

변경된 값

data2-4

data3

data3-2

변경된 값

data3-4

--------------------------------------------------------------------------------------------------------------------

동시에 여러 구문을 업데이트 할수 도 있다.

 

UPDATE Temp_Table SET field3='수정1', field4='수정2' WHERE field1 = 'data2';

해석 해보자면 Temp_Table field1의 값이 'data3' 인 행의 field3의 값을 '수정1'로 field4의 값을 '수정2'로 변경 해라.

 

실행 후 table 검색 결과

SELECT * FROM Temp_Table ;     

field1 

 field2

field3 

field4 

 data1

data1-2

변경된 값

data1-4

data2

data2-2

변경된 값

data2-4

data3

data3-2

수정1

수정2

 

이러한 형식으로 여러 열(field)의 값을 수정 할 수 있다.

----------------------------------------------------------------------------------------------------------------------

 

데이터 삭제(DELETE)

- 테이블에서 특정한 행을 삭제

- 테이블에서 전체 행을 삭제

 

DELETE 문은 열 이름이나 * 와 같은 문자를 사용할 수 없으며 열이 아닌 전체 행을 삭제 한다.

특정한 열을 삭제하기 위해서는 UPDATE 문을 사용해서 NULL(NULL이 인정되는)로 설정해 주어야한다.

 

DELETE FROM Temp_Table  WHERE field1='data2';

해석 해보자면 Temp_Table field1의 값이 'data2' 인 행을 삭제하라.

 

실행 후 table 검색 결과

SELECT * FROM Temp_Table ;     

field1 

 field2

field3 

field4 

 data1

data1-2

변경된 값

data1-4

data3

data3-2

수정1

수정2

field1의 값이 data2 인 행이 삭제 되었다.

---------------------------------------------------------------------------------------

WHERE 조건문이 없을 경우에는 Temp_Table 의 모든 행이 삭제된다.

 

 

DELETE FROM Temp_Table ;

해석 해보자면 Temp_Table 의 모든 행을 삭제하라.

 

실행 후 table 검색 결과

SELECT * FROM Temp_Table ;     

field1 

 field2

field3 

field4 

Temp_Table  의 모든 data가 삭제되었지만 table의 껍데기는 남아있다.

table 자체를 삭제 하기 위해서는  DROP TABLE을 사용해야 한다. 다음....

* 참고 : 테이블의 모든 행을 삭제 하기 위해서는 TRUMCATE TABLE 문을 사용하는것이 좋다고 한다.

이렇게 하면 결과는 동일하지만 데이터 변화를 기록하지 않기 때문에 속도가 빠르다나...