SQLite의 변수
함수를 만들고 사용하는 것은 SQLite에서 쿼리를 구성할 때 매우 유용할 수 있습니다. 이러한 함수 및 절차의 일부는 SQLite 내에서 변수를 사용하고 있습니다.
SQLite의 변수
변수는 올바르게 사용하면 매우 유익한 것으로 입증될 수 있습니다. 예를 들어 설명하면서 설명하는 것이 가장 좋습니다.
두 개의 숫자를 더하는 프로시저나 함수를 만든다고 가정합니다. 이는 올바른 연산자를 사용하여 쉽게 달성할 수 있습니다.
그러나 조금 더 복잡하게 만들고 이 두 숫자를 사용자의 입력으로 얻는다고 하면 그렇게 간단하지 않을 것입니다.
사용자가 숫자를 입력할 수 있으므로 값을 하드코딩할 수 없습니다. 이것은 변수가 유용할 때입니다.
사용자가 제공한 입력을 가져와서 덮어쓰거나 프로그램이 종료될 때까지 유지되는 변수에 저장합니다. 이제 두 개의 무작위 값을 추가하는 대신 사용자가 선택한 두 값을 보유하는 변수를 추가할 수 있습니다.
이것은 나중에 사용하지 않을 경우 세 번째 변수 또는 기존 두 변수에 저장할 수 있습니다. 변수를 사용하면 프로시저 내에서 여러 데이터 유형의 값을 쉽게 저장하고 조작할 수 있습니다.
하드코딩된 값은 의존할 수 없기 때문에 모든 기능에 중요합니다.
SQLite의 변수 유형
SQLite에는 여러 유형의 변수가 있습니다. 즉, 해당 변수에 어떤 데이터가 저장될지 시스템에 알리기 위해 서로 다른 데이터 유형이 있음을 의미합니다.
다음은 SQLite에서 사용할 수 있는 데이터 유형 중 일부입니다.
NULL
: 이 유형은 변수에 null 값을 추가합니다.INTEGER
: 부호 있는 정수용입니다. 모든 양수 및 음수는 0, 1, 2, 3, 4, 6 또는 8바이트입니다.REAL
: 소수점이 있는 양수 또는 음수를 의미하는 부동 소수점 변수용입니다. 이것은 8바이트 숫자로 저장됩니다.TEXT
: 이름에서 알 수 있듯이TEXT
에는 텍스트 문자열이 포함됩니다. 이것은 종종 UTF-8, UTF-16BE 또는 UTF-16LE와 같은 데이터베이스 인코딩을 사용하여 저장됩니다.BLOB
: 데이터가 입력된 것과 동일한 방식으로 저장되어 사용된 데이터 유형에 맞게 조정되는 특수 변수입니다.
잘못된 데이터 유형을 사용했거나 코드 중간에서 변경하려는 경우 항상 CAST
표현식을 사용하여 변경할 수 있습니다. 이렇게 하면 데이터 유형과 내용이 변경되므로 주의하여 사용하십시오. 필요하지 않은 해당 ASCII 값으로 끝날 수 있습니다.
SQLite에서 변수 선언
SQLite에서 변수를 사용하려면 먼저 변수를 선언해야 합니다. 생성하려는 변수 유형에 따라 선언 프로세스는 매우 간단합니다. 그러나 기본 구문과 약간 다릅니다.
SQLite에서는 메모리 내 임시 테이블을 사용하여 프로세스를 가상으로 진행해야 합니다. 다음은 이를 수행할 수 있는 방법의 예입니다.
BEGIN;
/* This tells your system to use in-memory */
PRAGMA temp_store = 2;
/* creating the temp table with the variables you need */
CREATE TEMP TABLE Vars(text_val TEXT PRIMARY KEY, real_val REAL, integer_val INTEGER, blob_value BLOB, text_val TEXT);
/* The declaration part */
INSERT INTO Vars (text_val)
VALUES ('Any value');
DROP TABLE Vars;
END;
위의 코드를 사용하여 간접적으로 변수를 선언할 수 있습니다. 여기에서 먼저 메모리 내 임시 테이블을 만들어야 합니다. 이를 사용하여 원하는 데이터 유형이 있는 열을 추가한 다음 INSERT
절을 사용하여 값을 저장할 수 있습니다.
BEGIN
및 END
절은 프로시저가 시작되고 끝나는 위치를 식별하는 데 도움이 되므로 이 메서드를 사용하는 동안 포함해야 합니다. 그런 다음 원하는 대로 데이터를 조작하고 사용할 수 있습니다.
이에 대해서는 아래에서 자세히 설명했습니다.
SQLite에서 선언된 변수 사용
이제 변수를 선언하는 방법을 알았지만 변수를 사용하는 방법을 배우는 것도 그만큼 중요합니다. 이것이 없으면 선언한 변수를 사용할 수 없습니다.
위에서 사용된 동일한 코드의 업데이트된 버전을 사용하여 그렇게 합시다.
BEGIN;
/* Add codes from above to use in memory,
create the temp table,
and declaration first*/
/* Assignment (select a storage class according to your requirements) */
UPDATE Vars SET integer_val= ...
WHERE text_val= 'Any value';
/* Get the value of the variable that is to be used in the expression) */
...
(SELECT coalesce(real_val, integer_val, blob_value, text_val)
FROM Vars
WHERE text_val= 'Any value' LIMIT 1) ...
DROP TABLE Vars;
END;
이 코드에는 변수 값을 할당할 수 있는 몇 가지 추가 사항이 있습니다. 먼저 변수에 값을 할당한 다음 다시 연결하여 식에서 사용해야 합니다.
마지막으로 함수가 완료되면 테이블이 삭제됩니다. 변수가 요구 사항에 따라 작동하도록 하려면 언제든지 추가 코드 줄을 추가할 수 있습니다.
그러나 테이블을 삭제하면 저장된 모든 데이터가 제거되므로 모든 사용을 마친 후에는 반드시 삭제하세요.
또 다른 방법은 WITH
절을 사용하는 것입니다.
...
WITH const AS (SELECT 'any value' AS text_val, 10 AS int_val)
SELECT table.cost, (table.cost + const.int_val) AS cost2
FROM table, const
WHERE table.text_val= const.text_val
여기에 두 개의 변수가 추가되어 그 중 하나에 저장됩니다.
참고: 클래스가 테이블에 삽입된 후에는 항상 이것을 일련의 클래스의 합집합으로 바꿀 수 있습니다. 논리는 다를 수 있지만 개념은 동일하게 유지됩니다.
이것이 SQLite의 변수에 대해 알아야 할 모든 것입니다. 이제 원하는대로 쉽게 만들고 사용할 수 있습니다.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub