SQL/MSSQL
기록을 조회할 때 가장 최근꺼를 보고싶은 경우, sequence 번호 중 가장 큰 숫자를 조회하는 방법이 있다. [ Ex ] 고객이 프로그램 실행 중에 데이터를 여러 번 수정하다가 마지막에 실수로 upload 대신 delete를 눌러서 데이터를 삭제해버렸다고 하자. 이 고객은 삭제되기 전에 마지막으로 작성한 data를 가져오고싶다는 문의를 남겼다. 이 때, 우리는 어떻게 해야할까? 우선, 고객이 수정했던 기록들이 담긴 테이블을 보자. ID SEQ REMARK A 1 ... A 2 ... A 3 ... 실수한 고객의 ID는 A로 동일하므로 수정할 때마다 매겨진 SEQ (sequence number) 번호로 조회하면 된다. '가장 최근 기록'은 '가장 마지막으로 TABLE에 INSERT되었다'는 것과 같으므..
[ Transaction 사용 순서 ] BEGIN TRANSACTION -- 실행 UPDATE TABLE01 ... -- 실행 COMMIT TRANSACTION -- 실행 (수정사항을 최종 적용) ROLLBACK TRANSACTION -- 실행 (수정취소. 수정하기 이전 상태로 돌아감) UPDATE문 실행 후, 원하는 결과가 나온 것을 확인했다면 COMMIT, 원하는 결과가 나오지 않아서 BEGIN TRAN 이전 상태로 되돌리고싶다면 ROLLBACK 명령을 실행 TRANSACTION 을 줄여서 'TRAN'이라고 작성해도 무방하다. BEGIN TRAN; UPDATE .. COMMIT TRAN; [ Transaction을 사용하는 이유 ] 1. 테이블은 한 번에 1명만 접근하여 수정할 수 있다. 즉, 내가 ..
Data table을 만들고나서 data가 의도치않게 변경되거나 삭제될 경우를 대비하여 항상 data를 백업해주는게 좋다. 백업하는 방법은 아래와 같다. select * into 새로백업할테이블명 from 기존테이블 /* 예시 */ select * into table01_20210616 from table01 syntax : select 모든 데이터 into 백업 -- from 뒤에 내가 앞으로 작업할 table 이름 -- 백업할 테이블명에는 백업한 날짜도 적어주는게 좋다! -- create table 을 미리 작성해줄 필요 없이 바로 백업된 테이블이 생성된다.
* 속성은 테이블의 column명을 의미한다 [ SELECT ] SELECT 속성들 FROM 테이블명 2개의 예시를 살펴보자. [ EX1 ] select * from table01 -- 이 때, * 은 ALL (모든 속성)을 의미함 -- 즉, table01의 모든 column들을 불러와라 == table01의 전체 데이터를 가져와라 [ EX2 ] select 속성1, 속성2, 속성4 from table01 -- table01로부터 속성 1, 2, 4의 값들은 전부 가져와라 [ UPDATE ] UPDATE 테이블명 SET 변경할 속성들과 값 WHERE 조건 아래의 예시를 살펴보자. UPDATE TABLE01 SET COL1 = '' , COL2 = '' WHERE ID = '1' -- ID = 1인 REC..