SQL/MSSQL
[MSSQL] @@OPTIONS 사용 방법 및 예시
@@OPTIONS는 Microsoft SQL Server에서 사용되는 시스템 변수로서, 현재 세션의 옵션 설정 값을 반환합니다. 이 값은 세션 레벨에서 적용되는 설정들을 나타냅니다. @@OPTIONS를 사용하여 현재 세션의 설정 값을 확인하고 조작할 수 있습니다. 다음은 @@OPTIONS를 사용하는 예시를 자세히 설명한 것입니다: 1. @@OPTIONS 값 확인하기: @@OPTIONS 값을 확인하여 현재 세션의 설정 값을 알 수 있습니다. 아래의 쿼리는 현재 세션의 옵션 설정 값을 반환합니다. SELECT @@OPTIONS AS CurrentOptions; 2. 특정 옵션 체크하기: @@OPTIONS를 사용하여 특정 옵션이 활성화되어 있는지 확인할 수 있습니다. 예를 들어, ANSI_NULLS 옵션이 활..
[MSSQL] @@NESTLEVEL 사용 방법 및 예시
@@NESTLEVEL은 SQL Server의 시스템 함수로서, 현재 실행 중인 저장 프로시저나 트리거의 중첩 레벨을 반환합니다. 중첩 레벨은 현재 실행 중인 저장 프로시저 또는 트리거 안에서 또 다른 저장 프로시저나 트리거를 호출하는 횟수를 의미합니다. 예를 들어, 저장 프로시저 A에서 저장 프로시저 B를 호출하고, 저장 프로시저 B에서 다시 저장 프로시저 C를 호출하는 경우, 중첩 레벨은 2가 됩니다. 이렇게 중첩 레벨이 증가할수록 저장 프로시저 또는 트리거의 호출이 계속해서 발생하는 구조를 가지고 있습니다. 아래는 @@NESTLEVEL을 확인하는 예시입니다. -- @@NESTLEVEL 확인 DECLARE @nestLevel INT; SET @nestLevel = @@NESTLEVEL; SELECT @..
[MSSQL] @@MAX_PRECISION 사용 방법 및 예시
@@MAX_PRECISION은 SQL Server의 시스템 함수로서, 소수점이 있는 숫자 데이터 타입에서 사용 가능한 최대 정밀도를 나타냅니다. 정밀도는 숫자의 전체 자릿수를 의미하며, SQL Server에서는 소수점 이하 자릿수를 포함한 숫자의 최대 자릿수를 제한합니다. 기본적으로 @@MAX_PRECISION은 38로 설정되어 있습니다. 이는 SQL Server에서 사용 가능한 가장 큰 정밀도를 나타냅니다. 따라서 정밀도가 38을 초과하는 숫자는 저장할 수 없습니다. 예를 들어, 정밀도가 38인 숫자 데이터 타입인 DECIMAL(38, 0)은 소수점 이하 자릿수가 없는 최대 크기의 정수를 저장할 수 있습니다. 반면에, DECIMAL(38, 10)은 소수점 이하 10자리까지의 정밀도를 가진 숫자를 저장할..
[MSSQL] @@MAX_CONNECTIONS 사용 방법 및 예시
@@MAX_CONNECTIONS는 SQL Server에서 사용되는 시스템 함수로서, 동시에 활성화된 최대 사용자 연결 수를 나타냅니다. 이 값은 SQL Server 인스턴스에 동시에 연결할 수 있는 최대 클라이언트 연결 수를 제한하며, 기본적으로 32,767로 설정되어 있습니다. 예를 들어, @@MAX_CONNECTIONS가 100으로 설정된 경우, SQL Server에는 동시에 최대 100개의 클라이언트가 연결할 수 있습니다. 즉, 101번째 클라이언트가 연결을 시도하면 해당 클라이언트의 연결은 거부될 것입니다. 이를 통해 SQL Server의 자원 소모를 제어하고 성능을 최적화할 수 있습니다. 하지만, 너무 작은 값으로 설정하면 동시에 많은 클라이언트가 서비스를 이용할 수 없으므로, @@MAX_CON..
[MSSQL] @@LOCK_TIMEOUT 사용 방법 및 예시
@@LOCK_TIMEOUT는 SQL Server에서 사용되는 시스템 함수로서, 특정 쿼리나 트랜잭션에서 락(잠금)을 획득하는 시간 제한을 나타냅니다. 이 값은 밀리초 단위로 설정되며, 기본적으로 -1로 설정되어 있습니다. -1로 설정된 경우, 무한 대기를 의미하며, 락이 해제될 때까지 획득을 시도합니다. 하지만, @@LOCK_TIMEOUT를 양수 값으로 설정하면 해당 시간 동안만 락을 획득하려고 시도하다가 제한 시간을 초과하면 오류가 발생하고 쿼리나 트랜잭션은 롤백됩니다. 예를 들어, 아래와 같이 @@LOCK_TIMEOUT를 설정하고 쿼리를 실행하는 경우를 살펴보겠습니다. -- @@LOCK_TIMEOUT 설정 SET LOCK_TIMEOUT 5000 -- 5초로 설정 -- 락을 가지고 있는 다른 트랜잭션 ..
[MSSQL] @@LANGUAGE 사용 방법 및 예시
@@LANGUAGE는 SQL Server에서 사용되는 시스템 함수로서, 현재 세션의 언어를 나타내는 데 사용됩니다. 이 함수는 현재 로그인 사용자의 언어 설정을 반환하며, 언어 설정은 클라이언트 도구를 통해 설정된 언어를 말합니다. SQL Server에서는 다양한 언어를 지원하며, 이러한 다국어 처리를 위해 @@LANGUAGE 함수를 활용할 수 있습니다. @@LANGUAGE를 사용하는 방법은 간단합니다. 다음과 같이 사용할 수 있습니다: DECLARE @language AS VARCHAR(50) SET @language = @@LANGUAGE 위의 코드를 실행하면 현재 세션의 언어 설정이 @language 변수에 저장됩니다. 이 언어 설정은 클라이언트 도구를 통해 로그인할 때 지정된 언어를 나타내며, 데..
[MSSQL] @@LANGID 사용 방법 및 예시
@@LANGID는 SQL Server에서 사용되는 시스템 함수로서, 현재 세션의 언어 ID를 나타내는 데 사용됩니다. 언어 ID는 언어와 국가/지역을 식별하는 데 사용되며, 다국어 환경에서 문자열 처리나 날짜 형식 등에 영향을 미칩니다. @@LANGID는 다음과 같이 사용할 수 있습니다: DECLARE @langId AS INT SET @langId = @@LANGID 위의 코드를 실행하면 현재 세션의 언어 ID가 @langId 변수에 저장됩니다. 이 언어 ID는 일반적으로 언어와 국가/지역을 구분하는 데 사용되며, 데이터베이스 서버가 다국어를 지원하는 경우에 활용될 수 있습니다. 예를 들어, 다국어 웹 애플리케이션에서는 사용자의 언어에 따라 출력되는 문자열이나 날짜 형식을 다르게 표시해야 할 수 있습니..
[MSSQL] @@DBTS 사용 방법 및 예시
@@DBTS는 SQL Server에서 사용되는 시스템 함수로서, 데이터베이스의 변경 시간을 나타내는 데 사용됩니다. DBTS는 Database Timestamp의 약자로, 데이터베이스의 변경 내역을 추적하는 데 유용합니다. DBTS는 다음과 같이 사용할 수 있습니다: DECLARE @timestamp AS BINARY(8) SET @timestamp = @@DBTS 위의 코드를 실행하면 현재 데이터베이스의 타임스탬프가 @timestamp 변수에 저장됩니다. 이 타임스탬프는 데이터베이스 내의 어떤 레코드가 변경되었는지 추적하는데 사용됩니다. 데이터베이스의 레코드가 변경될 때마다 타임스탬프 값도 변경되므로, 변경 이력을 추적하는 용도로 활용할 수 있습니다. 일반적으로 @@DBTS는 데이터베이스의 변경 이력을..
[MSSQL] @@DATEFIRST 사용 방법 및 예시
@@DATEFIRST는 SQL Server에서 날짜 함수를 사용할 때, 주간의 첫 날을 정의하는 시스템 변수입니다. 이 변수는 매주 시작하는 요일을 설정하는데 사용됩니다. 기본적으로 @@DATEFIRST는 7로 설정되어 있으며, 이는 일요일이 주간의 첫 날로 설정된 것을 의미합니다. 주간의 첫 날을 변경하고자 할 때는 다음과 같이 설정할 수 있습니다. 예를 들어, 월요일을 주간의 첫 날로 설정하고 싶다면 아래와 같이 실행합니다: SET DATEFIRST 1; 위의 코드를 실행하면 주간의 첫 날이 월요일로 변경됩니다. 이제 WEEKDATE()나 DATEPART()와 같은 날짜 함수를 사용할 때, 해당 설정에 따라 주간의 첫 날이 월요일로 계산됩니다. 다음은 다른 예시입니다: 1. 주간의 첫 날을 일요일로 ..
[MSSQL] 열을 행으로 바꾸는 방법 / UNPIVOT, CROSS APLLY
MSSQL에서 열을 행으로 변환하는 방법은 일반적으로 `UNPIVOT` 또는 `CROSS APPLY`를 사용하여 수행할 수 있습니다. 두 가지 방법에 대해 예시를 포함하여 자세하게 설명하겠습니다. 1. UNPIVOT 사용하기: `UNPIVOT`은 열을 행으로 변환하는 데 사용되는 표준 T-SQL 연산자입니다. `UNPIVOT`은 열 이름을 값으로 변환하고, 해당 값과 연결된 식별자 열을 추가하는 작업을 수행합니다. 예시를 통해 설명하겠습니다. **예시:** 고객 정보를 담은 테이블 `Customers`가 다음과 같이 있다고 가정합니다. | CustomerID | FirstName | LastName | Age | |------------|-----------|----------|-----| | 1 | J..