본문 바로가기

MS-SQL

MSSQL 데이터 복사, 테이블 복사 SELECT INTO, INSERT SELECT를 이용한 백업 MSSQL 테이블 복사하는 여러가지 방법에 대해 알아보도록 하겠습니다. DB작업시 전체백업을 항상 꼼꼼하게 한 뒤에 작업해야 겠지만, 한 두개의 테이블에 UPDATE, DELETE 작업을 할 때 예상치 못한 만일의 사태에 대비하기 위해서 또는 긴급하게 데이터를 원복하기 위해 개별 테이블 단위의 백업도 자주하게 됩니다. 이번 글에서는 SELECT INTO, INSERT SELECT 구문을 활용한 데이터복사와 테이블복사, JOIN을 활용한 데이터복사 및 조건절을 통한 필터링에 대해 알아보겠습니다. 아래의 테이블 카피 구문을 사용하면 간단한 쿼리로 신속하게 데이터를 백업하고 유사시 쉽게 원복할 수 있습니다. 예제로 사용할 테이블은 다음과 같습니다. Fruit SeqName Flavor Rank 1 딸기 새콤하.. 더보기
MSSQL UPDATE, UPDATE FROM MSSQL의 UPDATE구문에 대해 알아보도록 하겠습니다. 일반적인 형태의 UPDATE구문은 UPDATE 테이블명 SET 형식으로 작성합니다.INNER JOIN을 이용하여 다른 테이블과의 비교를 통해 또는 다른 테이블에 있는 데이터로 UPDATE 도 가능합니다. TIP. UPDATE 구문을 사용할 때는 항상 SELECT 구문을 먼저 작성 후 WHERE절을 카피해서 사용합니다. 만약의 경우에 대비해야 하죠. Fruit SeqName Flavor Rank 1 딸기 새콤하다 3 2 바나나 달콤하다 1 3 사과 향긋하다 2 상황1) 하나의 테이블 내에서 조건에 맞는 데이터를 업데이트 하려고 할 때.Fruit테이블에서 Seq=1인 딸기를 Name은 "스토로베리"로, Flavor는 "매콤하다"로 변경한다고 할 경우.. 더보기
mssql 변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고... 오류해결 변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고 다시 만들어야 합니다. 다시 만들 수 없는 테이블을 변경했거나 [테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함] 옵션을 설정했습니다. 위의 오류메시지는 테이블에 다음과 같은 영향을 주는 경우 발생합니다.열의 Null 허용 설정을 변경한 경우.테이블의 열 순서를 변경한 경우. 열의 데이터 형식을 변경한 경우.새 열을 추가한 경우.MS-SQL을 설치후 생성한 테이블을 수정하려고 하면 위와 같은 오류 메시지가 뜨면서 테이블 변경사항이 적용되지 않는 경우가 있습니다. 이 때 간단한 옵션해제를 통해 문제를 해결할 수 있습니다. 해결방법은 다음과 같습니다. (증상원인 및 해결방법 MS Docs 보러가기) SQL Server .. 더보기
MSSQL 0 채우기 가장 쉬운방법 SQL Server개발시 0 채우기, 또는 특정문자 채우기를 통한 문서번호 생성은 상당히 자주 사용하게 됩니다. 문서번호를 생성할때 DOC20181201-00001와 같이 문서코드+년월일+n자리형식의 일련번호 조합을 많이 사용하기 때문이죠. 예들 들어 5자리의 일련번호를 만들때, 남는 자릿수는 0으로 채우고 싶다면 어떻게 해야할까요? 이때 사용하는 함수가 REPLICATE입니다. 목표) 00001, 00012, 00123 와 같은 n자릿수 일련번호 생성 사용법) REPLICATE(채울문자, 반복횟수) 채울문자 : 0 총자릿수 : 5 반복횟수 : 총 자릿수 - LEN(넣을 문자) 1. 왼쪽에 문자 채우기 먼저 왼쪽에 0을 채우는 방법입니다. SELECT REPLICATE('0', 5 - LEN('1')) .. 더보기
MSSQL 서버의 디폴트 datetime 포맷 변경 웹 개발을 하면서 해외 프로젝트를 할 경우가 종종 있습니다. 우리나라는 기본적으로 yyyy-mm-dd 형식이니 해외 프로젝트도 동일하게 표시해 줘도 문제 없겠지 생각하지만, 예를 들어 러시아 프로젝트를 하다 보니 러시아인들은 dd-mm-yyyy를 날짜형식으로 사용하니 datetime 디폴트 포맷을 맞춰 달라고 합니다. 쉽게 얘기해서 GETDATE() 했을때 yyyy-mm-dd hh:mm:ss 를 dd-mm-yyyy hh:mm:ss 로 나오게 하고 싶은거죠. 그럼 개발자는 DB서버 또는 해당 DB의 디폴트 datetime 포맷을 바꾸려고 하게됩니다. 마이크로소프트 참고문서를 찾아보면 이렇습니다. 여기 내용을 보면 기본 날짜형식은 현재 언어 설정에 따라 결정되니까 SET LANGUAGE나 SET DATEFO.. 더보기
MSSQL 여러행을 한줄로 나타내기 여러행의 값을 한 행으로 만들어서 보여주고 싶을때가 있습니다. Fruit Seq Name 1 딸기 2 바나나 3 사과 4 배 다음과 같은 결과를 얻으려면 어떻게 해야할까요? FOR XML PATH 먼저 필요한건 FOR XML절입니다. FOR XML절은 쿼리 실행 결과를 XML형식으로 만들어줍니다. PATH는 FOR XML절에서 사용할 수 있는 네 가지 모드 중 하나라고만 알고계세요. 우리가 원하는건 XML태그는 아닙니다. 단지 FOR XML PATH의 방식만 사용할겁니다. SELECT ','+ Name FROM Fruit FOR XML PATH('') 결과는 이렇습니다. 우리가 원하는 결과와 비슷하지만 맨 앞의 콤마(,)를 없애면 더 좋겠네요 이때 필요한 게 STUFF 함수입니다. STUFF함수는 지정된.. 더보기
MSSQL 코딩 스타일 가이드 SQL Coding Style Guide 여러분의 SQL코딩 스타일은 무엇입니까? 쿼리문은 흔히 굉장히 복잡하고 길어질 수 있습니다. 쿼리는 오랫동안 프로그램 내에서 존재하게 되며 오랜기간 여러명의 개발자에 의해 유지보수 될 것입니다. 그래서 어떤 패턴을 가져야 하고 가독성을 높여 유지보수에 용이하도록 작성되어야 합니다. 다음의 스타일 가이드가 개발자 여러분에게 좋은 참고가 되었으면 합니다. 먼저, 학습에 사용할 테이블은 두개입니다. 1. Employee 2. Department 가장 기본적인 공통규칙부터 소개합니다. 1. SELECT, FROM, WHERE 등 예약어는 대문자를 사용하세요. 2. 필드명은 카멜법을 사용하세요.(대문자로 시작) 3. SQL의 함수도 대문자를 사용하세요. 4. 툴의 자동정렬.. 더보기