안녕하세요.
테이블 컬럼을 지울게 생겼는데.. SQL 쿼리문 잘못날렸다 데이터 날아갈까봐 문의글 올립니다.
일단 테이블명은 vola 이고, 해당 테이블의 컬럼이 a,b,c,d 가 있습니다.
date는 날짜고 , a,b,c,d 는 데이터입니다.
여기서 vola 테이블의 date값이 2023-10-23 이전이면서 a값이 100인 c의 모든 데이터 값을 지우고 싶습니다.
이럴경우 쿼리문을 어떻게 해야될까요?
그리고 추가로 a값이 100인 데이터를 모두 지우려면 쿼리문을 어떻게 해야되는지도 부탁드립니다.
해당 질문의 문제를 해결, 도움이 되는 선택된 답변이 있습니다.
작성된 다른 답변도 확인해 보시기 바랍니다..
8개의 답변이 있습니다.
UPDATE나 DELETE는 실수하면 굉장히 곤란한 경우가 발생하죠.
이미 여러분이 언급하셨지만 이작업할때 백업은 꼭 필수로 하시고 하세요.
특히 쿼리문이 생소하거나 복잡하면 예상하지 못하는 결과가 발생할 수 있습니다.
역시 고수분들이 많으셔서 금방 답변이 올라오네요 ㅎㅎ
혹시 모르니 테이블 복사해 두시고 작업하셔요~~~~ ^^
이미 답이 나와 있네요.
DELETE FROM VOLA WHERE A=100 AND DATE 조건이 붙는다면 추가 해야 겠죠
다들 빠르시네요. 그나마 간단한 쿼리문이라 문의글 보자마자 답도 달아주시고, 소통이 잘 되는 것 같아 많은 도움이 되는것 같습니다.
에이스퐝 | 6달 전
네. 저도 덕분에 빨리 처리할수 있었습니다. 역시 쉐어드!!
update와 delete 하기 전에
select 문으로 적용 대상 리스트를 먼저 확인하고 작업을 하면 안심이 될 수 있죠.
select *
from vola
where date <= '20231023'
and a = 100
처럼 작성해서
대상자를 먼저 확인해 본후에
필요하다면 해당 대상 리스트를 따로 복사해서 보관해두는 것도 만약을 위한 방법이 될 수 있겠고요.
그리고, 아래와 같이 select * 를 delete로 변경해서 명령을 수행 시키면 안심이 되죠.
delete
from vola
where date <= '20231023'
and a = 100
에이스퐝 | 6달 전
네. 일단 select 먼저 해보고 update해보니 빈공란으로 잘 적용되었습니다.
마지막에 commit 까지 완료하였습니다.
다들 감사합니다!!
차니 | 6달 전
저도 select 문으로 먼저 조건 맞는지 확인합니다^^
commit 하기전에도
쿼리 너무 무서워서.. 다들 빠른답변감사합니다!!!
업데이트나 딜리트전 테이블을 백업하세요.(테이블 통백업 추천)
데이터 타입들이 명확하지 않으니 기본 쿼리만 알려드리면 미리 select 해보시어 컬럼 데이터 타입에 맞게 수정하시어 쓰세요.
1. vola 테이블의 date값이 2023-10-23 이전이면서 a값이 100인 c의 모든 데이터 값을 지우고 싶다는것이 row를 지우는게 아니라 c를 공백이나 null로 치고싶다면 아래와같이 하세요.
update vola set c=''
where date <= '20231023'
and a = 100
2. a값이 100인 데이터를 모두 지우려면 아래와 같이 하세요.
delete from vola where a=100
에이스퐝 | 6달 전
감사합니다.
크게 어려진 않은데요. 다만 db 작업이 익숙하지 않으시면
작업 전에 백업을 받으시고 하시면 그나마 마음이 덜 쪼립니다. ㅎㅎ
1. date 20231023이전 데이터 중 a='100'인 c='' update 구문
update vola
set c = ''
where date < '20231023'
and a = '100';
2. date 20231023이전 데이터 중 a='100'인 모든 데이터 지우기 delete 구문
delete from vola
where date < '20231023'
and a = '100';
참고하세요
에이스퐝 | 6달 전
감사합니다.!!
topkslee | 6달 전
데이터 타입에 대한 정보는 없어
문자 타입으로 했습니다. date타입이나 number 타입이면
그에 맞게 약간 수정하시면 될것 같아요