전체 글 209

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

클러스터드 인덱스와 논클러스터드 인덱스 정의

- 클러스터드 인덱스 & 논클러스터드 인덱스 클러스터드 인덱스(Clustered Index)와 논클러스터드 인덱스(Non-clustered Index)는 데이터베이스에서 데이터를 효율적으로 검색하기 위해 사용되는 인덱스 유형입니다. 다음은 각각의 개념과 주요 차이점을 설명해 드리겠습니다: 1. 클러스터드 인덱스(Clustered Index): 클러스터드 인덱스는 테이블의 실제 데이터 행을 정렬된 형태로 저장하는 방식입니다. 테이블당 하나의 클러스터드 인덱스만 생성할 수 있으며, 클러스터드 인덱스가 없는 테이블은 힙(Heap) 구조로 데이터가 저장됩니다. 클러스터드 인덱스는 주로 테이블의 기본 키(Primary Key)에 대해 생성되는 경우가 많습니다. 클러스터드 인덱스를 통해 데이터를 검색할 때는 해당 ..

DATABASE 2023.06.20

데이터베이스는 어떠한 구조로 데이터를 저장할까?

데이터베이스는 어떠한 구조로 데이터를 저장할까? - 데이터베이스 저장방식 데이터베이스에서는 다양한 저장 방식을 사용하여 데이터를 구성하고 관리합니다. 주요한 데이터베이스 저장 방식에는 힙(Heap) 구조 외에도 B-트리(B-Tree), 해시(Hash), 클러스터드 인덱스(Clustered Index) 등이 있습니다. 1. 힙(Heap) 구조: 힙(Heap) 구조는 데이터베이스에서 테이블의 저장 방식 중 하나입니다. 힙 구조는 데이터를 정렬되지 않은 상태로 순차적으로 저장하는 방식을 말합니다. 힙 구조에서는 새로운 데이터가 테이블에 삽입될 때 데이터가 마지막에 추가되며, 데이터의 물리적인 순서는 중요하지 않습니다. 힙 구조는 데이터의 논리적인 순서와 물리적인 순서가 일치하지 않는 특징을 가지고 있습니다. ..

DATABASE 2023.06.20

저장프로시저(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

DevOps란 무엇인가?

DevOps란 무엇인가? DevOps는 개발과 운영(Operations) 사이의 협업과 통합을 강조하는 소프트웨어 개발 방법론 및 문화입니다. 기존의 전통적인 소프트웨어 개발 방식에서 개발팀과 운영팀이 독립적으로 업무를 수행하는 것과는 달리, DevOps는 개발과 운영 사이의 경계를 희석시키고, 개발자와 운영자 간의 협업을 강화하여 소프트웨어를 보다 신속하고 안정적으로 제공하는 것을 목표로 합니다. DevOps의 핵심 목표 - 소프트웨어 전달 속도 향상 DevOps는 지속적인 통합, 지속적인 제공, 자동화된 배포 등을 통해 개발에서 운영까지의 전체 과정을 자동화하고 가속화합니다. 이로 인해 소프트웨어 제품의 전달 속도가 향상되고 릴리즈 주기가 단축됩니다. - 안정성 및 신뢰성 강화 DevOps는 자동화된..

Dev 2023.06.13

JWT란? (JavaScript Web Token)

JWT란? JWT(JavaScript Web Token)는 인터넷에서 정보를 안전하게 전달하기 위한 토큰 기반의 오픈 표준입니다. 주로 웹 및 모바일 애플리케이션에서 인증과 권한 부여를 관리하는 데 사용됩니다. JWT는 JSON 형식으로 작성되어 있으며, 토큰 안에 필요한 정보를 포함시킵니다. JWT는 세 가지 부분으로 구성됩니다: 헤더(Header): JWT의 유형과 서명 알고리즘 등의 메타데이터를 포함합니다. 일반적으로 JSON 형식으로 작성되며, Base64로 인코딩됩니다. 페이로드(Payload): JWT에 포함할 정보, 즉 클레임(Claim)이라고도 불리는 데이터를 포함합니다. 클레임은 토큰 발급자가 정의하며, 사용자 ID, 권한, 만료일 등과 같은 다양한 정보를 담을 수 있습니다. 마찬가지로 ..

Server/Web & Server 2023.06.07

서브도메인 간에 로그인 세션 안전하게 공유하는 방법

서브도메인 간에 로그인 세션을 안전하게 전달하기 위해 다음과 같은 방법을 고려할 수 있습니다: 동일한 도메인으로 세션 쿠키 구성: 로그인 세션 쿠키의 도메인을 기본 도메인으로 설정하여 서브도메인 간에 공유할 수 있습니다. 예를 들어, .example.com 도메인에 대해 세션 쿠키를 설정하면 subdomain1.example.com과 subdomain2.example.com에서도 세션을 공유할 수 있습니다. 이를 위해 IIS나 웹 프레임워크에서 세션 쿠키의 도메인 설정을 확인하고 수정해야 할 수도 있습니다. 세션 공유 서비스 사용: 서브도메인 간에 세션을 공유하기 위해 별도의 세션 공유 서비스를 구성할 수 있습니다. 이 서비스는 서브도메인 간에 세션 데이터를 안전하게 전달하고 유지하는 역할을 수행합니다...

Server/Web & Server 2023.06.07