Skip to the content.

SQL簡介

SQL是結構化查詢語言Structured Query Language的縮寫

維基百科

這篇只針對SQLite喔,有些語法可能不適用

每次要用SQLite語法時都還要查老半天,應該是下次要用SQLite時已經不知道過了幾百年了,所以把常用的語法整理到這頁要找比較方便

SQLite官網

.NET環境安裝SQLite套件

Visual Studio

打開NuGet套件管理視窗

搜尋:SQLite

安裝「System.Data.SQLite」

其他還有像是System.Data.SQLite.Core、System.Data.SQLite.Linq的東西可以安裝

我目前還沒用到,所以就沒裝了

""

.NET指令環境(終端機、VSCode)

終端機進入到專案資料夾中

輸入指令:dotnet add package System.Data.SQLite

""

常用指令

範例資料庫,點我下載

SQLite資料型態

建立資料表

CREATE TABLE MyTable (_AI INTEGER PRIMARY KEY AUTOINCREMENT,DateTime DATETIME,Topic TEXT,Message TEXT);

可以加上IF NOT EXISTS來判斷資料表是否存在,不存在才建立

CREATE TABLE IF NOT EXISTS MyTable (_AI INTEGER PRIMARY KEY AUTOINCREMENT,DateTime DATETIME,Topic TEXT,Message TEXT);

使用 CREATE TABLE 可以建立一個新的資料表。加上 IF NOT EXISTS 的判斷,可以確保只有在該表不存在時才會執行建立操作,避免重複建立相同名稱的資料表而導致錯誤

在上述SQL指令中:

建立表格的執行結果如下圖所示:

Image

UPDATE sqlite_sequence SET seq=0 WHERE NAME="MyTable"

此指令可設定AUTOINCREMENT的值(正常操作下不建議使用)

取得欄位資料

PRAGMA table_info('MyTable')

上述指令可以查詢在MyTable資料表內各欄位的資料

執行結果如下:

Image

插入資料

INSERT OR IGNORE INTO `MyTable` VALUES (NULL,DATETIME('NOW', 'LOCALTIME'),'Topic資料','Message資料')

使用INSERT將資料插入到MyTable的資料表中,並指定各個欄位的值。

在上述SQL指令中:

查詢資料

列出所有資料

SELECT * FROM "Mytable"

列出MyTable中所有資料

列出特定欄位

SELECT `Topic`,`Message` FROM `MyTable`

從MyTable中列出Topic及Message欄位的所有資料

SELECT的執行結果如下圖所示:

Image

加入條件搜尋

WHERE

SELECT * FROM 'MyTable' WHERE `Topic`='Run'

從MyTable中篩選出Topic欄位是’Run’的所有資料

SELECT-WHERE的執行結果如下圖所示:

Image

LIKE

SELECT * FROM 'MyTable' WHERE `Message` LIKE '%測試%'

從MyTable中篩選出Message欄位中的值包含”測試”的項目

在SQL中LIKE是模糊配對的操作,可以搜尋特定格式的資料,上述例子中的%是代表萬用字元,因此可以解讀為資料中包含”測試”的所有資料

題外話

SELECT-LIKE的執行結果如下圖所示:

Image