MySQL 시리즈 의 다섯 가지 보기,저장 함수,저장 과정,트리거

시리즈 강좌
MySQL 시리즈 의 시작 MySQL 관계 형 데이터베이스 기초 개념
MySQL 시리즈 중 하나 인 MariaDB-server 설치
MySQL 시리즈 의 두 번 째 인 스 턴 스 설정
MySQL 시리즈 의 3 가지 기초 편
MySQL 시리즈 의 4 SQL 문법
MySQL 시리즈 의 6 사용자 및 권한 부여
MySQL 시리즈 7 MySQL 저장 엔진
MySQL 시리즈 8 MySQL 서버 변수
MySQL 시리즈 의 9 my sql 캐 시 및 색인 조회
MySQL 시리즈 의 10 MySQL 사무 격 리 병행 제어 실현
MySQL 시리즈 의 11 로그 기록
MySQL 시리즈 의 12 백업 및 복구
MySQL 시리즈 13 MySQL 복사
MySQL 시리즈 의 14 MySQL 의 높 은 사용 가능 한 구현
MySQL 시리즈 의 15 MySQL 상용 설정 및 성능 압력 테스트
보기
보기:VIEW,가상 표,실제 표 가 있 는 조회 결 과 를 저장 하고 실제 데 이 터 는 디스크 에 저장 하지 않 습 니 다.
물리 보기:실제 데 이 터 는 디스크 에 저장 되 어 있 으 며 접근 을 가속 화 합 니 다.MySQL 은 물리 보 기 를 지원 하지 않 습 니 다.
기본 표:보기 의존 표
보기 의 데 이 터 는 사실상'기본 표'에 저장 되 어 있 기 때문에 수정 작업 도 기본 표 에 따라 이 루어 집 니 다.그 수정 작업 은 기본 표 의 제한 을 받는다.
메모:보 기 를 수정 할 때 수정 한 원본 표 입 니 다.
1.보기 의 생 성
CREATE VIEW view_name AS select_statement

MariaDB [testdb]> CREATE VIEW v_students AS SELECT id,name,ages FROM students;
MariaDB [testdb]> SELECT * FROM v_students;
+----+---------------+------+
| id | name          | ages |
+----+---------------+------+
|  1 | tom           |   26 |
|  2 | jerry         |   19 |
|  3 | maria         |   19 |
|  4 | xiaolongnv    |   18 |
|  5 | dongfangbubai |   28 |
|  6 | ouyangfeng    |   56 |
+----+---------------+------+
2.보기 정의 보기
SHOW CREATE VIEW view_name

