>  기사  >  데이터 베이스  >  MySQL 시스템의 트랜잭션 및 뷰 소개

MySQL 시스템의 트랜잭션 및 뷰 소개

零下一度
零下一度원래의
2017-06-27 09:59:321064검색
  • 1. 거래

    • 2. 롤백

    • 2.

      1. 뷰 만들기
    • 2. 뷰 삭제
  • 4. 뷰 사용

    • 3. 서브 쿼리 사용

    • 2. 스칼라 하위 쿼리

    • 3. 상관 서브 쿼리

    • 1. Transaction
    RDBMS에서 트랜잭션은 테이블의 데이터를 업데이트하는 단위입니다. 간단히 말해서 트랜잭션은 동일한 처리 단위에서 수행되어야 하는 업데이트 프로세스의 모음입니다.
  • 事务开始语句START TRANSACTION;
    
          DML语句①;
          DML语句②;
          DML语句③;
             .
             .
             .
    事务结束语句(COMMIT或者ROLLBACK);

    1.Commit

  • COMMIT은 제출 트랜잭션에 포함된 모든 업데이트 처리의 종료 명령으로, 파일 처리 시 덮어쓰기 및 저장과 동일합니다. 커밋된 후에는 트랜잭션이 시작되기 전의 상태로 복원할 수 없습니다.
    • 2. Rollback

      ROLLBACK은 트랜잭션에 포함된 모든 업데이트 처리를 취소하라는 종료 명령으로, 파일 처리 중 저장을 포기하는 것과 같습니다. 롤백되면 데이터베이스는 트랜잭션이 시작되기 전의 상태로 복원됩니다.
    • 3. ACID 특성

      DBMS 트랜잭션은 모두 4가지 특성을 따릅니다. 이 네 가지 특성의 첫 글자를 합쳐서 ACID 특성이라고 합니다.
    • 원자성 원자성은 트랜잭션이 끝날 때 트랜잭션에 포함된 업데이트 처리가 모두 실행되거나 전혀 실행되지 않음을 의미합니다.

일관성 일관성이란 트랜잭션에 포함된 처리가 기본 키 제약 조건이나 NOT NULL 제약 조건과 같이 데이터베이스가 미리 설정한 제약 조건을 충족해야 함을 의미합니다. 예를 들어, NOT NULL 제약 조건이 있는 열은 NULL로 업데이트될 수 없습니다. 기본 키 제약 조건을 위반하는 레코드를 삽입하려고 하면 오류가 발생하고 실행할 수 없습니다. 트랜잭션의 경우 이러한 불법 SQL은 롤백됩니다.

격리 격리란 서로 다른 트랜잭션이 서로 간섭하지 않도록 하는 기능을 말합니다. 이 기능은 트랜잭션이 서로 중첩되지 않도록 보장합니다. 또한 트랜잭션 내에서 변경된 사항은 트랜잭션이 종료될 때까지 다른 트랜잭션에 표시되지 않습니다. 따라서 트랜잭션이 테이블에 레코드를 추가하더라도 다른 트랜잭션은 커밋될 때까지 새로 추가된 레코드를 볼 수 없습니다.

내구성 내구성이란 트랜잭션(커밋 또는 롤백 여부)이 종료된 후 해당 시점의 데이터 상태가 저장되도록 보장하는 DBMS 기능을 의미합니다. 시스템 장애로 인해 데이터가 손실되더라도 어떤 방법으로든 데이터베이스를 복구해야 합니다.

2. 뷰

뷰와 테이블의 본질적인 차이점은 "실제 데이터가 저장되는지 여부"입니다.

    실제 데이터는 테이블에 저장되고, 테이블에서 데이터를 검색하는 데 사용되는 SELECT 문은 뷰에 저장됩니다.
  • 자주 사용하는 SELECT 문을 뷰로 만들어야 합니다.

  • 1. 뷰 생성
  • --格式:CREATE VIEW 视图名称(<视图列名1>, <视图列名2>, ……) AS <SELECT语句>
    
    CREATE VIEW v1 (product_name, name_cnt)
    AS 
    SELECT product_name, count(*)
    FROM
        表名/视图名
    GROUP BY product_name

    참고:

  • 뷰를 기반으로 뷰를 생성하지 마세요. 대부분의 DBMS에서는 다중 뷰가 SQL 성능을 저하시킵니다.

  • 뷰를 정의할 때 ORDER BY 절을 사용할 수 없습니다

2. 뷰를 삭제하세요

--格式:DROP VIEW 视图名称

DROP VIEW v1

3. 뷰를 업데이트하세요

-- 格式:ALTER VIEW 视图名称 AS <SELECT语句>

-- 格式:INSERT INTO 视图名称 VALUES(...)

참고:

뷰와 테이블을 업데이트해야 합니다. 동시에 요약(aggregation)을 통해 연결된 테이블을 결합하여 얻은 뷰는 INSERT로 업데이트할 수 없습니다.

  • 기억하세요. 뷰를 업데이트한다는 것은 궁극적으로 뷰에 해당하는 테이블을 업데이트한다는 것을 의미합니다.

  • 4. 뷰 사용
  • 뷰는 가상 테이블이므로 실제 테이블을 생성, 업데이트, 삭제하는 데에는 사용할 수 없습니다.

    select * from v1
  • 3. 하위 쿼리

1. 하위 쿼리를 사용하세요

하위 쿼리는 일회성 뷰(SELECT 문)입니다. 뷰와 달리 하위 쿼리는 SELECT 문이 실행된 후에 사라집니다.

-- 根据商品种类统计商品数量的视图
CREATE VIEW ProductSum (product_type, cnt_product)
AS
SELECT product_type, COUNT(*)
  FROM Product
 GROUP BY product_type;
 
 -- 确认创建好的视图
SELECT product_type, cnt_product
  FROM ProductSum;
  
--子查询
SELECT product_type, cnt_product
  FROM (SELECT product_type, COUNT(*)
           FROM Product
    GROUP BY product_type)AS ProductSum;

2. 스칼라 하위 쿼리

    스칼라 하위 쿼리에는 특별한 제한이 있습니다. 즉, 1행과 1열의 결과만 반환해야 합니다. 즉, 특정 행의 특정 열 값을 반환합니다. 테이블.
  • SELECT product_id, product_name, sale_price
      FROM Product
     WHERE sale_price > (SELECT AVG(sale_price)
                           FROM Product);

    3. 상관 하위 쿼리

  • 세분된 그룹 내에서 비교할 때는 상관 하위 쿼리를 사용해야 합니다.
아아아아

위 내용은 MySQL 시스템의 트랜잭션 및 뷰 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.