mysql에는 저장 프로시저가 있습니다. 저장 프로시저(Stored Procedure)는 특정 기능을 완성하기 위해 설계된 SQL문들의 집합이다. MySQL 버전 5.0은 이전에는 저장 프로시저를 지원하지 않았으나, 버전 5.0부터 저장 프로시저를 지원하게 되면서 데이터베이스의 처리 속도가 향상될 뿐만 아니라 유연성도 향상되었다. 데이터베이스 프로그래밍의 섹스. 저장 프로시저는 데이터를 변환하고, 데이터를 마이그레이션하고, 보고서를 생성하는 데 사용할 수 있습니다. 이는 프로그래밍 언어와 유사하며, 일단 성공적으로 실행되면 지정된 기능 작업을 완료하기 위해 언제든지 호출할 수 있습니다.
이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.
mysql에는 저장 프로시저가 있습니다.
저장 프로시저는 특정 기능을 수행하도록 설계된 SQL 문 집합입니다. 저장 프로시저를 사용하는 목적은 SQL 문과 함께 일반적이거나 복잡한 작업을 미리 작성하여 지정된 이름으로 저장하는 것입니다. 이 프로시저를 컴파일하고 최적화하여 데이터베이스 서버에 저장하므로 저장 프로시저라고 합니다. 향후 정의된 저장 프로시저와 동일한 서비스를 제공하기 위해 데이터베이스가 필요한 경우 "CALL 저장 프로시저 이름"만 호출하면 자동으로 완료됩니다.
데이터베이스를 운영하는데 흔히 사용되는 SQL 문은 먼저 컴파일한 후 실행해야 합니다. 저장 프로시저는 SQL 문을 실행하는 데 또 다른 접근 방식을 사용합니다.
저장 프로시저는 데이터베이스에 생성되고 저장되는 프로그래밍 가능한 함수입니다. 일반적으로 SQL 문과 일부 특수 제어 구조로 구성됩니다. 저장 프로시저는 다양한 애플리케이션이나 플랫폼에서 동일한 특정 기능을 수행하려는 경우 특히 적합합니다.
MySQL 5.0 버전은 이전에는 저장 프로시저를 지원하지 않아 MySQL 적용이 크게 줄었습니다. MySQL은 버전 5.0부터 저장 프로시저를 지원해 데이터베이스의 처리 속도를 향상시킬 뿐만 아니라 데이터베이스 프로그래밍의 유연성도 향상시킵니다. 저장 프로시저는 데이터베이스에서 데이터 변환, 데이터 마이그레이션에 사용할 수 있는 중요한 기능입니다. , 보고서 작성은 프로그래밍 언어와 유사합니다. 성공적으로 실행되면 언제든지 호출하여 지정된 기능 작업을 완료할 수 있습니다.
저장 프로시저를 사용하면 데이터베이스 액세스 효율성이 향상될 뿐만 아니라 데이터베이스 사용 보안도 향상됩니다. 호출자의 경우 저장 프로시저가 SQL 문을 캡슐화하므로 호출자는 논리 함수의 특정 구현 프로세스를 고려할 필요가 없습니다. 간단한 호출만으로 Java, C# 등 프로그래밍 언어에서 호출할 수 있습니다.저장 프로시저 작성에는 개발자 요구 사항이 약간 더 높지만 이는 저장 프로시저의 일반적인 사용에 영향을 미치지 않습니다. 저장 프로시저에는 다음과 같은 장점이 있기 때문입니다.
1) 캡슐화
일반적으로 하나 이상의 논리가 필요합니다. SQL문을 완성하기 위한 함수와 각 명령문 사이에 매개변수가 전달될 가능성이 높기 때문에 논리 함수 작성이 상대적으로 복잡하고, 저장 프로시저는 이러한 SQL문을 독립적인 단위로 포함하여 외부 세계가 복잡한 SQL 명령문을 볼 수 없도록 할 수 있습니다. 간단한 호출만으로 목적을 달성할 수 있습니다. 그리고 데이터베이스 전문가는 이를 호출하는 애플리케이션의 소스 코드에 영향을 주지 않고 언제든지 저장 프로시저를 수정할 수 있습니다.
2) SQL 문의 기능과 유연성을 향상시킬 수 있습니다.
저장 프로시저를 흐름 제어 문으로 작성할 수 있습니다. 흐름 제어 문은 유연성이 뛰어나 복잡한 판단과 연산을 완료할 수 있습니다.
3) 네트워크 트래픽을 줄일 수 있습니다
저장 프로시저가 서버 측에서 실행되고 실행 속도가 빠르기 때문에 클라이언트 컴퓨터에서 저장 프로시저를 호출하면 호출 문만 네트워크에 전송되며, 네트워크 부하를 줄일 수 있습니다.
4) 고성능
저장 프로시저가 성공적으로 컴파일되면 데이터베이스 서버에 저장되므로 향후 클라이언트에서 직접 호출할 수 있으므로 모든 SQL 문이 서버에서 실행되므로 성능이 향상됩니다. 성능. 그러나 저장 프로시저가 많을수록 저장 프로시저를 과도하게 사용하면 실제로 시스템 성능에 영향을 미친다는 점에 유의해야 합니다.
5) 데이터베이스 보안 및 데이터 무결성 향상
저장 프로시저의 보안을 향상시키는 한 가지 방법은 저장 프로시저를 중간 구성 요소로 사용하는 것입니다. 저장 프로시저에서는 특정 테이블에 대해 관련 작업을 수행한 다음 저장 프로시저를 수행할 수 있습니다. 외부 프로그램에 제공되는 인터페이스 역할을 합니다. 이런 방식으로 외부 프로그램은 데이터베이스 테이블을 직접 조작할 수 없으며 저장 프로시저를 통해서만 해당 테이블을 조작할 수 있으므로 보안이 어느 정도 향상될 수 있습니다.
6) 데이터를 독립적으로 만듭니다
데이터 독립성은 분리 효과를 얻을 수 있습니다. 즉, 프로그램은 여러 SQL 문을 실행하는 대신 저장 프로시저를 호출할 수 있습니다. 이 경우 저장 프로시저는 데이터 테이블의 구조가 변경되어도 테이블을 호출할 때 프로그램을 수정할 필요가 없다는 장점이 있습니다. .
MySQL 저장 프로시저 예제CREATE PROCEDURE를 사용하여 첫 번째 MySQL 저장 프로시저를 개발하는 방법을 단계별로 보여 드리겠습니다. 또한 SQL 문에서 저장 프로시저를 호출하는 방법도 보여 드리겠습니다.
첫 번째 MySQL 저장 프로시저 작성
구문에 익숙해지는 데 도움이 되도록 GetAllProducts()에 대한 간단한 저장 프로시저를 개발하겠습니다. GetAllProducts() 저장 프로시저는 제품 테이블에서 모든 제품을 선택합니다.
mysql 클라이언트 도구를 실행하고 다음 명령을 입력하세요:
DELIMITER // CREATE PROCEDURE GetAllProducts() BEGIN SELECT productCode, productName FROM products; END // DELIMITER ;
명령 실행:
mysql> DELIMITER // mysql> CREATE PROCEDURE GetAllProducts() -> BEGIN -> SELECT productCode, productName FROM products; -> END // Query OK, 0 rows affected (0.02 sec) mysql> DELIMITER ;
저장 프로시저를 더 자세히 살펴보겠습니다.
첫 번째 명령은 DELIMITER //
이며 저장된 프로시저와 아무 관련이 없습니다. 프로시저 구문. DELIMITER 문은 표준 구분 기호(세미콜론(;)을 다른 세미콜론으로 변경합니다.) 이 경우 구분 기호는 세미콜론(;)에서 이중 슬래시 //로 변경됩니다. 구분 기호를 변경해야 하는 이유는 무엇입니까? 왜냐하면 우리는 mysql 도구가 각 명령문을 한 번에 해석하도록 하는 대신 저장 프로시저를 서버에 전체적으로 전달하기를 원하기 때문입니다. END 키워드 뒤에 구분 기호 //를 사용하여 저장 프로시저의 끝을 나타냅니다. 마지막 명령(DELIMITER; )은 구분 기호를 다시 세미콜론(;)으로 변경합니다.
CREATE PROCEDURE 문을 사용하여 새 저장 프로시저를 생성합니다. CREATE PROCEDURE 문 뒤에 저장 프로시저의 이름을 지정합니다. 이 경우 저장 프로시저의 이름은 GetAllProducts입니다. 저장 프로시저 이름 뒤에 괄호를 넣습니다.
BEGIN과 END 사이의 부분을 저장 프로시저의 본문이라고 합니다. 비즈니스 논리를 처리하기 위해 선언적 SQL 문을 본문에 배치합니다. 이 저장 프로시저에서는 간단한 SELECT 문을 사용하여 제품 테이블의 데이터를 쿼리합니다.
저장 프로시저 보기
다음 명령을 사용하여 지정된 데이터베이스에 어떤 저장 프로시저가 있는지 확인할 수 있습니다.
select name from mysql.proc where db='mysqldemo';
실행 결과:
저장 프로시저 호출
저장 프로시저 호출 , 다음 SQL 명령을 사용하십시오.
CALL stored_procedure_name();
CALL 문을 사용하여 저장 프로시저를 호출합니다. 예를 들어 GetAllProducts() 저장 프로시저를 호출하려면 다음 문을 사용합니다.
CALL GetAllProducts();
위 문을 실행하면 제품 테이블의 모든 제품을 가져옵니다.
【관련 추천: mysql 비디오 튜토리얼】
위 내용은 mysql에는 저장 프로시저가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!