循著 組合的力量、 長線學習投資 的思考模式, 我同樣也認為: 管理、編輯資料庫時所需要的圖形界面 (GUI) 軟體不應該跟特定的 DBMS 綁在一起。 採用跨資料庫的 GUI, 你的學習投資才可以一魚好幾吃。 支援各種不同 DBMS (例如 sqlite、 mariadb、 postgresql、 ms sql、 oracle、 ...) 的圖形界面軟體工具 有很多, 今天介紹 DBeaver。
2024年1月24日 星期三
2024年1月21日 星期日
自學 SQL 語法? sqlite 幫你閃電入門!
[我失憶了嗎? 2022/4 早就寫過一篇差不多的: SQL 自學起手式]
關於資料庫這門課, 我一直覺得最值得初學者花時間的有趣地方是
ER model 跟 select 指令的各種花式變化。
也一直覺得很多同學很可憐, 被帶著從 Oracle
或 MS SQL 的管理開始學起,
光是設定帳號密碼, 熱情跟好奇心就被澆了一些冷水。
就連自由軟體 PostgreSQL 或 mariaDB 我也覺得並不適合新手。
最適合新手的, 是不必帳號密碼、 沒有複雜管理系統、
直接以一個檔案儲存一個資料庫的 sqlite!
在 debian 系列上: apt install sqlite3
把它安裝起來吧!
2023年8月25日 星期五
linespector: 半手動備份 line 文字對話內容與低解析度圖片
Line 沒有很好的文字搜尋的功能、 在電腦版 (chrome 擴充套件) 上面只能保留兩週的訊息、 即使是公開的群組也沒有 https 的網址可以分享、 ... 有各種不方便。 最近寫了一隻小程式 "linespector" 可以從電腦版把某個群組的近期文字對話內容與 (低解析度) 圖片全部合併儲存到一個 sqlite 資料庫檔案裡面, 再用 php 以網頁的方式呈現。 我拿它來把社區的 line 群組轉成網頁, 在內部的網站公告。 (當然事先已徵得群組管理員與成員同意) 或是你只是想備份某群組的對話作為 (不必仰賴雲端的) 個人懷念/記錄, linespector 也幫得上忙。
2022年4月10日 星期日
玩幾個有感的實用範例, 一次學會 SQL 的 join 與 group by
我認為學 linux 不應該從又煩又無趣的安裝學起; 同樣地, 學 SQL 語法也不應該從又煩又無趣的用戶管理和 create table 學起。 SQL 裡面最常用且有點複雜的有趣指令應該非 join 莫屬吧。 想要學會 設計理想的資料庫 schema 可能需要修一門課; 但如果只是想要學會 存取現成的資料庫 其實只需要照著我這兩三篇文章做應該就足以應付大部分的需求了。
首先把最精簡輕巧的 sqlite 與它的前端 litecli 安裝起來並且拿 sakila 範例資料庫試車。 其次要找到你手邊的資料庫的 ER Diagram。 如果找不到, 可以參考 我的第二篇, 自己繪製。 今天這篇 (第三篇) 我們就拿 sakila 範例資料庫來練習 join 與 group by。
2022年4月2日 星期六
在命令列上從 *.sql 檔直接產生 ER Diagram
拿到一個資料庫實例 (database instance) 第一件事就是畫出它的 ER Diagram。 例如 要下 join 指令時,我一定要看著 ER Diagram 才會下。 有很多 資料庫圖形介面的軟體 (例如 DBeaver) 都可以幫一個運行中的資料庫畫 ER Diagram。 可是其實單單是 DDL (就是 create table 之類的指令) 就應該已經提供足夠的資訊可以畫圖了啊... 我可不可以連 mysql 都不要安裝, 直接拿一個定義 schema 的 *.sql 檔, 用簡單的命令列工具就畫出 ER Diagram 呢? 在 github 上面找到兩個幾乎符合我需求的專案。
SQL 自學起手式
[我失憶了嗎? 2024/1 重寫一篇差不多的: 自學 SQL 語法? sqlite 幫你閃電入門!]
想要從零開始學 SQL 語法, 該如何起步?
我會建議從 sqlite 著手, 因為它最輕巧,
一個檔案就是一個資料庫, 不需要煩惱帳號/密碼/使用者管理/...等等煩瑣的事,
讓你可以專心於 SQL 語言。
它只比標準 SQL 少一點點功能。
而且很多應用程式 (例如很多 android apps) 都採用 sqlite,
學會操作 sqlite 之後, 你可以用 adb pull
指令把手機上有趣的資料庫檔拿來研究, 所以也很有實用價值。
在 debian 系列的 linux 上面可以直接這樣安裝:
apt install sqlite3