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