數(shù)據(jù)庫初學(xué)者的福音——SQLite
導(dǎo)讀
數(shù)據(jù)庫操作應(yīng)該算是所有程序員的基本功了,寫的一手好SQL對于數(shù)據(jù)分析師而言更是安身立命之本。前期,個(gè)人慣用的是MySQL,近日由于工作需要對Sqlite使用更為頻繁,所以便簡單了解了一下,發(fā)現(xiàn)sqlite當(dāng)真有其好用的一面,堪稱是數(shù)據(jù)庫初學(xué)者的福音。做以簡單紀(jì)要。

sqlite是一款簡單便攜的內(nèi)置數(shù)據(jù)庫,無論是PC端還是移動端,都無需安裝即可直接存儲、訪問和更改。編程語言中一般也都內(nèi)置了相應(yīng)引擎庫,例如python中對應(yīng)的模塊為sqlite3。使用sqlite數(shù)據(jù)庫的幾大核心優(yōu)勢:
配置環(huán)境極其簡單,實(shí)際上若無需圖形化界面而僅僅使用代碼操作的話,其實(shí)無需任何安裝操作。但一般還是要安裝個(gè)數(shù)據(jù)庫IDE,例如Navicat
數(shù)據(jù)庫文件簡潔直觀、可跨平臺,sqlite數(shù)據(jù)存儲在本地的一個(gè).db文件中,可以像對待其他任何文件一樣完成拷貝、傳輸和移動等操作,在圖形化界面(如Navicat)中建立連接也僅需指定文件地址即可
支持關(guān)系型數(shù)據(jù)庫中的絕大部分通用語法和操作,例如SQL中的CRUD4大類基本操作、也支持ACID4大特性
基于以上特性,當(dāng)臨時(shí)使用新的開發(fā)環(huán)境而不想配置的話,那么sqlite會是一個(gè)明智的選擇。
sqlite的CRUD常用操作(DCL+DQL)與其他關(guān)系型數(shù)據(jù)庫是一致的,所以包括create、drop、select、join、groupby、update、delete、insert等關(guān)鍵字的用法是一致的。
主要存在些許的不同包括:
1.部分?jǐn)?shù)據(jù)庫和數(shù)據(jù)表查詢操作
顯示數(shù)據(jù)庫:.database,對應(yīng)MySQL中為show databases
顯示數(shù)據(jù)表:.tables,對應(yīng)MySQL中為show tables
查詢建表語句:.schema table_name,對應(yīng)MySQL中為show create table table_name
退出命令行:.quit,對應(yīng)MySQL中為exit;
查看幫助:.help,對應(yīng)MySQL中為help
可見,sqlite中.是一個(gè)重要的命令起始符。
2.部分函數(shù)和語法,例如:
字符串拼接:sqlite中為 str1 || str2,而MySQL中一般用concat函數(shù)
glob通配符的用法,與Like的區(qū)別在于前者區(qū)分大小寫,而like不區(qū)分
sqlite體積小巧、配置簡單、多平臺使用,且支持了SQL中的絕大部分功能,但實(shí)際上也是存在一定的不足的,主要包括如下:
不支持right join,當(dāng)然left join是完全可以替代的
視圖(view)、觸發(fā)器(trigger)功能受限
事務(wù)處理能力受限(相較MySQL中的4種隔離級別而言)
安全性不高,不具有MySQL中詳細(xì)的權(quán)限管理功能,甚至sqlite數(shù)據(jù)文件的訪問無需用戶名密碼
然而,盡管sqlite在功能完整性方面并不足以與其他關(guān)系型數(shù)據(jù)庫相媲美,但考慮其拿來即用的特點(diǎn),難道不正是數(shù)據(jù)庫初學(xué)者的福音嗎?

相關(guān)閱讀:
