mysql에서 변수를 선언하여 두 번째 쿼리에서 사용할 수 있도록하려면 어떻게해야합니까?MySQL에서 변수를 선언하는 방법은 무엇입니까?
내가 좋아하는 뭔가를 쓰고 싶습니다
SET start = 1;
SET finish = 10;
SELECT * FROM places WHERE place BETWEEN start AND finish;
mysql에서 변수를 선언하여 두 번째 쿼리에서 사용할 수 있도록하려면 어떻게해야합니까?MySQL에서 변수를 선언하는 방법은 무엇입니까?
내가 좋아하는 뭔가를 쓰고 싶습니다
SET start = 1;
SET finish = 10;
SELECT * FROM places WHERE place BETWEEN start AND finish;
이 변수의 세 가지 유형의 MySQL에 주로 :
User-defined variables (@
로 시작) :
당신에게 선언하지 않고 사용자 정의 변수에 액세스하거나 초기화 그것을 alizing. 이 초기화되지 않은 변수를 참조하는 경우 값은 NULL
이고 문자열 유형입니다.
SELECT @var_any_var_name
당신은 SET
또는 문 SELECT
사용하여 변수를 초기화 할 수 있습니다
SET @start = 1, @finish = 10;
또는
SELECT @start := 1, @finish := 10;
SELECT * FROM places WHERE place BETWEEN @start AND @finish;
사용자 변수 데이터 유형의 제한된 집합에서 값을 할당 할 수 있습니다 : 정수 , 십진수, 부동 소수점, 이진 또는 이항 문자열 또는 NULL 값
사용자 정의 변수는 세션에 따라 다릅니다. 즉, 한 클라이언트가 정의한 변수 변수는 다른 클라이언트에서 볼 수 없거나 사용할 수 없습니다.
을 사용하여 SELECT
개의 검색어에 사용할 수 있습니다.
Local Variables (국번없이) :
지역 변수를 접근 DECLARE
전에 사용하여 선언해야합니다.
들은 로컬 변수로서 사용될 수 있으며, 상기 입력은 프로 시저를 내부 매개 변수 : DEFAULT
절 없으면
DELIMITER //
CREATE PROCEDURE sp_test(var1 INT)
BEGIN
DECLARE start INT unsigned DEFAULT 1;
DECLARE finish INT unsigned DEFAULT 10;
SELECT var1, start, finish;
SELECT * FROM places WHERE place BETWEEN start AND finish;
END; //
DELIMITER ;
CALL sp_test(5);
는 초기 값 NULL
이다.
로컬 변수의 범위는 선언 된 내에있는 BEGIN ... END
블록입니다.
Server System Variables은 (@@
로 시작) :
MySQL 서버가 기본값으로 설정 많은 system variables 유지한다. GLOBAL
, SESSION
또는 BOTH
일 수 있습니다.
전역 변수는 서버의 전체 작동에 영향을 주지만 세션 변수는 개별 클라이언트 연결에 대한 작동에 영향을줍니다.
실행중인 서버에서 사용하는 현재 값을 확인하려면 SHOW VARIABLES
문 또는 SELECT @@var_name
문을 사용하십시오.
SHOW VARIABLES LIKE '%wait_timeout%';
SELECT @@sort_buffer_size;
명령 줄의 옵션 또는 옵션 파일을 사용하여 서버를 시작할 때 설정할 수 있습니다. 서버가 SET GLOBAL
또는 SET SESSION
사용하여 실행되는 동안 그들의 대부분은 동적으로 변경할 수 있습니다 설정
-- Syntax to Set value to a Global variable:
SET GLOBAL sort_buffer_size=1000000;
SET @@global.sort_buffer_size=1000000;
-- Syntax to Set value to a Session variable:
SET sort_buffer_size=1000000;
SET SESSION sort_buffer_size=1000000;
SET @@sort_buffer_size=1000000;
SET @@local.sort_buffer_size=10000;
사용 을 또는 선택
SET @counter := 100;
SELECT @variable_name := value;
예 :
(210)SELECT @price := MAX(product.price)
FROM product
SET
SET @var_name = value
또는
SET @var := value
모두 사업자 =및 =
이
SELECT col1, @var_name := col2 from tb_name WHERE "conditon";
만 해당 COL2의 마지막 값 (재정의) 유지이다; 이때 선택의 결과
'='과': ='의 차이점은 무엇입니까? –
mysql SELECT 구문은 = (비교)의 의미를 구분하는 데 필요하다고 생각합니다. = (asign) – bortunac
DECLARE의 var_name 반은 [var_name 반] ... 타입 [초기 값] 이 문장이 저장 프로그램 내의 로컬 변수 선언 COL2 값이 포함되어 있지에
SELECT col1, col2 INTO @var_name, col3 FROM .....
.
Ex. DECLARE id INT 부호가없는 DEFAULT 1;
변수에 기본값을 제공하려면 DEFAULT 절을 포함 시키십시오. 값은 표현식으로 지정할 수 있습니다. 상수 일 필요는 없습니다. DEFAULT 절이 누락 된 경우, 초기 값은 NULL입니다.
로컬 변수는 데이터 형식 및 오버플로 검사와 관련하여 저장된 루틴 매개 변수와 같이 처리됩니다.
커서 또는 핸들러 선언 앞에 변수 선언이 있어야합니다.
로컬 변수 이름은 대/소문자를 구분하지 않습니다.허용되는 문자 및 인용 규칙은 다른 식별자와 동일합니다.
로컬 변수의 범위는 선언 된 BEGIN ... END 블록입니다. 변수는 같은 이름의 변수를 선언하는 블록을 제외하고 선언 블록 내에 중첩 된 블록에서 참조 될 수 있습니다.
어떻게 든'''''''''연산자가 나를 위해 작동하지 않았습니다. ''''=''''연산자를 사용하면 잘 작동합니다. – divinedragon
'='연산자는'SET' 절에서만 작동합니다. 'SELECT' 쿼리에서 변수에 값을 할당하기 위해': = '연산자를 사용할 수 있습니다. 'SELECT @start : = 1' – Omesh
당신은 이것이 무엇을 의미하는지 명확히 할 수 있습니까 : "접두사 @로 표시된 사용자 정의 세션 변수를 선언 할 필요가 없습니까?" – billynoah