日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL(七) - 事务、索引、视图

發布時間:2023/12/4 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL(七) - 事务、索引、视图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

事務(Transaction)

3.1、什么是事務?

一個事務是一個完整的業務邏輯單元,不可再分。

比如:銀行賬戶轉賬,從A賬戶向B賬戶轉賬10000.需要執行兩條update語句:
update t_act set balance = balance - 10000 where actno = ‘act-001’;
update t_act set balance = balance + 10000 where actno = ‘act-002’;

以上兩條DML語句必須同時成功,或者同時失敗,不允許出現一條成功,一條失敗。

要想保證以上的兩條DML語句同時成功或者同時失敗,那么就需要使用數據庫的“事務機制”。

3.2、和事務相關的語句只有:DML語句。(insert delete update)
為什么?因為它們這三個語句都是和數據庫表當中的“數據”相關的。
事務的存在是為了保證數據的完整性,安全性。

3.3、假設所有的業務都能使用1條DML語句搞定,還需要事務機制嗎?
不需要事務。

但實際情況不是這樣的,通常一個“事兒(事務【業務】)”需要多條DML語句共同聯合完成。

3.4、事務的特性?
事務包括四大特性:ACID

  • A: 原子性:事務是最小的工作單元,不可再分。
  • C: 一致性:事務必須保證多條DML語句同時成功或者同時失敗。
  • I:隔離性:事務A與事務B之間具有隔離。
  • D:持久性:持久性說的是最終數據必須持久化到硬盤文件中,事務才算成功的結束。

