티스토리 뷰
1. UPDATE - 역할
테이블에 데이터를 수정하는 역할
◈ 구문형식
UPDATE 테이블명 SET 컬럼1 = 값1 , 컬럼2 = 값2 ... WHERE 조건 컬럼= 조건 값
SELECT문을 이용
UPDATE 테이블명 A SET 컬럼1 = (SELECT 컬럼명 FROM 테이블명 B WHERE A.컬럼2=B.컬럼2)
WHERE 조건컬럼 = 조건 값
2. UPDATE - 기본 테이블
◈ TEST_TABLE_ONE
IDX | ID | NAME | AMT |
1 | test1 | 테스트1 | 1000 |
2 | test2 | 테스트2 | 2000 |
3 | test3 | 테스트3 | 3000 |
◈ TEST_TABLE_TWO
IDX | ID | NAME | AMT |
1 | test1 | 테스트1 | 1000 |
2 | test2 | 테스트2 | 2000 |
3 | test3 | 테스트3 | 3000 |
3. UPDATE - SQL 문장
1 2 | UPDATE TEST_TABLE_ONE SET AMT=5000 WHERE ID='test3' |
◈ 결과 테이블
ID | NAME | AMT |
test1 | 테스트1 | 1000 |
test2 | 테스트2 | 2000 |
test3 | 테스트3 | 5000 |
◈ 설명
SELECT문을 활용하지 않는 일반 문장에서는 위와 같이 조건에 따라 입력을 해주면 됩니다.
테스트3에 해당하는 AMT만 3,000 에서 5,000으로 올리고자 하면 위와 같이 하시면 됩니다.
1 2 3 | UPDATE TEST_TABLE_ONE A SET AMT= (SELECT AMT FROM TEST_TABLE_TWO B WHERE A.ID=B.ID) WHERE ID='test3' |
◈ 결과 테이블
ID | NAME | AMT |
test1 | 테스트1 | 1000 |
test2 | 테스트2 | 2000 |
test3 | 테스트3 | 3000 |
◈ 설명
첫번째 SQL문장을 이용해 test3에 해당하는 AMT가 5,000 이었습니다.
그래서 두번째 문장에서 SELECT 문장을 이용해 test3에 해당하는 정보를 TEST_TWO테이블에서 가져와 SELECT문장을 활용해서 다시 3,000으로 수정을 하였습니다.
저도 자주 실수가 일어나는 이 부분이 이 SELECT 문장을 활용할 때 입니다.
조건을 어떻게 주느냐에 따라서 여러행을 각자에 맞게 수정을 해야 하는데 엉뚱하게 하나의 값으로 수정되는 경우가 종종 있습니다.
SELECT 문장을 이용하실 때는 꼭 조건 잘 확인해 주세요~!
'[개발]프로그래밍 > sql' 카테고리의 다른 글
[oracle] MERGE - 삽입,수정,삭제를 한번에 (0) | 2019.11.19 |
---|---|
[oracle] DELETE - 테이블 내에 데이터 삭제 (0) | 2019.11.18 |
[oracle] INSERT - 한 행 ,여러 행 삽입(SELECT 이용) (0) | 2019.11.15 |
[oracle] SELF JOIN - 자체 조인 (0) | 2019.11.14 |
[oracle] USING - JOIN 사용시 조인 조건을 간단히 (4) | 2019.11.14 |
- Total
- Today
- Yesterday