DATABASE/MsSQL 14

SQL Server 테이블 복제 방법(레코드 포함/미포함)

1. 테이블의 레코드들까지 모두 복제할 경우 SELECT * INTO NEWOCCUPATIONS2 FROM [dbo.Occupation]2. 테이블의 스킴만 복제할 경우 이 문장은 "dbo.Occupation"이라는 기존 테이블에서 모든 열을 선택하지만 행은 선택하지 않고 "NEWOCCUPATIONS2"라는 새로운 테이블을 생성합니다. "WHERE 1=0" 조건은 어떠한 행도 선택되지 않도록 하여, "dbo.Occupation"과 동일한 구조를 가진 빈 테이블을 생성합니다. SELECT * INTO NEWOCCUPATIONS2 FROM [dbo.Occupation] WHERE 1=0 다른 데이터베이스 관리 시스템에서는 이와 유사한 작업을 수행하는데 사용되는 구문이 다를 수 있습니다. 예를 들어, MySQ..

DATABASE/MsSQL 2023.07.23

FETCH, @@FETCH_STATUS 종류

- @@ FETCH STATUS의 종류 FETCH 문을 실행한 후 FETCH STATUS를 확인하여 커서의 상태를 판별할 수 있습니다. FETCH 문을 사용하여 커서에서 데이터를 읽을 때 반환되는 FETCH STATUS의 값은 다음과 같습니다: 값 0: FETCH 문이 성공적으로 수행되었습니다. 값 -1: FETCH 문이 실패했거나 행이 결과 집합의 범위를 벗어났습니다. 값 -2: 인출된 행이 없습니다. 값 -9: 커서는 페치 작업을 수행하지 않습니다. - FETCH의 종류 1. FETCH NEXT FETCH NEXT 문은 커서에서 다음 행을 가져옵니다. 커서의 위치를 다음 행으로 이동시킵니다. FETCH NEXT FROM cursor_name INTO variable_name; 2. FETCH PRIO..

DATABASE/MsSQL 2023.07.08

데이터베이스 커서(cursor) 그리고 지양해야하는 이유

커서(cursor)란? 데이터베이스에서 한 번에 한 행씩 처리하는 데 사용되는 기능입니다. 일반적으로 커서는 단일 행이나 다중 행 데이터에 접근하고 처리해야 할 때 유용합니다. 커서는 선언, 열기, 데이터읽기, 닫기, 할당해제 등의 단계로 나뉜다. 1. 선언(DECLARE): 커서를 선언하기 위해 DECLARE CURSOR 문을 사용합니다. 이 단계에서는 커서의 이름, 커서 속성 및 커서와 연관된 SELECT 문을 정의합니다. 커서에 필요한 컬럼들을 선택하고, WHERE 절과 JOIN 절을 사용하여 데이터를 필터링하거나 조인할 수 있습니다. DECLARE cur CURSOR FOR SELECT Column1, Column2 FROM Table WHERE Condition; 2. 열기(OPEN): OPEN..

DATABASE/MsSQL 2023.07.08

[Stored Procedure] 매개변수 전달 및 출력

- 정리 SP생성 시 변수를 뒤에 추가하여 전달 받은 매개변수로 프로시저를 수행할 수 있다. 출력용으로 사용하는 변수에는 OUTPUT을 반드시 넣어주어야 한다. - 예시 CREATE PROCEDURE GetEmployeeCountByDepartment @DepartmentName VARCHAR(50), @EmployeeCount INT OUTPUT AS BEGIN -- 직원 수 계산 SELECT @EmployeeCount = COUNT(*) FROM Employees WHERE Department = @DepartmentName -- 결과 반환 SELECT @EmployeeCount AS EmployeeCount END 이 stored procedure는 @DepartmentName 매개변수를 입력으로 ..

DATABASE/MsSQL 2023.07.01

[SQL Server_제어 흐름] 7. RETURN 문 사용방법

