mysql牽引例子_MySQL學習06(事務和索引)

事務

概述

什么是事務

事務就是將一組SQL語句放在同一批次內去執行

如果一個SQL語句出錯,則該批次內的所有SQL都將被取消執行

MySQL事務處理只支持InnoDB和BDB數據表類型

事務的ACID原則

原子性(Atomic)

整個事務中的所有操作,要么全部完成,要么全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回滾(ROLLBACK)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。

一致性(Consist)

一個事務可以封裝狀態改變(除非它是一個只讀的)。事務必須始終保持系統處于一致的狀態,不管在任何給定的時間并發事務有多少。也就是說:如果事務是并發多個,系統也必須如同串行事務一樣操作。其主要特征是保護性和不變性(Preserving an Invariant),以轉賬案例為例,假設有五個賬戶,每個賬戶余額是100元,那么五個賬戶總額是500元,如果在這個5個賬戶之間同時發生多個轉賬,無論并發多少個,比如在A與B賬戶之間轉賬5元,在C與D賬戶之間轉賬10元,在B與E之間轉賬15元,五個賬戶總額也應該還是500元,這就是保護性和不變性。

隔離性(Isolated)

隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,運行在相同的時間內,執行相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。這種屬性有時稱為串行化,為了防止事務操作間的混淆,必須串行化或序列化請求,使得在同一時間僅有一個請求用于同一數據。

持久性(Durable)

在事務完成以后,該事務對數據庫所作的更改便持久的保存在數據庫之中,并不會被回滾。

事務實現

基本語法

-- 使用set語句來改變自動提交模式SET autocommit = 0; ?/*關閉*/SET autocommit = 1; ?/*開啟*/-- 注意:-- 1.MySQL中默認是自動提交-- 2.使用事務時應先關閉自動提交-- 開始一個事務,標記事務的起始點START TRANSACTION -- 提交一個事務給數據庫COMMIT-- 將事務回滾,數據回到本次事務的初始狀態ROLLBACK-- 還原MySQL數據庫的自動提交SET autocommit =1;-- 保存點SAVEPOINT 保存點名稱 -- 設置一個事務保存點ROLLBACK TO SAVEPOINT 保存點名稱 -- 回滾到保存點RELEASE SAVEPOINT 保存點名稱 -- 刪除保存點

793c2ea0b2817b6061dc72b0b15bf68c.png

索引

索引分類

索引的作用

提高查詢速度

確保數據的唯一性

可以加速表和表之間的連接 , 實現表與表之間的參照完整性

使用分組和排序子句進行數據檢索時 , 可以顯著減少分組和排序的時間

全文檢索字段進行搜索優化.

分類

主鍵索引 (Primary Key)

唯一索引 (Unique)

常規索引 (Index)

全文索引 (FullText)

主鍵索引

主鍵 : 某一個屬性組能唯一標識一條記錄

特點 :

最常見的索引類型

確保數據記錄的唯一性

確定特定數據記錄在數據庫中的位置

唯一索引

作用 : 避免同一個表中某數據列中的值重復

與主鍵索引的區別

主鍵索引只能有一個

唯一索引可能有多個

CREATE TABLE `Grade`(?`GradeID` INT(11) AUTO_INCREMENT PRIMARYKEY,?`GradeName` VARCHAR(32) NOT NULL UNIQUE??-- 或 UNIQUE KEY `GradeID` (`GradeID`))

常規索引

作用 : 快速定位特定數據

注意 :

index 和 key 關鍵字都可以設置常規索引

應加在查詢找條件的字段

不宜添加太多常規索引,影響數據的插入,刪除和修改操作

CREATE TABLE `result`(??-- 省略一些代碼?INDEX/KEY `ind` (`studentNo`,`subjectNo`) -- 創建表時添加)-- 創建后添加ALTER TABLE `result` ADD INDEX `ind`(`studentNo`,`subjectNo`);

全文索引

作用 : 快速定位特定數據

注意 :

只能用于MyISAM類型的數據表

只能用于CHAR , VARCHAR , TEXT數據列類型

適合大型數據集

-- 方法一:創建表時CREATE TABLE 表名 (????字段名1 數據類型 [完整性約束條件…],????字段名2 數據類型 [完整性約束條件…],????[UNIQUE | FULLTEXT | SPATIAL ] ?INDEX | KEY????[索引名] (字段名[(長度)] [ASC |DESC]));

