介紹資料庫- # 資料存取的方式 1. 實體紙本-資料櫃 2. 電子試算表-EXCEL 3. 資料庫 # 資料系統的發展 1. 人工作業-紙本方式存在,人工處理 (資料多時不易尋找) 2. 循序儲存-磁帶方式儲存(速度慢) 3. 檔案系統-一般電腦,儲存在硬碟中(資料分別儲存 ) 4. 資料庫管理系統(DBMS) # 檔案資料系統常見的問題 * 資料重複-相同資料存在不同檔案中 * 資料不一致-相同資料存在不同檔案中但內容不同 * 資料存取不易-不同檔案格式,分散在不同地方 * 資料隔離-格式不同+分散,導致檔案不易整合 * 資料完整性-資料有檢查條件,且條件寫在程式中,ex:金額大於1000 * 資料更新一致性-部分資料更新失敗導致 * 多人存取異常-多使用者更改資料導致資料不一致 * 安全性問題-系統當機、硬體損壞、惡意破壞等 __________________________________________________________  # 資料庫管理系統的好處 1. 定義資料儲存的結構 2. 提供資料維護的機制 3. 確保資料的安全 4. 提供多人使用下,同時存取的控制機制 # 資料庫系統的使用者 1. 資料庫管理者-等於資料庫總管 2. 應用程式設計者-透過DML與資料庫互動(寫成語與資料庫互動) 3. 專業使用者-撰寫不同於傳統的特殊資料庫應用程式(資料庫分析師等) 4. 一般使用者-使用他人寫好的程式與資料庫互動 流行開發技術參考:https://roadmap.sh/aspnet-core # 關聯式資料庫(SQL)與非關聯資料庫(NoSQL) 主要差異在於資料的儲存和整理方式。 非關聯資料庫不會以規則式表格形式儲存資料。而是將資料儲存為個別且未連結的檔案,並可用於複雜的非結構化資料類型,例如文件或互動式多媒體檔案。 ## SQL常見的資料庫廠商 * SQL Server * MySQL(屬於Oracle) * MariaDB * Oracle(付費) * PostgreSQL(免費,號稱比Oracle快) MariaDB小故事:MySQL原本是開源專案, 被Oracle買走後原本的人就不高興,做了備份,那備份出來的就是MariaDB,所以MariaDB跟MySQL有80%像,但之後會越來越不像,因為被Oracle買走了 這就是他們之間的小故事 ## NoSQL常見資料庫廠商 * MongoDB * Amazon DynamoDB * Redis(記憶體) * ElasticSearch 流行開發技術參考:https://roadmap.sh/aspnet-core ## SQL簡介 Structured Query Language(SQL),結構化查詢語言,在1970年代初,由IBM公司開發,用於存取資料庫內的資料。 **資料定義語言(DDL):** 用來產生、修改、刪除表格、索引等 **資料處理語言(DML):** 用來新增、修改、刪除資料等 **資料查詢語言(DQL) :** 使用 SELECT 敘述來查詢資料庫 **資料控制語言(DCL):** 用來管理資料庫或資料表的授權使用等 **交易控制語言 Transaction Control Language:** 多人使用環境的交易控制 PS:不同資料庫管理系統廠商的SQL語法會稍微不同,本課程使用Mircrosoft SQL server的Transact-SQL,(T-SQL) ## 實作 打開SQLServer 2019設定工具-SQLServer服務-MSSQLserver 狀態執行中,表示資料庫開啟中 打開SSMS-windows驗證登入 ### SQLserver與Database SQLserver是一種資料庫管理系統,所以當SQLserver啟動時會啟動一個Database Server,這個Serever裡面可以存放多個Database 不同的應用程式會使用不同得Database #### 新增資料庫可以分為兩種: (方法1) * 資料庫>右鍵>新增資料庫>資料庫名稱>確定 (方法2) ``` * CREATE DATABASE <DB_Name>; ``` 註: 1. SQL語法上,習慣在使用保留關鍵字時使用大寫。不過在MSSQL不區分大小寫 2. 使用中括號可以使用保留關鍵字命名,但**不建議**使用 4. 資料庫命名可使用底線,但不可使用空格 5. 執行後須重新整理,資料庫清單才會改變 6. 資料庫命名不可重複 (實際操作) #### 使用某資料庫 方法一 * 左上角選單選擇 方法二 ` USE <DB_Name>例:USE Student;` 註:可觀察左上角選單查看目前使用的資料庫 #### 移除某資料庫 方法一 * 滑鼠對著要刪除的資料庫右鍵 方法二 `* DROP DATABASE <DB_Name>;` 註:刪除時SSMS會自動檢查Databas是否有連線,有連線則無法刪除 若想刪除已連線資料庫>打勾[關閉現有的連線] #### SQL Server的註解 程式前面加上兩個-- 例:-- DROP DATABASE <DB_Name>; #### 顯示行數 上方工具-選項-文字編輯器-Transact-SQL-行號打勾 ### 資料表(Tables) #### 簡介: 資料表又稱表格,原文為Tables。 關聯式資料庫中,資料庫裡通常會有很多資料表。 資料表內的資料會有一致的格式。 資料庫與資料庫之間的資料表是互不相通的 ### 資料表內容: 1. 直欄(Column): * 具有相同的資料型態 * 儲存同類型的資料內容 2. 橫列(Row): * 由1個以上的值欗所組成的一筆資料 * SQL查詢索回傳的資料單位 3. 欄位(Field): * 直欄與橫列交會的地方 * 儲存資料的地方 4. 主鍵(Primary Key): * 用來識別每一橫列的欄位,其特性: * 具有唯一性(Unique)且不可為空值(Not Null) 5. 空值(Null): * 欄位沒有儲存資料時稱為空值 6. 外來鍵(Foreign Key): * 用來表示資料表之間的關係 * 一定會牽扯到兩個表格,一個稱為父表、一個稱為子表 ### 資料型別(Data Type) 在同一個值欄內的值,資料必須一致 #### SQL server常見的資料型別簡介 * 字元字串: CHAR、VARCHAR、TEXT * 萬國碼字元字串(Unicode character strings): NCHAR、NVARCHAR、NTEXT * 二進位字串 BINARY、VARBINARY、IMAGE * 精確數值: INT、BIGINT、SMALLINT、TINYINT、NUMERIC * 日期和時間: DATE、TIME、DATETIME、DATETIME2、SMALLDATETIME * 近似值(又稱為浮點數): FLOAT、REAL #### 字串相關的資料型別 ##### 字元字串 * char(n) n必須是1到8000的值,不足自動補空格 * varchar(n|max) n可以是1到8000之間的值,max表示儲存體大小上限,上限2GB 多了var前置英文字,表示儲存資料的長度是否固定。 (範例) Value char(4) Varchar(4) ##### 萬國碼字元字串 * nchar(n) n必須是1到4000的值,不足自動補空格 * nvarchar(n|max) n可以是1到4000之間的值,max表示儲存體大小上限,上限2GB 差別與上者相同,但多了一個n, 若資料不限英文,盡量都以n開頭 註:在資料庫中每個英文字,數字或符號的儲存空間需要1Byte,非英文或符號則需要2Byte來儲存 儲存單位排序:Bit->Byte->KB->MB->GB->TB->PB ##### 二進位字串 主要用來保留圖片、語音或混合媒體等資料 * BINARY(n) n必須是1到8000的值,不足自動補空格 * VARBINARY(n|max) n可以是1到8000之間的值,max表示儲存體大小上限,上限2GB * IMAGE 官網不建議使用,未來版本中刪除  註:超過2GB的圖可存在本機,資料庫存路徑 #### 數字相關的資料型態 ##### 精確數值 INT TINYINT
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.