MySQL資料庫02

来源:https://www.cnblogs.com/Charles-H/archive/2020/03/28/Learning_MYSQL02.html
-Advertisement-
Play Games

MySQL資料庫 前言: 前面我們瞭解了什麼是資料庫,什麼是MySQL資料庫以及如何運用,接下來我們接著深入學習MySQL。 (提前聲明,以下所提供的事例不標準,僅供參考) 資料庫的備份與還原: 備份: 在cmd中輸入 mysqldump -u root -p 資料庫名稱 > 備份路徑 還原:兩種方 ...


MySQL資料庫 

前言:

  前面我們瞭解了什麼是資料庫,什麼是MySQL資料庫以及如何運用,接下來我們接著深入學習MySQL。

  (提前聲明,以下所提供的事例不標準,僅供參考)

 

資料庫的備份與還原:

  備份: 在cmd中輸入 mysqldump -u root -p 資料庫名稱 > 備份路徑

  還原:兩種方法

  ①: mysql -u root -p 資料庫名稱 < 備份路徑

    (這個實例,我事先刪除了smbms的資料庫並重新導入)

  ②: 第一步:在伺服器內創建一個資料庫

     第二步:source 還原資料庫的地址

  當然你也可以更簡單,使用可視化工具直接備份和還原。

 

多表設計之外鍵的約束:

約束的作用:保證數據的完整性

單標約束:主鍵、唯一、非空

外鍵約束:用來保證數據完整性(多表之間)

添加外鍵約束:alter table 指向的表名 add foreign key (指向的鍵) references 被指向的表名(被指向的鍵);

 

具體示例:

 

 

 

表與表的關係:一對多、多對多、一對一

一對多:在多的一方創建外鍵指向一的一方主鍵。

 

多對多:需要創建第三張表(中間表),在中間表中至少兩個欄位分別作為外鍵,指向多對多雙方的主鍵。

 

 

一對一:兩種方式:

①唯一外鍵對應的方式:假設一對一是一個一對多關係,需要在多的一方創建外鍵指向一的一方的主鍵,將外鍵設置為唯一。

②主鍵對應方式:將兩個表的主鍵建立對應關係即可。

 

多表查詢的分類:連接查詢、子查詢

①連接查詢:

(1)交叉查詢:查詢到的是兩個表的笛卡爾積。

select * from 表1 cross join 表2; select * from 表1,表2;

(這裡主要看id,這個事例不標準,僅供參考)

 

 

(2)內連接:inner join  (inner 可以省略)

  • 顯示內連接:

select * from 表1 inner join 表2 on 關聯條件;

 

 

  • 隱式內連接:

select * from 表1,表2 where 關聯條件;

 

(3)外連接:outer join (outer可有省略)

【這裡註意看左外連接和右外連接的事例區別】

  • 左外連接:

select * from 表1 left outer join 表2 on 關聯條件;

 

 

  • 右外連接:

select * from 表1 right outer join 表2 on 關聯條件

 

②子查詢:一個查詢語句條件需要依賴另一個查詢語句的結果。

  • 帶in的子查詢
  • 帶exists的子查詢
  • 帶any的子查詢
  • 帶all的子查詢

 

事務:指的是邏輯上的一組操作,組成這組操作的各個邏輯單元,要麼全都成功,要麼全都失敗

 

開啟事務: start transaction;
提交事務: commit;
回滾事務: rollback;

 

事務的四大特性:
原子性:事務的不可分割,組成事務的各個邏輯單元不可分割
一致性:事務執行的前後,數據完整性保持一致
隔離性:事務執行不應該受到其他事務的干擾
持久性:事務一旦結束,數據就持久化到資料庫中

 

事務的隔離級別:
安全問題主要體現在讀取數據上:臟讀、不可重覆讀、虛讀/幻讀

臟讀:一個事務讀到了另一個事務未提交的數據,導致查詢結果不一致。
不可重覆讀:一個事務讀到了另一個事務已經提交的update的數據,導致多次查詢結果不一致。
虛讀/幻讀:一個事務讀到了另一個事務已經提交的insert的數據,導致多次查詢結果不一致。

 

