第二單元 資料庫操作

来源:https://www.cnblogs.com/xuyubing/archive/2023/11/23/17852411.html
-Advertisement-
Play Games

1. 資料庫文件組成 主數據文件 主要數據文件的建議文件擴展名是 .mdf。 主要數據文件包含資料庫的啟動信息,並指向資料庫中的其他文件,存儲部分或全部的數據。用戶數據和對象可存儲在此文件中,也可以存儲在次要數據文件中。 每個資料庫有一個主要數據文件。 mdf文件並非普通文件,因此不藉助相應軟體是無 ...


1. 資料庫文件組成

主數據文件

  • 主要數據文件的建議文件擴展名是 .mdf

  • 主要數據文件包含資料庫的啟動信息,並指向資料庫中的其他文件,存儲部分或全部的數據。用戶數據和對象可存儲在此文件中,也可以存儲在次要數據文件中。

  • 每個資料庫有一個主要數據文件。

  • mdf文件並非普通文件,因此不藉助相應軟體是無法打開 mdf文件的。打開mdf文件的常用虛擬光碟機軟體主要有:Daemon Tools 、東方光碟機魔術師等。

次要數據文件 (*.ndf

  • 次要數據文件的建議文件擴展名是 .ndf

  • 次要數據文件是可選的,由用戶定義並存儲用戶數據,用於存儲主數據文件未能存儲的剩餘數據和一些資料庫對象。

  • 通過將每個文件放在不同的磁碟驅動器上,次要文件可用於將數據分散到多個磁碟上。

  • 如果資料庫超過了單個 Windows 文件的最大大小,可以使用次要數據文件,這樣資料庫就能繼續增長。

事務日誌 (*.ldf

  • 事務日誌的建議文件擴展名是 .ldf

  • 事務日誌文件保存用於恢複數據庫的事務日誌信息。資料庫的插入、刪除、更新等操作都會記錄在日誌文件中,而查詢不會記錄在日誌文件中。整個的資料庫有且僅有一個日誌文件。

  • 每個資料庫必須至少有一個日誌文件。

2. 文件組

不同的文件可以存分佈到不同的物理硬碟上,這樣便於分散硬碟IO,提高數據的讀取速度。

數據文件的組合,稱作文件組(File Group),資料庫不能直接設置存儲數據的數據文件,而是通過文件組來指定。

文件和文件組的關係

SQL Server 的數據存儲在文件中,文件是實際存儲數據的物理實體,文件組是邏輯對象,SQL Server 通過文件組來管理文件。

一個資料庫有一個或多個文件組,其中主文件組(Primary File Group)是系統自動創建的,用戶可以根據需要添加文件組。 每一個文件組管理一個或多個文件,其中主文件組中包含主要數據文件(*.mdf),主文件組中也可以包含次要數據文件 。(主要數據文件是系統預設生成的,並且在資料庫中是唯一的;次要數據文件是用戶根據需要添加的。) 除了主文件組之外,其他文件組只能包含輔助文件。 如下示例資料庫,系統已自動創建主文件組 PRIMARY,勾選 Default 表示將主文件組設置為預設文件組,即如果在 create table 和 create index 時沒有指定 FileGroup 選項,那麼 SQL Server 將使用預設的 PRIMARY 文件組來存儲數據。

在這裡插入圖片描述

文件組是一個邏輯實體,實際上,數據存儲在文件中(.mdf和.ndf)中,每一個文件組中都包含文件,如下圖:

在這裡插入圖片描述

由上圖可以看到,資料庫文件的元數據:

Logical Name – 文件的邏輯名稱,用於數據壓縮 DBCC ShrinkFile 等; File Type – 文件類型,有兩種:Rows Data(存儲數據)和 Log(存儲日誌); Initial Size – 文件初始大小; Autogrowth/Maxsize – Autogrowth 表示文件自動增加的步長,

Maxsize 表示文件大小的最大值限制; Path – 文件存放路徑; File Name – 文件的物理名稱,邏輯名稱和物理名可以不同 。

使用文件組的優勢

在實際開發資料庫的過程中,通常情況下,用戶需要關註文件組,而不用關心文件的物理存儲,即使DBA改變文件的物理存儲,用戶也不會察覺到,也不會影響資料庫去執行查詢。除了邏輯文件和物理文件的分離之外,SQL Server使用文件組還有一個優勢,那就是分散IO負載,其實現的原理是:

對於單分區表,數據只能存到一個文件組中。如果把文件組內的數據文件分佈在不同的物理硬碟上,那麼SQL Server能同時從不同的物理硬碟上讀寫數據,把IO負載分散到不同的硬碟上。 對於多分區表,每個分區使用一個文件組,把不同的數據子集存儲在不同的磁碟上,SQL Server在讀寫某一個分組的數據時,能夠調用不同的硬碟IO。

 

3. 資料庫操作

1. 使用SSMS方式

SSMS : Microsoft SqlServer Management Studio, 也就是資料庫管理軟體。

  1. 在對象資源管理器中,右鍵單擊資料庫文件夾/圖標,然後選擇 New database...

img

  1. 進行資料庫命名,此處叫 “TaskTracker”,然後點擊 “OK”

    img

  2. 資料庫展示

    img

2. T-SQL 方式

1. 創建資料庫

-- 創建資料庫
create database 第二單元測試
-- 指定數據文件存儲的文件組  on:在。。。。這上,primary:主文件組
on primary  
(
    -- 資料庫的邏輯名稱:相當於是某人的外號
    Name = '第二單元測試', -- 邏輯名稱需要是唯一
    filename = 'D:\test\第二單元測試_物理名稱.mdf', -- 物理名稱
    size=5mb, -- 文件初始大小,初始化必須>=5 ,因為創建資料庫的model 模板信息 必須是5mb以上
    filegrowth = 4mb,  -- 每次增長多少
    maxsize =200mb  -- 文件的最大值
);

 

2. 創建次文件

alter database 第二單元測試
add file
(
    -- 資料庫的邏輯名稱:相當於是某人的外號
    Name = '第二單元測試_次文件',
    filename = 'E:\test\第二單元測試_次文件.ndf', -- 物理名稱
    size=5mb, -- 文件初始大小,初始化必須>=5 ,因為創建資料庫的model 模板信息 必須是5mb以上
    filegrowth = 4mb,  -- 每次增長多少
    maxsize =200mb  -- 文件的最大值
)

 

3. 簡化創建資料庫(初學者推薦)

-- create database <資料庫名稱>;
create database 任我行教學管理系統;

 

4. 刪除資料庫

-- 切換資料庫
use master;
-- drop database <資料庫名稱>;
drop database 任我行教學管理系統;

 

5. 查看資料庫信息

-- exec sp_helpdb '<資料庫名稱>'
exec sp_helpdb 'Soa模擬考試'

 

6. 修改資料庫名稱

-- exec sp_renamedb '<需要修改的資料庫的名稱>','<新的資料庫名稱>' ;

exec sp_renamedb 
'第二單元測試', -- 需要修改的資料庫的名稱
'第二單元'  -- 新的資料庫名稱

 

7. 切換資料庫

-- use <資料庫名稱>
use 任我行教學管理系統;

 

 

4. 備份與還原

可能有一天,資料庫遭黑客攻擊,資料庫遭破壞,這個時候就需要時常的做文件的備份。也有可能公司來了一個馬大哈,把資料庫給刪除(刪庫跑路),這個時候也需要備份。

備份

-- backup database <資料庫名稱> to disk = '磁碟路徑';
backup database 第二單元測試 to disk ='D:\test\第二單元測試.bak';

 

還原

  • 資料庫不存在的情況下

-- restore database <資料庫名稱>  from disk = '磁碟路徑'
restore database 第二單元測試 from disk = 'D:\test\第二單元測試.bak'

 

  • 資料庫存在的情況下

-- with replace:替換
-- restore database <資料庫名稱>  from disk = '磁碟路徑' with replace;
restore database 第二單元測試 from disk = 'E:\test\第二單元測試.bak' with replace;

 

 

5. 附加與分離

假設我有一個比較好的資料庫,大家都想要,我可以發給你們,但是直接發送不了,因為會提示“這個文件在資料庫SqlServer中打開”, 這個時候就需要使用分離,將這個資料庫文件中SqlServer中 T 出去。

現在資料庫已經分離並且資料庫也發給你們了,我自己也想要用這個資料庫,這個時候就要重新的附加到SQLSERVER中來

分離

-- execute:執行
-- sp_detach_db:分離的存儲過程(理解為一個函數)
-- execute sp_detach_db '<資料庫名稱>'
execute sp_detach_db 'Soa模擬考試'

 

附加

-- 附加
-- sp_attach_db:附加的存儲過程
-- exec sp_attach_db '<資料庫名稱>','<資料庫文件所在路徑>' ;
exec sp_attach_db 'Soa模擬考試','C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Soa模擬考試.mdf'

 

配套視頻鏈接:【階段二】 - SQLServer 基礎(超級詳細,口碑爆盆)_嗶哩嗶哩_bilibili

海闊平魚躍,天高任我行,給我一片藍天,讓我自由翱翔。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天有群友在群里問 C# 能不能在 Linux 下訪問 Access資料庫? 我覺得這很有趣,因此研究折騰了一下,也因為很久沒有寫博文了,所以特意上來寫博文分享經驗。 運行環境 操作系統:Ubuntu 22.04.3 LTS (Jammy) 開發工具:Visual Studio 2022 (17.8 ...
  • 簡介: 問題:在WPF中,使用了ObservableCollection<T>作為dataGrid的數據源,發現更新數據的時候不會觸發dataGrid的更新 By MaQaQ 2023-11-22 分析: 1、ObservableCollection 會在集合的元素添加、移除或者清空時才觸發更新通知 ...
  • 前言 在C#中,var關鍵字是用來聲明變數類型的,它是C# 3.0推出的新特征,它允許編譯器根據初始化表達式推斷變數類型,有點跟javascript類似,而javascript中的var是弱類型。它讓C#變數聲明更加簡潔,但也導致了一些關於C#是強類型還是弱類型的爭論。 解析 在傳統意義上,強類型語 ...
  • Welcome to YARP - 1.認識YARP並搭建反向代理服務 Welcome to YARP - 2.配置功能 2.1 - 配置文件(Configuration Files) 2.2 - 配置提供者(Configuration Providers) 2.3 - 配置過濾器(Configur ...
  • 四、Linux幫助使用 1、Tab鍵的作用 當所輸入的關鍵字具有唯一性時,一次Tab則自動補齊 所輸入的關鍵字不具有唯一性,則系統會列出所有該關鍵字開頭的內容 補齊命令 補齊參數 2、歷史記錄 history:查看所有歷史記錄 history N :列出最近N條歷史記錄 !N:調用第N條歷史記錄 ! ...
  • vim和vi有什麼區別,簡單的理解vim是vi的升級版,所以直接用vim。 vim的所有操作是區分中英文大小寫的,並且區分數字鍵盤(數字不能用小鍵盤)。 vim有三種工作模式:命令模式、文本編輯模式和最後行模式。 一、命令模式下的操作 1.1游標定位 鍵盤的上下左右可以移動,同時 k 上移 j 下移 ...
  • 為了維護數據表的數據完整性而設定的一系列規則,防止用戶在數據表中插入一些錯誤的數據. 1. 表約束分類 主鍵約束:保證數據的完整性,唯一性,原子性(Id:編號) 外鍵約束 分類表數據: Id分類名稱 1 衣服 2 手機 3 電器 商品表數據: 商品編號商品名稱價格所屬分類(外鍵) 1 李寧牌運動服 ...
  • SQL中的LIKE運算符用於在WHERE子句中搜索列中的指定模式。通常與LIKE運算符一起使用的有兩個通配符: 百分號 % 代表零個、一個或多個字元。 下劃線 _ 代表一個單個字元。 以下是LIKE運算符的用法和示例: 示例 選擇所有以字母 "a" 開頭的客戶: SELECT * FROM Cust ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...