SQL Server 快速上手 (1)-資料庫簡介

有幸接到了某大學的課程講師邀約,要做為期一個月的SQL Server與 .Net MVC教學,做簡報之餘也把內容記錄在部落格分享囉!

概述

SQL Server 是由美國微軟公司(Microsoft)所推出的關聯式資料管理系統(Relational Database Management System, RDBMS)

最新的版本是SQL Server 2019,已在美國時間2019年11月3日發布

SQL Server 的管理工具為 SQL Server Management Studio,通常是隨著SQL Server安裝時勾選使用者端的選項而安裝。

多數採用的SQL Server的系統與廠商會搭配微軟公司(Microsoft)所發展的程式語言(C#,VB)與框架(ASP.NET MVC , Winform , WPF … 等)進行系統設計與開發。

資料庫的階層是有循序的關係,也就是由小到大的排列,其最小的單位是 Bit(位元),而最大的單位則是 Data Base(資料庫)。資料依其單位的大小與 相互關係的層次如下: Bit(位元) → Byte(字元) → Field(資料欄) → Record(資料錄) → Table(資料表) → Data Base(資料庫)

SQL Server具備ACID特性,是指資料庫管理系統(DBMS)在寫入或更新資料的過程中,為保證事務(transaction)是正確可靠的,ACID特性如下:

  1. 原子性(Atomicity):一個事務(transaction)中的所有操作,或者全部完成,或者全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。即,事務不可分割、不可約簡。
  2. 一致性(Consistency):在事務開始之前和事務結束以後,資料庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設約束、觸發器、級聯回滾等。
  3. 事務隔離(Isolation):資料庫允許多個並發事務同時對其數據進行讀寫和修改的能力,隔離性可以防止多個事務並發執行時由於交叉執行而導致數據的不一致。事務隔離分為不同級別,包括未提交讀(Read uncommitted)、提交讀(read committed)、可重複讀(repeatable read)和串行化(Serializable)。
  4. 持久性(Durability):事務處理結束後,對數據的修改就是永久的,即便系統故障也不會丟失。

關聯式與非關聯式資料庫


對於關聯式資料庫,後續會在寫另一篇文章說明。 既然有關聯式資料庫,那並定也有非關聯式資料庫,簡單的描述一下兩者的差別

關係資料庫是數十年來的普遍技術。 這些都是成熟、證明且廣泛實行的。 競爭的資料庫產品、工具和專業知識為數眾多。 關係資料庫會提供相關資料表的存放區。 這些資料表具有固定的架構、使用 SQL (結構化查詢語言 (SQL) ) 來管理資料,並支援 ACID 保證。

NoSQL的資料庫 是指高效能、非關聯式資料存放區。 他們以易用性、可調整性、彈性和可用性等特性的方式使用 excel。 NoSQL 會儲存非結構化或半結構化的資料,而不是聯結正規化資料的資料表,通常是在機碼值組或 JSON 檔中。 SQL 資料庫通常不會提供超過單一資料庫分割範圍的 ACID 保證。 需要第二次回應時間的大量服務需要 NoSQL 資料存放區。

關聯式與 NoSQL 系統的考慮

當下列情況時,請考慮 NoSQL 資料存放區: 當下列情況時,請考慮關係資料庫:
大量的工作負載需要大規模的可預測延遲 (例如,以毫秒為單位測量的延遲,每秒執行數百萬筆交易) 您的工作負載量通常會在每秒數以千計的交易中容納
您的資料是動態且經常變更 資料高度結構化,而且需要參考完整性
關聯性可以是已取消正規化的資料模型 關聯性是透過正規化資料模型上的資料表聯結來表示
資料抓取很簡單,並以沒有資料表聯結的形式表示 您使用複雜的查詢和報表
資料通常會跨地理區域複寫,並需要更細微地控制一致性、可用性和效能 資料通常是集中式的,或可透過非同步方式複寫區域
您的應用程式將會部署到商用硬體,例如使用公用雲端 您的應用程式將會部署到大型、高階硬體

現代常見的資料庫


雖然本系列式以SQL Server為核心,但還是要說明一下資料庫在市面上的概況, 最常見的關連式資料庫除了SQL Server外,也包含 Oracle , PostgreSQL , MySQL , DB2 而常見的非關聯式資料庫則有MongoDB , Redis , InfluxDB , Cassandra , Elasticsearch , ScyllaDB…等 (P.s. 現場雲端大廠 AWS,Google,Microsoft 也均有發展自己的雲端NoSQL資料庫,有機會在另寫文章說明)

SQL Server關聯式資料庫優缺點


優點

(1) 降低資料的重複性(Redundancy),讓每個資料表都設計成有自己的功能。

(2) 達成資料的一致性(Consistency),更動資料表內容,由關聯規則使全部 更動

(3) 達成資料的共享性(Data Sharing),不只共享,還可以有權限地管理。

(4) 達成資料的獨立性(Data Independence)

(5) 達成資料的完整性(Integrity)

(6) 避免紙張與空間浪費(Reduce Paper)

(7) 達成資料的安全性(Security)

缺點

(1) 相較於其他關連式資料庫,SQL Server的成本較高

(2) 當 DBMS 發生故障時,比較難復原(集中控制)

(3) 提供安全性、同步控制、復原機制與整合性,花費較大量的資源。

介紹 SQL語言


結構化查詢語言(Structured Query Language, SQL),誕生於 1970 年代後 期,用於管理關聯式資料庫管理系統(RDBMS),其可以定義資料庫結構、建立 表格、指定欄位型態與長度,也能新增、異動或查詢資料。

而SQL在1986年被美國國家標準協會(American National Standards Institute,ANSI)標準化,在1987年被國際標準化組織(International Organization for Standardization , ISO)標準化,而1992年的 SQL-92 (及ANSI SQL 92)是現代SQL的基礎。

SQL Server 所使用的Transact-SQL(又稱T-SQL)是SQL的擴展語言,以ANSI SQL為主要組成,目前Microsoft實作的T-SQL可支援到ANSI SQL-92標準。

Transact-SQL是具有批次與區塊特性的SQL指令集合,資料庫開發人員可以利用它來撰寫資料部份的商業邏輯(Data-based Business Logic),以強制限制前端應用程式對資料的控制能力。同時,它也是資料庫物件的主要開發語言。

簡單來說,SQL有的,T-SQL幾乎都有

基礎的說明結束了,下一篇會帶大家認環境與工具

參考資料

http://csyue.nccu.edu.tw/ch/bigdata1081(SQL&R).pdf https://docs.microsoft.com/zh-tw/dotnet/architecture/cloud-native/relational-vs-nosql-data https://learnsql.com/blog/t-sql-vs-standard-sql-whats-the-difference/ https://tw.alphacamp.co/blog/sql-nosql-database-dbms-introduction https://zh.wikipedia.org/wiki/ACID https://dev.to/princessanjana1996/acid-properties-in-databases-43aa https://www.alooma.com/blog/types-of-modern-databases


留言板
歷史留言

標籤