
MSSQL(Microsoft SQL Server)은 Microsoft에서 제공하는 관계형 데이터베이스 관리 시스템(RDBMS)입니다.
기본적인 SQL 문법은 다른 DBMS와 유사하지만, MSSQL만의 특징적인 함수나 문법이 있습니다.
-- Database 생성
CREATE DATABASE MyDatabase;
-- Table 생성
CREATE TABLE Member (
Id INT PRIMARY KEY IDENTITY(1,1),
Name NVARCHAR(50),
Age INT,
CreatedDate DATETIME DEFAULT GETDATE()
);
-- Insert
INSERT INTO Users (Username, Email, Age)
VALUES ('hong', 'hong@example.com', 25);
-- Select
SELECT Id, Name, Age
FROM Member
WHERE Age > 20
ORDER BY CreatedDate DESC;
-- Update
UPDATE Member
SET Age = 30
WHERE Name = '홍길동';
-- Delete
DELETE FROM Member
WHERE Id = 1;
동적 쿼리(Dynamic SQL)는 쿼리 문자열을 실행 시점에 조합하여 실행하는 방법입니다.
고정된 SQL로 처리하기 어려운 조건이나 테이블, 컬럼을 동적으로 지정할 때 사용합니다.
-- 변수 @sql 선언 (NVARCHAR 타입)
DECLARE @sql NVARCHAR(MAX);
-- @sql에 문자열 할당
SET @sql = 'SELECT * FROM Member WHERE Age > 25';
-- @sql에 저장된 문자열을 출력
PRINT @sql
-- @sql 쿼리를 실행
EXEC(@sql);
sp_executesql을 사용하면 파라미터 바인딩이 가능하여 보안적 측면에서 더 안전합니다.
DECLARE @sql NVARCHAR(MAX);
DECLARE @age INT = 25;
SET @sql = N'SELECT * FROM Member WHERE Age > @age';
-- @age 파라미터를 바인딩하면서 @sql 쿼리를 실행
EXEC sp_executesql @sql, N'@age INT', @age;
DECLARE @tableName NVARCHAR(50) = 'Member';
DECLARE @sql NVARCHAR(MAX);
-- @sql 쿼리에 @tableName을 할당
SET @sql = 'SELECT * FROM ' + @tableName;
EXEC(@sql);