解決方法:設置事務的隔離級別: 級別由上到下依次增強,但是讀取速度依次下降。
read uncommitted:臟讀,不可重覆讀,虛讀都有可能發生。
read committed:避免臟讀。但是不可重覆讀和虛讀是有可能發生的
repeatable read:避免臟讀和不可重覆讀,但是虛讀有可能發生。
serializable:避免臟讀,不可重覆讀,虛讀。

 

設置事務的隔離級別: SET SESSION TRANSACTION ISOLATION LEVEL 隔離級別;
查看當前的隔離級別: SELECT @@tx_isolation;

註意:不同版本的mysql,查看隔離級別語法不同!

上面那個是舊版的,新版的:SELECT @@transaction_isolation;

否則會報錯:ERROR 1193 (HY000): Unknown system variable 'tx_isolation'

 

 (關於事務可以自己去嘗試)

 

小結:

  以上就是多表和事務的介紹了,希望能對各位有所幫助。

                            加油

                        時間:2020-03-28 15:39:33

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文只對api介面,header請求參數進行簡單驗證,起到拋磚引玉使用,需要深入驗證,請自行擴展 項目目錄結構如圖 中間件類 using ApiMiddleware.Common.DataEnityModel; using ApiMiddleware.Common.DbContext; using ...
  • 一、引言 按照專用隊列解釋: MachineName\Private$\QueueName,只針對於本機的程式才可以調用的隊列,有些情況下為了安全起見定義為私有隊列。所以剛開始的時候認為,要想訪問遠程消息隊列,只能使用公共隊列。但是後來發現,公共隊列依賴Domain Controller(域控),在 ...
  • 一、打開CMD方式 點擊開始,找到windows系統展開,選擇命令提示符 win鍵+R鍵,在打開的彈框中輸入cmd,點擊確認 選中文件夾,按住shift鍵,點擊滑鼠右鍵,選擇在此處打開Powershell視窗 在資源管理器的地址欄上輸入cmd或者在地址前面加上cmd,按回車鍵 二、常用的DOS命令 ...
  • 段、頁結合:程式員希望用段,物理記憶體希望用頁,所以、、、 從虛擬記憶體中割出一個區域來給這個段,段就有了映射,但是這個虛擬記憶體不能正真的使用,需要把虛擬記憶體再映射一次,這個時候虛擬記憶體中的段分割成固定大小的頁,每一頁再去映射到物理記憶體中 1. 段、頁同時存在 段面向用戶,頁面向硬體 2. 段頁同時存在 ...
  • 1.下載CentOS CentOS下載地址: "https://wiki.centos.org/Download" 這裡選擇本地安裝包,網路安裝包在安裝時需要線上下載資源比較慢 2.安裝VirtualBox VirtualBox是Oracle旗下免費的輕量級虛擬機 VirtualBox下載地址: " ...
  • 我們在使用bash命令時,會經常使用二次tab鍵進行補齊。 例如我們常用的telnet命令,在輸入二次tab鍵時,會列出當前系統配置的所有主機名,供選擇 # 輸入 telnet <Tab> <Tab> [huangcihui:/home/huangcihui] telnet ::1 localhos ...
  • 在InnoDB中,數據存儲在磁碟上,處理數據時需要先將數據從磁碟讀取,再寫到記憶體。InnoDB採用局部性原理載入。 一、局部性原理 從磁碟讀取數據時,不需要一行一行讀取,而是以頁為單位讀取,操作系統中一頁4kb,InnoDB中一頁16kb。 二、InnoDB頁結構 頁是InnoDB管理存儲空間的基本 ...
  • 早期我們怎麼進行資料庫操作呢? 1、原理:一般來說,Java應用程式訪問資料庫的過程是: 載入資料庫驅動程式; 通過jdbc建立資料庫連接; 訪問資料庫,執行SQL語句; 斷開資料庫連接。 2、代碼 1 //查詢所有用戶 2 Public void FindAllUsers(){ 3 //1、裝載s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...