- SQL Server의 RETURN 문 현재 실행 중인 함수, 저장 프로시저 또는 트리거를 종료하고, 호출한 곳으로 제어를 반환하는 데 사용됩니다. RETURN 문은 해당 코드 블록의 실행을 중지하고 값을 반환하며, 호출자에게 제어를 전달합니다. - RETURN 문 구조 RETURN [expression]여기서 expression은 반환하고자 하는 값이나 표현식을 나타냅니다. 함수, 저장 프로시저 또는 트리거의 실행 중에 RETURN 문이 실행되면 해당 코드 블록의 실행이 중단되고 expression의 값을 가지고 호출한 쪽으로 제어가 반환됩니다. - RETURN 문의 예시 -- 함수 생성 CREATE FUNCTION dbo.GetSquareRoot(@Number INT) RETURNS FLOAT AS..

DATABASE/MsSQL 2023.06.25

[SQL Server_제어 흐름] 6. GOTO LABLE 사용방법

- SQL Server에서 GOTO 문과 레이블(LABEL) 특정 위치로 프로그램의 실행 흐름을 전달하는 데 사용됩니다. GOTO 문은 지정된 레이블로 이동하고, 레이블은 실행 위치를 표시하는 데 사용됩니다. - GOTO, LABLE 구조 GOTO LABLE LABLE: 여기서 레이블은 실행 위치를 표시하는 식별자입니다. :(콜론)은 레이블을 표시하기 위해 사용되며, GOTO 문에서 이동할 위치를 나타냅니다. - GOTO - LABLE 예시 DECLARE @Count INT SET @Count = 1 Label1: PRINT 'COUNT: ' + CAST(@Count AS VARCHAR) SET @Count = @Count + 1 IF @Count

DATABASE/MsSQL 2023.06.25

[SQL Server_제어 흐름] 5. WAIT FOR 사용 방법

- SQL Server의 WAIT FOR Statement 특정 이벤트가 발생할 때까지 현재 세션을 일시 정지하는 데 사용됩니다. - WAIT FOR 문 구조 WAIT FOR DELAY '시간' 여기서 '시간'은 일시적으로 세션을 정지할 시간을 지정하는 값입니다. 일반적으로 '시간'은 문자열 형식으로 지정되며, 지연 시간을 나타내는 값을 포함합니다. 이 값을 'hh:mm:ss', 'hh:mm:ss.mmm', 'hh:mm:ss.nnnnnnn' 형식으로 지정할 수 있습니다. - WAIT FOR 문 예시 WAIT FOR DELAY '00:00:05' -- 5초 동안 대기 위의 예시에서는 '00:00:05..

DATABASE/MsSQL 2023.06.25

[SQL Server_제어 흐름] 4. WHILE 루프 사용 방법

- SQL Server에서 WHILE 문 주어진 조건이 참(True)인 동안 반복적으로 특정 블록 내의 문장들을 실행하는 제어 흐름 문입니다. WHILE 문은 조건을 평가한 후, 조건이 참인 경우 해당 블록을 실행하고, 조건이 거짓인 경우 반복을 종료하고 다음 문으로 제어의 흐름을 전달합니다. - WHILE 문 구조 WHILE 조건 BEGIN -- 조건이 참일 때 실행될 문장들 END 여기서 조건은 평가될 식이나 논리적인 조건입니다. 조건이 참(True)인 동안 BEGIN과 END 사이의 블록에 있는 문장들이 반복적으로 실행됩니다. 반복이 계속되는 동안 조건이 참인지 계속 평가되고, 조건이 거짓이 되면 반복이 종료됩니다. - 다음은 WHILE 문의 예시입니다 DECLARE @Count INT SET @C..

DATABASE/MsSQL 2023.06.25

[SQL Server_제어 흐름] 3. IF 문 사용 방법

- SQL Server에서 IF 문은 조건에 따라 다른 동작을 수행하는 제어 흐름 문입니다. IF 문은 주어진 조건이 참(True)인 경우 특정 블록 내의 문장들을 실행하고, 조건이 거짓(False)인 경우 해당 블록을 건너뛰고 다음 문으로 제어의 흐름을 전달합니다. IF 조건 BEGIN -- 조건이 참일 때 실행될 문장들 END 여기서 조건은 평가될 식이나 논리적인 조건입니다. 만약 조건이 참이라면, BEGIN과 END 사이의 블록에 있는 문장들이 실행됩니다. 조건이 거짓이라면, BEGIN과 END 사이의 블록은 실행되지 않고 건너뛰어집니다. DECLARE @Age INT SET @Age = 25 IF @Age >= 18 BEGIN PRINT '성인입니다.' END 위의 예시에서는 @Age 변수의 값이..