-- 方法二:CREATE在已存在的表上創建索引CREATE [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名 ON 表名 (字段名[(長度)] [ASC |DESC]) ;

-- 方法三:ALTER TABLE在已存在的表上創建索引?ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名 (字段名[(長度)] [ASC |DESC]) ;

刪除索引:DROP INDEX 索引名 ON 表名字;

刪除主鍵索引: ALTER TABLE 表名 DROP PRIMARY KEY;

顯示索引信息: SHOW INDEX FROM student;

/*增加全文索引*/ALTER TABLE `school`.`student` ADD FULLTEXT INDEX `studentname` (`StudentName`);/*EXPLAIN : 分析SQL語句執行性能*/EXPLAIN SELECT * FROM student WHERE studentno='1000';/*使用全文索引*/-- 全文搜索通過 MATCH() 函數完成。-- 搜索字符串做為 against() 的參數被給定。搜索以忽略字母大小寫的方式執行。對于表中的每個記錄行,MATCH() 返回一個相關性值。即,在搜索字符串與記錄行在 MATCH() 列表中指定的列的文本之間的相似性尺度。EXPLAIN SELECT *FROM student WHERE MATCH(studentname) AGAINST('love');

注意:MySQL 5.6 以前的版本,只有 MyISAM 存儲引擎支持全文索引;MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存儲引擎均支持全文索引;只有字段的數據類型為 char、varchar、text 及其系列才可以建全文索引。測試或使用全文索引時,要先看一下自己的 MySQL 版本、存儲引擎和數據類型是否支持全文索引。

索引準則

索引不是越多越好

不要對經常變動的數據加索引

小數據量的表建議不要加索引

索引一般應加在查找條件的字段

索引的數據結構

hash類型的索引:查詢單條快,范圍查詢慢

btree類型的索引:b+樹,層數越多,數據量指數級增長(我們就用它,因為innodb默認支持它)

不同的存儲引擎支持的索引類型也不一樣

InnoDB支持事務,支持行級別鎖定,支持 B-tree、

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395078.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395078.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395078.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android操作系統 真的嗎_旋挖機培訓學校真的能學會嗎,旋挖鉆機到底有哪些操作系統...

旋挖機培訓學校真的能學會嗎添加微:yywyyc 旋挖鉆機到底有哪些操作系統【前言】很多使用旋挖鉆機或者想要了解旋挖鉆機的工程公司可能不是特別了解旋挖鉆機本身的系統以及部件,本篇文章針對旋挖鉆機的操作系統來給大家介紹一下,讓大家了…

WebAPI 2參數綁定方法

簡單類型參數 Example 1: Sending a simple parameter in the Url [RoutePrefix("api/values")] public class ValuesController : ApiController {// http://localhost:49407/api/values/example1?id2[Route("example1")][HttpGet]public string Get(int…

推薦幾個自己經常去的一些博客和網站

唐巧的技術博客objc中國Ray WenderlichCocoaDocs.orgNSHipsterLukes HomepageCocoabit | 做自己喜歡的事情轉載于:https://www.cnblogs.com/faceup/p/10423259.html

創建hugo博客_Hugo + Firebase:如何在幾分鐘內免費創建自己的靜態網站

創建hugo博客by Aravind Putrevu通過Aravind Putrevu Hugo Firebase:如何在幾分鐘內免費創建自己的靜態網站 (Hugo Firebase: How to create your own static website for free in minutes) Ever thought of having your own website for putting up your projec…

探測與響應是各企業機構在2017年的首要安全事務

作者系:Gartner首席研究分析師 Sid Deshpande &Gartner研究總監 Lawrence Pingree 2017年,各個企業正在改變其安全支出戰略,從僅注重防御轉而更加關心探測和響應程度。2017年的全球信息安全支出預計將達到900億美元,相較2016年…

java怎么引入html文件路徑_如何在public_html中讀取文件但在域外?使用相對路徑...

我正在嘗試從我的(附加組件)域目錄之外的目錄中讀取文件 . 這是我的目錄結構:public_html /domain /file_read.phpfile_write.phpsensitive /file.dat雖然我能夠使用“../sensitive/file.dat”寫入敏感,但我無法使用相同的方法進行讀取 . 有什么想法嗎&a…

JS基本概念(3)

【5】操作符 (1)一元操作符:只能操作一個值的操作符 遞增、遞減操作符a --a 前置    a a-- 后置(這四個操作符對任何值都適用,不能轉換成數字的轉換為NaN) 一元加、一元減操作符&#xff0…

csv文件怎么轉成excel_Java讀寫excel,excel轉成json寫入磁盤文件

pom讀寫excel主要的dependency<dependency> <groupId>org.apache.poigroupId> <artifactId>poiartifactId> <version>3.16version> dependency> <dependency> <groupId>org.apache.poigroupId> …

如何用Ant Design Pro框架做項目省力

1、熟悉React所有語法&#xff0c;以及redux、redux-saga、dva、一類的庫的能力 2、靈活運用該框架提供的基礎UI組件&#xff0c;想方設法利用現有的UI組件進行組合&#xff0c;盡可能減少工作量 轉載于:https://www.cnblogs.com/ww01/p/10430553.html

通過在Chipotle用餐了解模板方法設計模式

by Sihui Huang黃思慧 通過在Chipotle用餐了解模板方法設計模式 (Understanding the Template Method design pattern by eating at Chipotle) Object-Oriented Design Patterns in Life— gain an intuitive understanding of OO design patterns by linking them with real-…

Coriant助力Aureon部署100Gbps光纖網絡

根據相關消息顯示&#xff0c;光傳輸設備廠商Coriant日前表示已經向網絡傳輸和業務通信服務供應商Aureon Technology提供了7100納米分組光傳輸平臺&#xff0c;幫助其進行100Gbps光纖網絡的拓展。 該服務供應商&#xff08;Aureon&#xff09;將利用該分組光傳輸系統&#xff0…

python class tynu()_Visual Studio Express | Teraz Visual Studio Community

Program Visual Studio 2019 jest teraz dost?pnyDostosowany instalatorTwrz aplikacje w technologiach WPF, WinForms, platformy uniwersaln? systemu Windows, Win32, Android, iOS i innych — wszystko to za pomoc? jednego ?rodowiska IDE zapewniaj?cego wszyst…

css樣式中如何設置中文字體?

代碼如下: .selector{font-family: SimHei,"微軟雅黑",sans-serif;} 注意&#xff1a;加上中文名“微軟雅黑”是為了兼容opera瀏覽器&#xff0c;中文字體名必須加上引號&#xff08;單引號雙引號都可以&#xff09;。 MicrosoftJhengHei為微軟正黑體&#xff0c;STH…

前端做CRM管理系統是做什么_代辦行業的CRM客戶關系管理系統應該是什么樣子的?...

隨著互聯網的深耕細化&#xff0c;很多企業也在不斷優化自己的辦公方式&#xff0c;以優化企業的辦公流程&#xff0c;提高企業的辦事效率。因此實現辦公自動化&#xff0c;或者說實現數字化辦公就需要逐漸提上日程。今天給大家講講可以幫助代辦行業實現辦公自動化的產品&#…

(譯) JSON-RPC 2.0 規范(中文版)

http://wiki.geekdream.com/Specification/json-rpc_2.0.html 起源時間: 2010-03-26(基于2009-05-24版本) 更新: 2013-01-04 作者: JSON-RPC工作組< json-rpcgooglegroups.com > 原文鏈接: http://www.jsonrpc.org/specification翻譯: leozvc < xxfs91gmail.com >…

ios pusher使用_如何使用JavaScript和Pusher實時更新用戶狀態

ios pusher使用by Rahat Khanna通過拉哈特漢娜 如何使用JavaScript和Pusher實時更新用戶狀態 (How to update a User’s Status in realtime using JavaScript and Pusher) “Hey, what’s up?” is not a phrase we need to ask someone these days. These days knowing wha…

python + pyqt5 UI和信號槽分離方法

初級菜鳥&#xff0c;知識點記錄。 每次重新生成UI.py文件的時候&#xff0c;里面的按鈕方法都會被清除&#xff0c;想一個方法可以把按鈕響應方法放到外面&#xff0c;利于維護。 新建一個按鈕文件并繼承UI代碼&#xff0c;把信號槽及按鈕響應方法寫在按鈕文件里面&#xff0c…

學習之路~sqh

推薦博客 Edison Chou&#xff1b;Vamei&#xff1b;算法?面試專題 - 簡書&#xff1b;xingoo - 博客園&#xff1b;設計模式 極速理解設計模式系列【目錄索引】- Caleung&#xff1b;Net設計模式 - 靈動生活&#xff1b;宅男程序員給老婆的計算機課程系列&#xff1b;C設計模…

python format函數保留兩位小數_python format函數

在Python 3.0中&#xff0c;%操作符通過一個更強的格式化方法format()進行了增強。對str.format()的支持已經被反向移植到了Python 2.6在2.6中&#xff0c;8-bit字符串和Unicode字符串都有一個format()方法&#xff0c;這個方法會把字符串當作一個模版&#xff0c;通過傳入的參…

藍牙 sig base uuid_藍牙模塊采用陶瓷天線和PCB天線的區別

一、陶瓷天線陶瓷天線是一種適合于藍牙設備使用的小型化天線,又分為塊狀陶瓷天線和多層陶瓷天線。陶瓷天線占用空間很小、性能比較好&#xff1b; 帶寬窄&#xff0c;比較難做到多頻段&#xff1b;有效提高主板的整合度&#xff0c;并可降低天線對ID的限制&#xff1b;需要在主…