MariaDB [testdb]> SHOW CREATE VIEW v_students\G
         View: v_students
         Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_students` AS select `students`.`id` AS `id`,`students`.`name` AS `name`,`students`.`ages` AS `ages` from `students`

MariaDB [testdb]> SHOW TABLE STATUS LIKE 'v_students'\G
        Name: v_students
        Comment: VIEW  #          
3.보기 삭제
DROP VIEW [IF EXISTS] view_name [, view_name] ...

MariaDB [testdb]> DROP VIEW v_students;
저장 함수
설명:매개 변 수 는 여러 개 일 수도 있 고 매개 변수 가 없 을 수도 있 으 며 반환 값 이 하나 밖 에 없어 야 합 니 다.
1.시스템 함수
공식 문서 참조:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html
2.사용자 정의 함수(user-defined function:UDF)
사용자 정의 함수 가 my sql.proc 표 에 저 장 됩 니 다.
  • UDF 목록 보기 SHOW FUNCTIOIN STATUS;
  • UDF 정의 보기 SHOW CREATE 기능name
  • UDF DROP FUNCTION function 삭제name
  • 사용자 정의 함수 문법 SELECT function 호출name(parameter_value,...)
  • 변수 할당 SET parametername = value[,parameter_name = value...]
  • 변수 보기 SELECT INTO parametername
  • 
    MariaDB [testdb]> DELIMITER //  #      //
    MariaDB [testdb]> CREATE FUNCTION addTwoNumber(x SMALLINT UNSIGNED, Y SMALLINT UNSIGNED)
        -> RETURNS SMALLINT
        -> BEGIN
        -> DECLARE a, b SMALLINT UNSIGNED DEFAULT 10;
        -> SET  a = x, b = y;
        -> RETURN a+b;
        -> END//
    Query OK, 0 rows affected (0.01 sec)
    MariaDB [testdb]> DELIMITER ;  #           
    MariaDB [testdb]> SELECT addTwoNumber(8,9);  #  UDF  
    +-------------------+
    | addTwoNumber(8,9) |
    +-------------------+
    |                17 |
    +-------------------+
    
    저장 프로시저
    저장 프로 세 스 는 자주 사용 하 는 SQL 문장 이나 업무 논 리 를 패키지 하여 데이터베이스 에 미리 컴 파일 하여 저장 하고 필요 할 때 데이터베이스 에서 직접 호출 하여 컴 파일 과정 을 생략 합 니 다.운행 속 도 를 높이 는 동시에 네트워크 데이터 전 송 량 을 낮 추 었 다.
    저장 프로 세 스:저장 프로 세 스 는 my sql.proc 표 에 저 장 됩 니 다.
  • 저장 프로시저 생 성
  • CREATE PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) routime_body
  • proc_parameter : [IN|OUT|INOUT] parameter_name type
  • 그 중에서 IN 은 입력 파 라 메 터 를 나타 내 고 OUT 는 출력 파 라 메 터 를 나타 내 며 INOUT 는 입력 도 할 수 있 고 출력 도 할 수 있다 는 것 을 나타 낸다.param_name 은 매개 변수 이름 을 표시 합 니 다.type 은 매개 변수의 유형 을 표시 합 니 다
  • 저장 프로시저 목록 보기 SHOW PROCEDURE STATUS
  • 저장 프로 세 스 정의 보기 SHOW CREATE PROCEDURE spname
  • 저장 프로시저 호출:CALL spname ([ proc_parameter [,proc_parameter ...]])
  • 설명:인삼 이 없 을 때'()'를 생략 할 수 있 고 매개 변수 가 있 을 때'()'
  • 를 생략 할 수 없다.
  • 저장 프로시저 삭제:DROP PROCEDURE[IF EXISTS]spname
  • ALTER 문 구 는 저장 프로 세 스 의 주석 등 중요 하지 않 은 것 만 수정 할 수 있 고 저장 프로 세 스 를 수정 할 수 없 기 때문에 저장 프로 세 스 를 수정 하려 면 재 구축 을 삭제 하 는 방법 이다.
    공정 제어
    저장 프로 세 스 와 함수 에서 프로 세 스 제 어 를 사용 하여 문장의 집행 을 제어 할 수 있다
  • IF:조건 판단 에 사용 합 니 다.조건 만족 여부 에 따라 서로 다른 문 구 를 집행 한다
  • CASE:조건 판단 을 할 때 IF 문장 보다 더 복잡 한 조건 판단 을 실현 할 수 있다
  • LOOP:특정한 문 구 를 반복 하여 간단 한 순환 을 실현 합 니 다
  • LEAVE:점프 순환 제어
  • ITERATE:이번 순환 에서 벗 어 나 다음 순환 으로 바로 들어간다
  • REPEAT:조건 부 제어 순환 문.특정 조건 을 충족 시 키 면 순환 문
  • 이 나온다.
  • WHILE:조건 부 제어 순환 문
  • 트리거
    트리거 의 실행 은 프로그램 에서 호출 되 는 것 이 아니 라 수 동 으로 시작 되 는 것 이 아니 라 이벤트 에서 촉발 되 고 활성화 되 어 실 행 됩 니 다.
  • 트리거 만 들 기
  • 
    CREATE 
        [DEFINER = { user | CURRENT_USER }] 
        TRIGGER trigger_name 
        trigger_time trigger_event 
        ON tbl_name FOR EACH ROW 
        trigger_body 
    
    trigger_name:트리거 이름
    trigger_time:{BEFORE|AFTER}
    trigger_이벤트:{INSERT|UPDATE|DELETE},실행 할 구체 적 인 이벤트
    tbl_name:이 트리거 는 표 이름 에 작 동 합 니 다.
  • 트리거 SHOW TRIGGERS 보기;
  • 트리거 삭제 DROP TRIGGER triggername;
  • 예시:트리거 를 만 들 고 학생 표 INSERT 데 이 터 를 표시 할 때 학생 수가 증가 하고 학생 정 보 를 삭제 할 때 학생 수가 감소 합 니 다.
    
    MariaDB [testdb]> CREATE TABLE students_info (id TINYINT(2) NOT NULL AUTO_INCREMENT,name VARCHAR(30) DEFAULT NULL,PRIMARY KEY(id));  #         
    MariaDB [testdb]> CREATE TABLE students_count (stu_count TINYINT(2) DEFAULT 0);  #         
    MariaDB [testdb]> INSERT INTO students_count VALUES(0);  #     0
    
    MariaDB [testdb]> CREATE TRIGGER trigger_students_count_insert
        -> AFTER INSERT
        -> ON students_info FOR EACH ROW
        -> UPDATE students_count SET stu_count=stu_count+1;
    Query OK, 0 rows affected (0.00 sec)
    
    
    
    MariaDB [testdb]> CREATE TRIGGER trigger_students_count_delete
        -> AFTER DELETE
        -> ON students_info FOR EACH ROW
        -> UPDATE students_count SET stu_count=stu_count-1;
    Query OK, 0 rows affected (0.01 sec)
    MariaDB [testdb]> INSERT students_info(id,name) VALUES (1,'Tom'),(2,'Maria');
    MariaDB [testdb]> SELECT * FROM students_info;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | Tom   |
    |  2 | Maria |
    +----+-------+
    MariaDB [testdb]> SELECT * FROM students_count;  #    ,    ,     2
    +-----------+
    | stu_count |
    +-----------+
    |         2 |
    +-----------+
    MariaDB [testdb]> DELETE FROM students_info WHERE id=1;
    MariaDB [testdb]> SELECT * FROM students_info;
    +----+-------+
    | id | name  |
    +----+-------+
    |  2 | Maria |
    +----+-------+
    MariaDB [testdb]> SELECT * FROM students_count;  #    ,   1
    +-----------+
    | stu_count |
    +-----------+
    |         1 |
    +-----------+
    
    총결산
    MySQL 보기,저장 함수,저장 과정,트리거 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 MySQL 보기,저장 함수,저장 과정,트리거 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 을 바 랍 니 다!

    좋은 웹페이지 즐겨찾기