第二單元 資料庫操作

来源: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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...