1. 程式人生 > >mysql 事務的寫法與使用

mysql 事務的寫法與使用

事務的ACID特性:

在這片文章中給了詳細的解釋

http://blog.csdn.net/chosen0ne/article/details/10036775

A:atomicity 原子性

C:Consistency  一致性

I: Isolation 隔離性

D:durabiliity 可靠性

事務的基本寫法

查看錶引擎命令

 show engines;

innodb支援事務,myisam不支援事務

事務的開啟:

begin或者start transaction

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> update goodsorder set much=7 where id=5;
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> select * from goodsorder;
+----+-----+------+
| id | gid | much |
+----+-----+------+
|  2 |   1 |    1 |
|  3 |   1 |    1 |
|  4 |   1 |    1 |
|  5 |   3 |    7 |
|  6 |   1 |   15 |
|  7 |   1 |    3 |
+----+-----+------+
6 rows in set (0.00 sec)

mysql> rollback;

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> delete from goodsorder where id=7;
Query OK, 1 row affected, 1 warning (0.02 sec)

mysql> update goodsorder set much=10 where id=6;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> select * from goodsorder;
+----+-----+------+
| id | gid | much |
+----+-----+------+
|  2 |   1 |    1 |
|  3 |   1 |    1 |
|  4 |   1 |    1 |
|  5 |   3 |    7 |
|  6 |   1 |   10 |
+----+-----+------+
5 rows in set (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from goodsorder;
+----+-----+------+
| id | gid | much |
+----+-----+------+
|  2 |   1 |    1 |
|  3 |   1 |    1 |
|  4 |   1 |    1 |
|  5 |   3 |    7 |
|  6 |   1 |   15 |
|  7 |   1 |    3 |
+----+-----+------+
6 rows in set (0.00 sec)


儲存點

通過儲存機制,使用者可以在事務中設定savepoint pointname ,

之後使用者在使用 roolback to savepoint pointname時

儲存點事務儲存,儲存點後事務不儲存

mysql> select * from goodsorder;
+----+-----+------+
| id | gid | much |
+----+-----+------+
|  2 |   1 |    1 |
|  3 |   1 |    1 |
|  4 |   1 |    1 |
|  5 |   3 |    7 |
|  6 |   1 |   15 |
|  7 |   1 |    3 |
+----+-----+------+
6 rows in set (0.00 sec)

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> update goodsorder set much=3 where id=2 ;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> savepoint save1;
Query OK, 0 rows affected (0.00 sec)

mysql> delete from  goodsorder;
Query OK, 6 rows affected, 1 warning (0.00 sec)

mysql> rollback to   savepoint save1;
Query OK, 0 rows affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from goodsorder;
+----+-----+------+
| id | gid | much |
+----+-----+------+
|  2 |   1 |    3 |
|  3 |   1 |    1 |
|  4 |   1 |    1 |
|  5 |   3 |    7 |
|  6 |   1 |   15 |
|  7 |   1 |    3 |
+----+-----+------+
6 rows in set (0.00 sec)


事務的結束:

commit 或者 rollback 一些DDL/DCL語句也會結束

上面例子已經很詳細的說明了rollback和commit了

rollback撤銷sql操作

rollback to savepoint pointname 撤回到儲存點

ciommit 提交sql操作

操作型別

1、DDL

      1-1、DDL的概述

               DDL(Data Definition Language 資料定義語言)用於操作物件和物件的屬性,這種物件包括資料庫本身,以及資料庫物件,像:表、檢視等等,DDL對這些物件和屬性的管理和定義具體表現在Create、Drop和Alter上。特別注意:DDL操作的“物件”的概念,”物件“包括物件及物件的屬性,而且物件最小也比記錄大個層次。以表舉例:Create建立資料表,Alter可以更改該表的欄位,Drop可以刪除這個表,從這裡我們可以看到,DDL所站的高度,他不會對具體的資料進行操作。


      1-2、DDL的主要語句(操作)

               Create語句:可以建立資料庫和資料庫的一些物件。
               Drop語句:可以刪除資料表、索引、觸發程式、條件約束以及資料表的許可權等。
               Alter語句:修改資料表定義及屬性。

      1-3、DDL的操作物件(表)

               1-3-1、表的概念
                           表的建立就是用來存放資料用的,由於我們存放的資料的不通,所以我們需要定義些資料型別,以方便管理。
               1-3-2、表的屬性    
                           主鍵屬性:主鍵就是主鍵約束,只不過起的名字不同了,主鍵的起名偏向於虛的(就是描述描述這件事),主鍵約束起名偏向於實得(就是描述操作的實施),描述的都是同一件事,主鍵約束就是表中的一個屬性;在一個表中最多可以有一個主鍵;一個主鍵可以定義在一個或多個欄位;主鍵使一個或多個欄位的值必須唯一且不為空,這樣做可以通過該欄位或該組欄位中的值唯一的代表一條記錄。
                           唯一屬性:一個表中只能有一個主鍵屬性,為了方表使用者,提出唯一約束;唯一約束可以定義在一個或多個欄位上;唯一約束使該欄位或該組欄位中的值唯一,可以為空,但是,不能重複。
                           外來鍵屬性:又叫外來鍵,又叫外來鍵約束,跟主鍵和主鍵約束的關係是一樣的;外來鍵約束針對的兩個表,如果表A的主關鍵字是表B中的欄位,則該欄位稱為表B的外來鍵,表A稱為主表,表B稱為從表,但要注意,必須要計算機要知道你是這種關係。


               核查、Null和預設屬性:核查屬性又叫核查約束,Null屬性又叫Null約束,預設屬性又叫預設約束;這些名稱是描述一件事,描述一種情況,這件事或這張情況我們當然可以人為的那樣特意做(輸入資料是注意就行),但是,他們的本意是實現自動化,也就是讓計算機做這件事。
            (你知道為什麼建立主鍵和唯一約束的時候,會自動的建立索引嗎?而且是唯一索引,想一想索引大多在那些欄位上用,以及索引的作用就會知道了。像主鍵約束、唯一約束、非空約束、外來鍵約束、核查約束和預設約束這些操作都是使表具有某些特性,所以在這裡我認為他們都是表的屬性。)


2、DML

      2-1、DML的概述

               DML(Data Manipulation Language 資料操控語言)用於操作資料庫物件中包含的資料,也就是說操作的單位是記錄。

      2-2、DML的主要語句(操作)

               Insert語句:向資料表張插入一條記錄。
               Delete語句:刪除資料表中的一條或多條記錄,也可以刪除資料表中的所有記錄,但是,它的操作物件仍是記錄。
               Update語句:用於修改已存在表中的記錄的內容。

      2-3、DML的操作物件——記錄

               2-3-1、注意
                           當我們對記錄進行Insert、Delete和Update操作的時候,一定要注意,一定要清楚DDL對其的一些操作。


3、DCL

       3-1、DCL的概述

                DCL(Data Control Language 資料控制語句)的操作是資料庫物件的許可權,這些操作的確定使資料更加的安全。

       3-2、DCL的主要語句(操作)

                Grant語句:允許物件的建立者給某使用者或某組或所有使用者(PUBLIC)某些特定的許可權。
                Revoke語句:可以廢除某使用者或某組或所有使用者訪問許可權

       3-3、DCL的操作物件(使用者)

                此時的使用者指的是資料庫使用者。 

相關推薦

java架構之路-(mysql底層原理)Mysql事務隔離MVCC

  上幾篇部落格我們大致講了一下mysql的底層結構,什麼B+tree,什麼Hash需要回行啊,再就是講了mysql優化的explain,這次我們來說說mysql的鎖。 mysql鎖   鎖從效能上分為樂觀鎖(用版本對比來實現)和悲觀鎖,樂觀鎖的效能要比悲觀鎖高。   從對資料庫操作的型別分,分為讀鎖和寫

mysql 事務寫法使用

事務的ACID特性: 在這片文章中給了詳細的解釋 http://blog.csdn.net/chosen0ne/article/details/10036775 A:atomicity 原子性 C:C

MySQL 事務鎖機制

mysql下表展示了本人安裝的MariaDB(10.1.19,MySQL的分支)所支持的所有存儲引擎概況,其中支持事務的有InnoDB、SEQUENCE,另外InnoDB還支持XA事務,MyISAM不支持事務。鎖可以通過SQL語句(如 LOCK TABLES )顯式申請,也可以由InnoDB引擎自動為你獲取。

mysql事務隔離級別鎖的關系

美團 enc 自己 ren 問題總結 關系 sql 事務 sql事務 其實操作了這麽久mysql一直也沒有把mysql中事務跟鎖的關系弄得特別清楚。然後搜到美團這篇文章,順便結合一下自己遇到的問題總結一下。 首先事務有四種隔離級別: Refere

PHPMYSQL事務處理

舉例 database 相同 bsp 幾分鐘 acl exists 細節 data PHP與MYSQL事務處理 $conn = mysql_connect(‘localhost‘,‘root‘,‘root‘) or die ("數據連接錯誤!!!"); mysql_

14 MySQL--事務&函數流程控制

控制 creat tran mysql- sub let 完整性 bsp wsb 一、事務 事務用於將某些操作的多個SQL作為原子性操作,一旦有某一個出現錯誤,即可回滾到原來的狀態,從而保證數據庫數據完整性。

JavaWeb--MySQL多表事務

今日內容 多表關係(理解) 一對一:在任意一方新增外來鍵指向另一方的主鍵,並且給外來鍵欄位新增unique約束;(瞭解) 一對多:在多的一方新增外來鍵指向一的一方的主鍵; 多對多:建立一張中間表,這個中間表中至少有兩個欄位作為外來鍵分別指向多對多雙方的主鍵; 多表查

MySQL事務管理檢視特性

MySQL的預設儲存引擎InnoDB支援事務,MyISAM不支援事務。所謂事務,在MySQL中就是一組“在一條船上的”DML語句,它們之間有邏輯關聯性,他們“同生共死”. 事務中還有一個非常重要的概念叫做儲存點:處於事務開始和結束之間,設定一個叫做儲存點的東西,他能夠保留事務進展的中間過程,

一文看懂 MySQL事務隔離級別

資料庫鎖 共享鎖(Shared lock) 例1: ---------------------------------------- T1: select * from table (請想象它需要執行1個小時之久,後面的sql語句請都這麼想象

Mysql-事務Redo Log、Undo Log

一 Undo Log Undo Log是為了實現事務的原子性,在MySQL資料庫InnoDB儲存引擎中,還用Undo Log來實現多版本併發控制(簡稱:MVCC)。 1   事務的原子性(Atomicity) 事務中的所有操作,要麼全部完成,要麼不做任何操作,不能只做部

mysql 檢視,事務儲存過程的簡要說明

1.1 檢視 根據SQL語句獲取動態的資料集,併為其命名 # CREATE VIEW 檢視名稱 AS SQL語句 # create view t1 as select * from teacher; # 建立的檢視有自己的表結構,並且如果對檢視的資料進行更改的話,相當

MySQL事務鎖詳解

事務 事務支援ACID特性 A原子性:所有操作要麼都做要麼都不做 C一致性:事務將資料庫從一種狀態變為另一種狀態一致性,保證資料庫完整性約束,例如唯一索引約束等 I隔離性:事務與事務之間是不可見的 D永續性:事務一旦提交那麼事務就是永久性的 ANSI/ISO SQL標準定義了4中

mysql事務prepare commit 階段分析

開啟binlog選項後,執行事務提交命令時,就會進入兩階段提交模式。兩階段提交分為prepare階段和commit兩個階段。流程如下 :這裡面涉及到兩個重要的引數:innodb_flush_log_at_trx_commit和sync_binlog,引數可以設定不同的值,具體可以檢視mysql的幫助

MySql資料庫檢視事務(九)

檢視 對於複雜的查詢,在多次使用後,維護是一件非常麻煩的事情 解決:定義檢視 檢視本質就是對查詢的一個封裝 定義檢視 create view stuscore as select studen

MySQL——事務鎖詳解

事務與鎖詳解 1.事務的定義 一系列的資料庫操作,這些操作必須全部執行,否則全部不執行。例如一些和銀行賬戶存取相關的資料庫操作,必須得保證每一個操作得執行。 2.事務衝突——贓讀、不可重複讀、幻讀 由於為了加快資料庫的操作,需要資料庫支援併發,這樣就可能會產生多

MySQL InnoDB四個事務級別 髒讀、不重複讀、幻讀

1、MySQL InnoDB事務隔離級別髒讀、可重複讀、幻讀 MySQL InnoDB事務的隔離級別有四級,預設是“可重複讀”(REPEATABLE READ)。 ·        1).未提交讀(READUNCOMMITTED)。另一個事務修改了資料,但尚未提交,而本事

MySQL 資料操作事務控制

-- 課後作業 -- 1.使用如下語句,建立學生表student和班級表class create table student (        -- 學生表             xh char(4),             -- 學號             xm va

資料庫事務MySQL事務總結

事務特點:ACID 從業務角度出發,對資料庫的一組操作要求保持4個特徵: Atomicity(原子性):一個事務必須被視為一個不可分割的最小工作單元,整個事務中的所有操作要麼全部提交成功,要麼全部失敗回滾,對於一個事務來說,不可能只執行其中的一部分操作。 Consistency(一致性):資料庫

Mysql 事務MVCC併發控制

本文簡單介紹了事務的ACID特性和Mysql事務的四種隔離級別,以及MVCC併發控制手段。 事務的ACID特性 原子性(Atomicity) 原子性強調事務作為一個整體,要麼完全執行成功,要麼完全執行失敗,不能存在一些操作成功,而其他的操作失敗這樣的可能會破壞資料一致性的情況

Mysql儲存引擎事務

儲存引擎: 資料庫對同樣的資料,有著不同的儲存方式和管理方式。在Mysql中,稱為儲存引擎。 常用的表的引擎:Myism   InnoDB    BDB   Memory  Archive、 常見儲存引擎特點: Myisam:批量插入速度快,不支援事務 Inno