DATABASE/MsSQL 2023.06.25

[SQL Server_제어 흐름] 2. BEGIN ~ END 코드 블록

- BEGIN 및 END 키워드는 코드 블록을 지정하는 데 사용됩니다. 코드 블록은 논리적인 작업의 그룹을 형성하며, 일련의 SQL 문을 논리적으로 함께 실행하는 데 사용됩니다. CREATE PROCEDURE ExampleProcedure AS BEGIN -- 코드 블록 시작 DECLARE @Name VARCHAR(50) SET @Name = 'John Doe' PRINT '변수의 값: ' + @Name -- 코드 블록 종료 END 위의 예시에서 BEGIN과 END 사이의 코드는 ExampleProcedure stored procedure의 블록입니다. 이 블록은 @Name 변수를 선언하고 값을 출력하는 작업을 포함합니다. 코드 블록은 여러 개의 SQL 문을 포함할 수 있으며..

DATABASE/MsSQL 2023.06.25

[SQL Server_제어 흐름] 1. 변수선언 및 출력(DECLATRE, PRINT)

- DECLARE 문은 변수를 선언하는 데 사용됩니다. 선언된 변수는 해당 stored procedure에서 사용할 수 있습니다. 변수의 데이터 유형과 이름을 지정하여 선언합니다. CREATE PROCEDURE ExampleProcedure AS BEGIN DECLARE @Name VARCHAR(50) SET @Name = 'John Doe' -- 이곳에서 @Name 변수를 사용하여 작업을 수행할 수 있습니다. END 위의 예시에서 @Name은 VARCHAR(50) 유형의 변수로 선언되었습니다. - PRINT 문은 stored procedure에서 메시지를 출력하는 데 사용됩니다. 디버깅이나 결과를 확인하기 위해 사용될 수 있습니다. CREATE PROCEDURE ExampleProcedure AS BE..

DATABASE/MsSQL 2023.06.25

저장프로시저(stored procedure)란 ?

- 저장프로시저(stored procedure)란 ? 저장 프로시저(Stored Procedure)는 데이터베이스 내에서 미리 정의된 SQL 문의 집합이며, 하나의 이름으로 호출되고 실행되는 프로그램 단위입니다. 저장 프로시저는 주로 데이터베이스의 트랜잭션 처리, 데이터 검색, 데이터 조작 등의 작업을 수행하기 위해 사용됩니다. 저장 프로시저는 데이터베이스 서버에 저장되어 있으며, 클라이언트 애플리케이션에서 호출하여 실행할 수 있습니다. 저장 프로시저는 일련의 SQL 문으로 구성되며, 조건문, 반복문, 변수, 매개변수 등과 같은 프로그래밍 언어의 기능을 사용할 수 있습니다. 이를 통해 복잡한 데이터베이스 작업을 단순화하고, 코드의 재사용성을 높일 수 있습니다. - 저장 프로시저의 사용이유 유지보수성, 비..

DATABASE/MsSQL 2023.06.19

[MS-SQL] date, datetime, datetime2, datetimeoffset, smalldatetime, time 의 차이?

date, datetime, datetime2, datetimeoffset, smalldatetime, time 의 차이 백번 듣는것 보다 바로 쿼리 돌려서 차이점을 비교하고 이해하는 것이 빠르다. -DATE SELECT GETDATE() AS CurrentDateTime, CAST(GETDATE() AS DATE) AS DateOnly --CurrentDateTime DateOnly ------------------------- ---------- --2023-06-14 10:27:01.420 2023-06-14 -DATETIME SELECT GETDATE() AS CurrentDateTime, CAST(GETDATE() AS DATETIME) AS DateTimeValue --CurrentDateTi..

DATABASE/MsSQL 2023.06.14