DATABASE 34

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

PostgreSQL 메이저 버전 업그레이드(9.6->14)

PostgreSQL 9.x 버전의 지원종료로 다른 메이저버전으로 업그레이드 필요. - 연관 프로그램 종료 ex> 레드마인 등 프로그램 종료 - DB 백업 업그레이드 시 꼭 필요한 작업은 아니지만 꼭 해야하는 작업. 다음의 방식으로 sql, dump 등으로 백업이 가능 (참고) https://m.blog.naver.com/anytimedebug/221222479261 # pg_dump -Fp -d redmine -f /tmp/db.sql # pg_dump -Fc -d redmine -f /tmp/db.dump # pg_dump -Ft -d redmine -f /tmp/db.tar # pg_dump -Fd -d redmine -f /tmp/dumpdir PostgreSQL (centos에서 14버전 다운로드..

DATABASE/PostgreSQL 2022.11.14

[lowdb] 기존 값 + 1(Increase by 1) update

lowdb의 업데이트(lodash 활용) assign 외에 update를 사용하여 기존 값을 연산하여 처리 가능하다. _.update(object, path, updater)이 방법은 설정할 값을 생성하는 _.set것을 허용한다는 점을 제외하고 는 같습니다 updater. 생성 _.updateWith을 사용자 정의하는 데 사용 합니다 path. 는 updater: 하나 개의 인수로 호출 (값) . 참고: 이 메서드는 object를 update 합니다. Since 4.6.0 Arguments object (Object) : 수정할 객체입니다. path (배열|문자열) : 설정할 속성의 경로입니다. updater (Function) : 업데이트된 값을 생성하는 함수입니다. return (객체) : 반환 ob..

DATABASE/lowdb 2021.08.22

[lowdb] 실행 에러?! SyntaxError: Cannot use import ..

SyntaxError: Cannot use import statement outside a module 아래와 같은 에러가 발생한다면... 정답은 바로 Warning에 표시됩니다. To load an ES module, set "type": "module" in the package.json or use the .mjs extension. $ node index.js (node:2484) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension. (Use `node --trace-warnings ...` to show where the warning was created) D:\works..

DATABASE/lowdb 2021.08.12

[lowdb] JSON을 DB로 활용하는 방법

비용을 들이지 않고 요즘 좋은 서비스들이 많아서 활용하여, 웹서비스를 개발해보려고 하였다. 웹서비스가 DB가 필요해서 json을 db로 활용하는 방법을 찾다가.. lowdb라는 것을 발견하였고 이를 활용하여 HEROKU와 node.js를 사용하여 기획한 웹 서비스를 개발해보려고 한다. 먼저 node.js를 설치한다. https://nodejs.org/ko/download/ 본인의 OS에 맞는 node.js를 먼저 다운로드하여 설치한다. 약관동의 후 NEXT..NEXT.. lowdb 설치 https://github.com/typicode/lowdb lowdb를 설치하고 사용하기 전에 먼저 경로를 생성해주자. ex> \workspace\project01\ 콘솔창 (bash나 cmd)을 실행시켜서 해당 경로로..

DATABASE/lowdb 2021.08.09