[討論] 東區幻境MariaDB系列教學04-資料庫增刪查 - 討論區

[討論] 東區幻境MariaDB系列教學04-資料庫增刪查

文章瀏覽次數 900 文章回覆數 3

Dack

Dack圖像(預設)

2021-09-12 07:49:32

From:219.70.166.106

目前為止我們已經把資料庫安裝完畢,且也稍微瞧過了操作MariaDB前須掌握的基礎知識。繼續說下去前,小弟得再幫各位複習下個很重要的概念。
不知有沒有人記得,在基本概念的教學中我們說資料庫架構從上到下有哪些?應該就程式實體、資料庫、資料表巴樂巴樂巴樂……對吧?從資料庫這個階層開始,我們要做事都得透過撰寫個叫結構化查詢語言(Structured Query Language, SQL)的資料庫語言並餵給系統來執行。
從現在開始到這串教學結束,幾乎全部的內容都會圍繞在這個SQL。因為在常見關聯式資料庫的世界裡,SQL實在是太重要了。話不多說,我們立馬先從資料庫的地方講起。

建立資料庫

全新的MariaDB裝好、設定也設好了後,首先要做的就是建立資料庫了。建立資料庫的語法很簡單,請使用「CREATE DATABASE name;」這個語法。
如果突然來個語法感到天外飛來一筆,小弟給您舉例下。假設我們工作無聊得很,想在辦公室開發幾個小線上遊戲「超級步槍」、「最終戰役」並以MariaDB為後端資料儲存的引擎。
以目前的需求,我們大概得準備兩個資料庫分別給這兩個線上遊戲使用。那麼,我們就會像這樣建立資料庫。

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.4.12-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE `super rifle`;
Query OK, 1 row affected (0.002 sec)

MariaDB [(none)]> CREATE DATABASE `final war`;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]>

檢視資料庫

依上面的執行結果看,我們的資料庫應該是順利建好了沒錯。為求慎重,我們來確認一下。
確認的方式也很簡單,我們只要看看剛剛建的資料庫是不是存在系統的資料庫列表中就ok了。指令是「SHOW DATABASES」,各位可以試試。小弟一樣貼出範例執行過程給各位觀摩觀摩。

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| final war          |
| information_schema |
| mysql              |
| performance_schema |
| super rifle        |
| test               |
+--------------------+
6 rows in set (0.001 sec)

MariaDB [(none)]>

刪除資料庫

板上高手如雲,猛人如雨。不知道是不是有大大曾經或現在正投身研究遊戲開發呢?若您跟小弟一樣稍有接觸,大概能體會能把遊戲做好且被大家接受是件非常了不起的事。
假使遊戲開發出來了,不過大家玩著玩著發現超級步槍不好玩,決定把它下架。生為資料庫管理人員的我們這個時候得協助把資料庫「super rifle」銷毀,我們得用「DROP DATABASE database_name;」指令。執行過程大概會像下面這樣。

MariaDB [(none)]> DROP DATABASE `super rifle`;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]>

砍完之後立馬用剛剛學過的檢視資料庫語法確認確認。

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| final war          |
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.001 sec)

MariaDB [(none)]>

SQL語法撰寫重點提示

說到這邊不得不先跳出資料庫操作的主題,跟各位多講一下簡單但非常重要的小重點—SQL撰寫原則。
如果有大大學過寫程式,您學過的這個程式語言必定有個手冊或標準告訴您這個語言語法為何、建議如何排版、怎麼註解等等的事。我們SQL語言雖然只是個資料庫語言,但是很不巧它其實也是有標準、有一套大家在寫的時候會遵守的原則的。以下提供幾個小重點,各位往後有機會跟別人合作管理資料庫時可儘量要把它銘記在心;如此大家寫出來的程式碼將會較有可讀性,對加快團隊工作效率、降低系統執行時報錯的機率相當有幫助。

  • SQL的句號為「;」
  • SQL語言關鍵字儘量統一大寫
  • 資料庫名稱、表名稱、欄位名稱應以「`」包住
  • 值應以「'」包住

到這邊,我們已經把資料庫的建立與銷毀給講完了,順便提醒了撰寫SQL時該注意的小細節。下一次的教學內容,我們會繼續往資料庫架構的資料表前進。
迷之音:
藉這個機會順便跟支持小弟的讀者們talk talk幾句。非常不好意思,小弟原本計畫每個禮拜五更新教學的。不過最近因為工作跟學業一直發生意外,有時禮拜六甚至像這次禮拜天才來波文。接下來小弟會努力控制星期六貼文,感謝您們的支持啦!

留言

#1

阿慶

阿慶圖像

2021-09-13 16:19:28

From:211.23.21.202

建議資料庫名稱如果有兩個單字,應該還是用底線 (_) 會比較好,別用空格。

#2

特種兵

特種兵圖像(預設)

2021-09-15 11:49:09

From:211.23.21.202

那個反引號 ` 很重要
之前因為寫程式的習慣,都用一般的單引號或雙引號來取代反引號,
有一次,資料庫名稱裡有 - (dash) 在建立時不用反引號就建不了
還是要用標準比較不會出問題

#3

貓貓蟲

貓貓蟲圖像

2021-09-15 16:37:56

From:1.163.11.16

不要學我以前沒用`去隔開
database name
table name
column name
都很重要 沒用反引號隔開真的滿容易出錯的

另外 保留字盡量還是大寫比較好
例如

SELECT
 `id, `name`, `email` 
FROM 
 `users`
WHERE 
 `is_verify` = TRUE
;

還有 table name 盡量以複數去命名