事務中存在一些概念:

  • 事務(Transaction):一批操作(一組DML)
  • 開啟事務(Start Transaction)
  • 回滾事務(rollback)
  • 提交事務(commit)
  • SET AUTOCOMMIT:禁用或啟用事務的自動提交模式
  • 當執行DML語句是其實就是開啟一個事務

    關于事務的回滾需要注意:只能回滾insert、delete和update語句,不能回滾select(回滾select沒有任何意義),對于create、drop、alter這些無法回滾.
    事務只對DML有效果。

    注意:rollback,或者commit后事務就結束了。回滾就是回到上一次提交的位置

    關于事務之間的隔離性
    事務隔離性存在隔離級別,理論上隔離級別包括4個:
    第一級別:讀未提交(read uncommitted)

    • 對方事務還沒有提交,我們當前事務可以讀取到對方未提交的數據。
    • 讀未提交存在臟讀(Dirty Read)現象:表示讀到了臟的數據。

    第二級別:讀已提交(read committed)

    • 對方事務提交之后的數據我方可以讀取到。
    • 這種隔離級別解決了: 臟讀現象沒有了
    • 讀已提交存在的問題是:不可重復讀。

    第三級別:可重復讀(repeatable read)

    • 這種隔離級別解決了:不可重復讀問題。
    • 這種隔離級別存在的問題是:讀取到的數據是幻象。

    第四級別:序列化讀/串行化讀(serializable)

    • 解決了所有問題。

    • 效率低。需要事務排隊。

      oracle數據庫默認的隔離級別是:讀已提交。mysql數據庫默認的隔離級別是:可重復讀。

    索引

    4.1、什么是索引?有什么用?
    索引就相當于一本書的目錄,通過目錄可以快速的找到對應的資源。
    在數據庫方面,查詢一張表的時候有兩種檢索方式:
    第一種方式:全表掃描
    第二種方式:根據索引檢索(效率很高)

    索引為什么可以提高檢索效率呢?其實最根本的原理是縮小了掃描的范圍。索引雖然可以提高檢索效率,但是不能隨意的添加索引,因為索引也是數據庫當中的對象,也需要數據庫不斷的維護。是有維護成本的。比如,表中的數據經常被修改這樣就不適合添加索引,因為數據一旦修改,索引需要重新排序,進行維護。添加索引是給某一個字段,或者說某些字段添加索引。select ename,sal from emp where ename = 'SMITH';當ename字段上沒有添加索引的時候,以上sql語句會進行全表掃描,掃描ename字段中所有的值。當ename字段上添加索引的時候,以上sql語句會根據索引掃描,快速定位。4.2、怎么創建索引對象?怎么刪除索引對象?創建索引對象:create index 索引名稱 on 表名(字段名);刪除索引對象:drop index 索引名稱 on 表名;4.3、什么時候考慮給字段添加索引?(滿足什么條件)* 數據量龐大。(根據客戶的需求,根據線上的環境)* 該字段很少的DML操作。(因為字段進行修改操作,索引也需要維護)* 該字段經常出現在where子句中。(經常根據哪個字段查詢)4.4、注意:主鍵和具有unique約束的字段自動會添加索引。根據主鍵查詢效率較高。盡量根據主鍵檢索。

    4.5、查看sql語句的行計劃:

    mysql> explain select ename,sal from emp where sal = 5000;

    給薪資sal字段添加索引:

    create index emp_sal_index on emp(sal);

    重新查看sql語句的行計劃

    explain select ename,sal from emp where sal = 5000;


    刪除剛才創建的索引:

    drop index 索引名稱 on 表名 drop index emp_sal_index on emp;

    4.6、索引底層采用的數據結構是:B Tree

    4.7、索引的實現原理?

    • 通過B Tree縮小掃描范圍,底層索引進行了排序,分區,索引會攜帶數據在表中的“物理地址”,

    • 最終通過索引檢索到數據之后,獲取到關聯的物理地址,通過物理地址定位表中的數據,效率是最高的。

    select ename from emp where ename = ‘SMITH’;
    通過索引轉換為:
    select ename from emp where 物理地址 = 0x3;

    4.8、索引的分類?
    單一索引:給單個字段添加索引
    復合索引: 給多個字段聯合起來添加1個索引
    主鍵索引:主鍵上會自動添加索引
    唯一索引:有unique約束的字段上會自動添加索引

    4.9、索引什么時候失效?

    select ename from emp where ename like '%A%';

    模糊查詢的時候,第一個通配符使用的是%,這個時候索引是失效的。

    視圖(view)

    5.1、什么是視圖?站在不同的角度去看到數據。(同一張表的數據,通過不同的角度去看待)。5.2、怎么創建視圖?怎么刪除視圖?create view myview as select empno,ename from emp;drop view myview;注意:只有DQL語句才能以視圖對象的方式創建出來。5.3、對視圖進行增刪改查,會影響到原表數據。(通過視圖影響原表數據的,不是直接操作的原表) 可以對視圖進行CRUD操作。5.4、面向視圖操作?mysql> select * from myview;+-------+--------+| empno | ename |+-------+--------+| 7369 | SMITH || 7499 | ALLEN || 7521 | WARD || 7566 | JONES || 7654 | MARTIN || 7698 | BLAKE || 7782 | CLARK || 7788 | SCOTT || 7839 | KING || 7844 | TURNER || 7876 | ADAMS || 7900 | JAMES || 7902 | FORD || 7934 | MILLER |+-------+--------+create table emp_bak as select * from emp;create view myview1 as select empno,ename,sal from emp_bak;update myview1 set ename='hehe',sal=1 where empno = 7369; // 通過視圖修改原表數據。delete from myview1 where empno = 7369; // 通過視圖刪除原表數據。5.5、視圖的作用?視圖可以隱藏表的實現細節。保密級別較高的系統,數據庫只對外提供相關的視圖,java程序員只對視圖對象進行CRUD。

    DBA命令

    常用的命令DNA命令有:

  • 新建用戶

  • 授權

  • 回收權限

  • 數據導入導出(主要介紹)

    6.1、將數據庫當中的數據導出
    在windows的dos命令窗口中執行:(導出整個庫)
    mysqldump bjpowernode>D:\bjpowernode.sql -uroot -p333

    在windows的dos命令窗口中執行:(導出指定數據庫當中的指定表)mysqldump bjpowernode emp>D:\bjpowernode.sql -uroot –p123

    6.2、導入數據
    create database bjpowernode;
    use bjpowernode;
    source D:\bjpowernode.sql

  • 數據庫設計三范式(重點內容,面試經常問)

    7.1、什么是設計范式?

    設計表的依據。按照這個三范式設計的表不會出現數據冗余。

    7.2、三范式都是哪些?第一范式:任何一張表都應該有主鍵,并且每一個字段原子性不可再分。第二范式:建立在第一范式的基礎之上,所有非主鍵字段完全依賴主鍵,不能產生部分依賴。多對多?三張表,關系表兩個外鍵。t_student學生表sno(pk) sname-------------------1 張三2 李四3 王五t_teacher 講師表tno(pk) tname---------------------1 王老師2 張老師3 李老師t_student_teacher_relation 學生講師關系表id(pk) sno(fk) tno(fk)----------------------------------1 1 32 1 13 2 24 2 35 3 16 3 3第三范式:建立在第二范式的基礎之上,所有非主鍵字段直接依賴主鍵,不能產生傳遞依賴。一對多?兩張表,多的表加外鍵。班級t_classcno(pk) cname--------------------------1 班級12 班級2學生t_studentsno(pk) sname classno(fk)---------------------------------------------101 張1 1102 張2 1103 張3 2104 張4 2105 張5 2提醒:在實際的開發中,以滿足客戶的需求為主,有的時候會拿冗余換執行速度。7.3、一對一怎么設計?一對一設計有兩種方案:主鍵共享t_user_login 用戶登錄表id(pk) username password--------------------------------------1 zs 1232 ls 456t_user_detail 用戶詳細信息表id(pk+fk) realname tel ....------------------------------------------------1 張三 11111111112 李四 1111415621一對一設計有兩種方案:外鍵唯一。t_user_login 用戶登錄表id(pk) username password--------------------------------------1 zs 1232 ls 456t_user_detail 用戶詳細信息表id(pk) realname tel userid(fk+unique)....-----------------------------------------------------------1 張三 1111111111 22 李四 1111415621 1

    總結

    以上是生活随笔為你收集整理的SQL(七) - 事务、索引、视图的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产激情四射 | 密臀av在线播放 | 伊人影院av | 少妇淫片| 日韩视频在线观看一区二区 | 在线观看免费视频黄 | 亚洲综合激情小说 | 久久久久中文字幕 | 又黄又色 | 中国极品少妇xxxx做受 | 亚洲第一页乱 | 国产亚洲一区二区三区不卡 | 国产在线观看www | 黄色大片视频网站 | 国产乱妇4p交换乱免费视频 | 亚洲 美腿 欧美 偷拍 | 午夜在线观看影院 | www日本xxx | 女人一区二区 | 亚洲av久久久噜噜噜熟女软件 | 免费在线看黄视频 | 国产精品影院在线观看 | 国产福利免费观看 | 九九九久久久精品 | 国产喷水福利在线视频 | 人妻无码一区二区三区四区 | 国产特黄大片aaaa毛片 | 青青免费视频 | 中文字幕免费高清网站 | 午夜精品国产 | 欧美做爰全过程免费看 | 高h校园不许穿内裤h调教 | 日韩 欧美 国产 综合 | 欧美久草| 95在线视频 | 国产视频久久久久 | 视频一区 中文字幕 | 国产精品腿扒开做爽爽爽挤奶网站 | 无套内谢的新婚少妇国语播放 | japanese24hdxxxx中文字幕 | 欧美极品jizzhd欧美 | 欧美人妻精品一区二区免费看 | 一卡二卡三卡视频 | 免费人妻精品一区二区三区 | 亚洲精品 日韩无码 | 国产免费一区二区三区 | 日韩第一页 | 天堂а√在线最新版中文在线 | 国产日韩一区二区 | 日韩成人高清视频在线观看 | 亚洲高清视频网站 | 成人免费视频播放 | 国产日韩精品一区二区三区在线 | 夜夜se| 国产精品亚洲专区无码牛牛 | 欧美在线播放一区 | 在线观看亚洲专区 | 自拍偷拍p | 国产麻豆天美果冻无码视频 | 亚洲伦理一区 | 亚洲欧洲日韩在线 | 欧美xxxxbbbb | 欧美成年人视频在线观看 | 欧美成人午夜视频 | 亚洲自拍偷拍第一页 | 欧美日韩国产免费观看 | 久久久噜噜噜久久中文字幕色伊伊 | 国产精品久久久久毛片大屁完整版 | 夫妻啪啪呻吟x一88av | 狠狠干成人 | jizz国产视频 | 日韩永久免费视频 | 三上悠亚在线一区 | 国产无遮挡呻吟娇喘视频 | 1024手机在线看片 | 182tv福利视频 | 中文字幕导航 | www.三级| 欧美三级一区 | 亚洲丝袜一区 | 天堂网av2014 | 成人h动漫精品一区二区无码 | 91av国产精品| 国产三级高清 | 精品久久久影院 | 精品久久久久久亚洲综合网站 | 极品91 | 新红楼梦2005锦江版高清在线观看 | 国产精品视频久久久久久久 | 在哪看毛片 | 婷婷久久五月天 | 婷婷五月综合缴情在线视频 | 久久九 | 九色精品在线 | 精品国产av一区二区三区 | 91私拍 | 伊人久久成人网 | 国产成人精品电影 | 亚洲 激情 小说 另类 欧美 |