MSSQL7 mssql update 하위쿼리 (서브쿼리) mssql update문 작성시, 다른 테이블의 하위쿼리 값으로 수정해야 할때가 있다. 처음엔 아래와 같이 TEST_B 테이블 서브 쿼리를 집어 넣었다. 하지만 이 문법은 MS SQL 에서 지원하지 않는다. UPDATE TEST_A SET COLUMN_1 = (SELECT COULUMN_2 FROM TEST_B) 그래서 UPDATE 문에 하위쿼리(서브쿼리)를 넣고 싶다면, 해당 테이블에 조인을 걸어서 넣어는 방법을 사용해야한다. UPDATE TEST_A SET A.COLUMN_2 = B.COLUMN_2 FROM TEST_A A JOIN TEST_B B ON A.COLUMN_1 = B.COLUMN_1 위와 같이 작성하면 하위쿼리와 같은 효과를 볼 수있다. SQL/MS-SQL & SQL Server Management Studio 2020. 3. 5. [MSSQL] 10 => 16 진수 변환 / 16 => 10진수 변환 MSSQL에서 10진수를 16진수로 변환, 또는 16진수를 10진수로 변환하는 함수를 제공하지 않는 것 같다. 그래서 함수를 직접 만들어서 사용한다. 일단, 10진수를 16진수로 변환하는 함수다. 1. 10진수 => 16진수 변환 함수 CREATE function fn_dectohex(@dec bigint) returns nvarchar(50) as begin if @dec =0 begin return '0'; end declare @hex nvarchar(50) select @hex = ''; while (@dec > 0) begin declare @h nvarchar(1) declare @n int select @n = @dec % 16 if(@n = 10)begin select @h = 'a' en.. SQL/MS-SQL & SQL Server Management Studio 2020. 2. 11. [MS-SQL] 버전 확인하는 방법 데이터 베이스에서 버전을 확인 하는 것은 중요하다. 각 데이터 베이스 관리 시스템은 더 나은 시스템을 개발하고 출시하고 안정화(릴리즈)시킨다. 그에따라 새로운 기능이 추가 되기도, 필요없는 기능이 삭제 되기도 하기 때문에 만들어 놓은 프로그램에 심각한 버그가 생길 수도 있다. 또, 데이터 베이스를 백업, 복원할 때 버전이 필수적으로 고려대상이 되기도 하고, 데이터 베이스 업그레이드를 할때도 필수적으로 알아야 할 것이다. 그렇기 때문에 그 버전에 맞는 이해력도 필요할 것이다. 아래에 SQL Server 버전을 확인할 수 있는 방법 2가지가 있다. [1] SELECT @@VERSION 쿼리 창에 위 쿼리를 실행한다. Ex) 이런식으로 버전을 확인할 수 있다. 버전 : SQL Server 2016 누적 업데이.. SQL/MS-SQL & SQL Server Management Studio 2019. 12. 30. [ms sql] print() 함수/ print()함수 결과로 아무것도 출력이 안됨 / (동적쿼리 사용시 유용) mssql 에서 동적쿼리를 작성 할 때, print 함수가 유용하게 쓰인다. PRINT(@SQL_QUERY) DECLARE @TEST_PARAM VARCHAR(50) = 'TEST' DECLARE @SQL_QUERY VARCHAR(MAX) =' SELECT * FROM TB_TEST WHERE COLUMN ='''+@TEST_PARAM+'''' EXEC(@SQL_QUERY) -- PRINT 함수 PRINT(@SQL_QUERY) 보통 변수 @SQL_QUERY 에 쿼리를 작성한후, EXEC 함수로 실행하게 되는데, 문제는 이 쿼리가 잘실행되었는지 확인할 수 가 없다. EXEC(@SQL_QUERY) 그래서 PRINT() 함수를 사용하여 실행하게 되면 메세지에 내가 작성했던 쿼리가 출력된다. PRINT(@SQL.. SQL/MS-SQL & SQL Server Management Studio 2019. 12. 9. mssql - select into 문 / 다른 테이블로 복사 SELECT * INTO TB_newtable FROM TB_oldtable; TB_oldtable 의 데이터 들을 TB_newtable에 삽입 (INSERT) 조인해서 데이터 삽입도 가능하다. SELECT A.COULMN_2, B.COULMN_2 INTO TB_newTalbe FROM TB_oldTable A LEFT JOIN TB_oldTable2 B ON A.COULMN_1=B.COULMN_1; - 보통 임시 테이블과 많이 쓰인다. SELECT * INTO #TB_talbeTemp FROM TB_oldTable -- 임시테이블 #TB_talbeTemp에 TB_oldTable 데이터와 스키마를 복사해서 삽입. SELEC * FROM #TB_talbeTemp -- 임시테이블 #TB_talbeTemp 조.. SQL/MS-SQL & SQL Server Management Studio 2019. 12. 9. 임시 테이블 (@) vs 테이블 변수 (#) 1. 임시 테이블 예시) -- 임시테이블 생성 CREATE TABLE #TB_TEMP( A_COL INT IDENTITY(1,1) ,B_COL INT ) -- 임시테이블에 데이터 삽입 INSERT INTO #TB_TEMP VALUES(2500) -- 조회 SELECT * FROM #TB_TEMP 2. 테이블 변수 예시) -- 테이블 변수 선언 DECLARE @TB_TEMP TABLE ( A_COL INT IDENTITY(1,1) ,B_COL INT ) -- 테이블 변수에 값 삽입. INSERT INTO @TB_TEMP VALUES(2500) -- 테이블 변수 조회 SELECT*FROM @TB_TEMP 필요한 경우. - 복잡한 쿼리를 단순화 시킬때 - 서버상의 커서 사용으로 인한 부하를 줄일때 차이점. r.. SQL/MS-SQL & SQL Server Management Studio 2019. 12. 2. [MSSQL] BEGIN TRAN 사용하기 데이터를 임의로 지우거나 삭제할 때, 실수 할수 있기때문에 트랜잭션을 걸어 주고 데이터가 맞는지 조회해보고 맞다면, COMMIT 틀리다면, ROLLBACK을 실행해주면 된다. EX) 1. PEOPLE 이라는 테이블에 이름, 나이 컬럼들이 있다고 가정하자. SELECT * FROM PEOPLE 이름 나이 1 링고비 26 2 데헤스티니 24 2. 이름이 링고비인 데이터의 나이를 20으로 바꾸고 싶다. UPDATE PEOPLE SET 나이 = 20 하지만 깜빡하고 WHERE 절을 작성하지 않았다면.. 데헤스티니의 나이까지 20으로 바뀐다. 이런 실수를 방지 하기 위해, BEGIN TRAN을 건다. 3. BEGIN TRAN을 걸고 UPDATE문을 실행한 후 PEOPLE 테이블을 조회하면, BEGIN TRAN U.. SQL/MS-SQL & SQL Server Management Studio 2019. 11. 27. 이전 1 다음