SQL에서의 동적 SQL 작성 및 실행 연습문제

SQL은 데이터베이스에서 데이터를 조작하는 데에 사용되는 언어입니다. SQL은 정적인 쿼리를 작성하여 데이터를 조회하거나 수정하는 기능을 제공합니다. 그러나 때로는 동적으로 쿼리를 작성하고 실행해야 할 때가 있습니다. 이번 연습문제에서는 SQL에서 동적 SQL을 작성하는 방법과 실행해보는 연습을 해보겠습니다.

연습문제 1: 동적으로 테이블 생성하기

동적으로 테이블을 생성해보겠습니다. 예를 들어, 사용자로부터 테이블 이름과 컬럼 수를 입력받아 해당하는 테이블을 동적으로 생성하는 기능을 구현해보세요.

DECLARE @tableName NVARCHAR(100)
DECLARE @columnCount INT
SET @tableName = 'dynamic_table'
SET @columnCount = 3

DECLARE @dynamicQuery NVARCHAR(MAX)

SET @dynamicQuery = 'CREATE TABLE ' + @tableName + '('

DECLARE @i INT
SET @i = 1

WHILE @i <= @columnCount
BEGIN
    SET @dynamicQuery += 'column' + CAST(@i AS NVARCHAR) + ' NVARCHAR(100),'
    SET @i = @i + 1
END

SET @dynamicQuery = LEFT(@dynamicQuery, LEN(@dynamicQuery)-1) + ')'

EXEC sp_executesql @dynamicQuery

위 예제에서는 사용자로부터 테이블 이름과 컬럼 수를 입력받아 동적으로 해당하는 테이블을 생성합니다. 입력받은 테이블 이름과 컬럼 수에 맞게 SET 문을 사용하여 동적 쿼리를 작성합니다. 그리고 sp_executesql 함수를 사용하여 동적으로 작성한 쿼리를 실행시킵니다.

연습문제 2: 동적으로 데이터 조회하기

이번에는 동적으로 데이터를 조회하는 기능을 구현해보겠습니다. 예를 들어, 사용자로부터 테이블 이름과 조회할 컬럼 이름을 입력받아 해당하는 테이블에서 동적으로 데이터를 조회하는 기능을 구현해보세요.

DECLARE @tableName NVARCHAR(100)
DECLARE @columnName NVARCHAR(100)
SET @tableName = 'dynamic_table'
SET @columnName = 'column1'

DECLARE @dynamicQuery NVARCHAR(MAX)

SET @dynamicQuery = 'SELECT ' + @columnName + ' FROM ' + @tableName

EXEC sp_executesql @dynamicQuery

위 예제에서는 사용자로부터 테이블 이름과 조회할 컬럼 이름을 입력받아 동적으로 해당하는 테이블에서 데이터를 조회합니다. 입력받은 테이블 이름과 컬럼 이름에 맞게 SET 문을 사용하여 동적 쿼리를 작성합니다. 그리고 sp_executesql 함수를 사용하여 동적으로 작성한 쿼리를 실행시킵니다.

결론

SQL에서 동적 SQL을 작성하고 실행하는 방법을 연습해보았습니다. 동적 SQL을 사용하면 사용자 입력에 따라 쿼리를 동적으로 생성하여 데이터를 다룰 수 있습니다. 동적 SQL은 유연성과 확장성을 제공하며, 데이터베이스 애플리케이션 개발에 유용한 기능입니다.

참고 자료

#sql #동적SQL