저장 프로세스 (1)
스토리지 프로세스란 무엇입니까?
간단하게 말하면 저장 프로세스는 어떤 데이터베이스에서 특정한 기능을 완성하기 위해 작성된 문장집으로 이 문장집은 SQL 문장(데이터에 대한 삭제 수정), 조건 문장과 순환 문장 등을 포함한다.
스토리지 생성 프로세스:
스토리지 프로세스는 다음과 같은 간단한 구조를 통해 생성됩니다.
CREATE PROCEDURE proc_name ([proc_parameter[,...]])
[characteristic ...]
routine_body
설명:proc_name은 저장 프로세스 이름을 나타냅니다.
proc_parameter는 저장 프로세스 매개 변수 목록을 대표합니다.목록의 각 매개변수는 입력 출력 유형, 매개변수 이름 및 매개변수 유형 세 부분으로 구성됩니다.형식은 다음과 같습니다. [IN | OUT | INOUT] paramname type, 그 중에서 [IN | OUT | INOUT]는 출력 유형을 나타낸다(IN은 입력 파라미터를 나타내고, OUT는 출력 파라미터를 나타내며, INOUT는 입력일 수도 있고 출력일 수도 있다).param_name 은 매개변수 이름을 나타냅니다.type은 MySQL 데이터베이스의 모든 데이터 유형이 될 수 있는 매개변수 유형을 나타냅니다.
characteristic는 저장 프로세스의 특성을 지정합니다.이 매개변수에는 여러 값이 있습니다.
LANGUAGE SQL: 설명 루틴body 섹션은 데이터베이스 시스템 기본값인 SQL 언어의 문으로 구성됩니다.
[NOT] DETERMINISTIC: 저장 프로세스의 실행 결과가 확실한지 여부를 나타냅니다.DETERMINISTIC는 결과가 확실하다는 것을 나타낸다. 이 때 저장 프로세스를 실행할 때마다 같은 입력이 같은 출력을 받는다.NOT DETERMINISTIC는 결과가 부정확하다는 것을 나타냅니다. 이때 같은 입력은 다른 출력을 얻을 수 있습니다.기본값은 불확정입니다.
{CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}: 서브루틴의 SQL 문 사용 제한을 나타냅니다.CONTAINS SQL은 하위 프로그램이 SQL 문장을 포함하지만 데이터를 읽거나 쓰는 문장은 포함하지 않는다는 것을 나타낸다.NO SQL은 서브루틴에 SQL 문이 포함되지 않음을 나타냅니다.READS SQL DATA는 서브루틴에 읽기 데이터가 포함된 문을 나타냅니다.MODIFIES SQL DATA는 서브루틴에 데이터를 쓰는 문이 있음을 나타냅니다.기본값은 CONTAINS SQL입니다.
SQL SECURITY {DEFINER | INVOKER}: 수행할 권한이 있는 사용자를 나타냅니다.DEFINER는 정의자 자신만 실행할 수 있음을 나타냅니다.INVOKER는 호출자가 수행할 수 있음을 나타냅니다.기본값은 DEFINER입니다.
COMMENT'string': 프로세스 주석 정보를 저장합니다.
routine_body 매개 변수는 SQL 코드의 내용으로 BEGIN...END로 SQL 코드의 시작과 끝을 표시할 수 있습니다.
예: 테이블 구조 생성:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ' ',
`real_name` varchar(8) NOT NULL COMMENT ' ',
`age` int(3) DEFAULT NULL COMMENT ' ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=223 DEFAULT CHARSET=utf8;
스토리지 생성 프로세스:DELIMITER &&
CREATE PROCEDURE num_from_user (IN u_real_name VARCHAR(15), OUT count_num INT)
READS SQL DATA
BEGIN
SELECT COUNT(*) INTO count_num FROM USER WHERE real_name LIKE u_real_name;
END &&
DELIMITER ;
설명: 위에 이름이numfrom_사용자의 저장 프로세스;입력 변수 ureal_name;출력 변수는countnum. SELECT 문이 사용자 테이블에서 조회 real 흐림name 값은 ureal_name의 레코드와 COUNT(*)로 조건에 맞는 데이터 총수를 통계한 다음count 에 결과를 저장합니다num 중.
참고: MySQL의 기본 문 끝 문자는 세미콜론(;)이고,저장 과정 중의 SQL 문장은 분호로 끝내야 한다. 충돌을 피하기 위해 먼저'DELIMITER & &'로 MySQL의 끝 문자를 &&&로 설정하고 마지막에'DELIMITER'로 한다.자, 끝부호를 성분호로 회복합니다.이것은 트리거를 만드는 것과 같습니다.
스토리지 프로세스를 호출하려면 다음과 같이 하십시오.
SET @u_real_name=' %';
CALL num_from_user(@u_real_name,@count_num);
SELECT @count_num AS total;
설명: 위에 왕씨 성을 가진 사람의 수가 표시되어 있는데, 그중 @ureal_name 및 @countnum은 사용자 이름 변수입니다.스토리지 프로세스를 보려면 다음과 같이 하십시오.
저장 프로세스의 보기는 다음과 같은 문장을 통해 실현할 수 있다. SHOW PROCEDURE STATUS WHERE db='데이터베이스 이름'.또는 SHOW CREATE PROCEDURE 데이터베이스 이름입니다.저장 프로세스 이름;
저장 프로세스 삭제
저장 프로세스의 삭제는 다음과 같은 문장을 통해 실현할 수 있다. DROP PROCEDURE 저장 프로세스 이름
스토리지 프로세스의 이점:
1. 저장 프로세스는 SQL 언어의 유연성을 향상시켰다.저장 과정은 제어 문장을 사용하여 복잡한 판단과 복잡한 연산을 완성할 수 있어 유연성이 강하다.
2. 네트워크 트래픽을 줄이고 네트워크 부하를 줄인다.저장 프로세스는 데이터베이스 서버에서 성공적으로 만들어진 후에 이 저장 프로세스를 호출하면 된다. 전통적인 방법은 매번 대량의 SQL 문장을 네트워크를 통해 데이터베이스 서버에 보내고 실행하는 것이다.
3. 저장 프로세스는 창조할 때만 컴파일하고 이후에 저장 프로세스를 실행할 때마다 다시 컴파일할 필요가 없다. 일반적인 SQL 문장은 실행할 때마다 한 번씩 컴파일하기 때문에 저장 프로세스를 사용하면 데이터베이스의 실행 속도를 높일 수 있다.
4. 시스템 관리자는 특정한 저장 과정의 권한을 설정함으로써 해당하는 데이터에 대한 접근 권한을 제한하고 비수권 사용자가 데이터에 대한 접근을 피하며 데이터의 안전을 확보한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.