1. 程式人生 > >小布老師《SQLite快速入門視訊教程》的筆記

小布老師《SQLite快速入門視訊教程》的筆記

看了小布老師的《SQLite快速入門視訊教程》後整理的筆記微笑

第一講

什麼是SQLite?
為什麼要用?
如何獲得?如何安裝?
如何管理?
如何使用Perl存取SQLite的資料;
如何用C或C++;
SQLite不支援的SQL特性;

自包含,沒有伺服器,零配置,支援事務。

SQLite的資料庫就一個檔案,包括:多表、索引、觸發器、和檢視;
SQLite直接讀寫磁碟上的檔案。

事務的四個特性(ACID)atomic(原子的)、consistent(一致的)、isolated(獨立的)、durable(持久的)
實現大部分SQL92標準
整個資料庫儲存在一個跨平臺的資料檔案上;
支援的資料庫大小能夠達到TB,支援GB的字串或BLOBs(二進位制資訊)。
所有功能都編譯進去250KB,選擇一些特性可以縮小到150KB;
SQLite不支援併發,不是兩個程序同時訪問,獨佔式的
程式碼質量高,99%的程式碼都經過測試;
自包含的意思,就是不依賴外界的任何庫;

程式碼可以應用在任何領域,包括商業領域;

SQLite的設計目標是一切從簡:
管理方便;
使用方便;
容易巢狀到其它程式;
維護和定製容易;

SQLite的目的不是取代ORACLE,而是用於取代fopen();

著名使用SQLite的客戶:
Adobe
蘋果
firefox
GE
google
微軟
麥咖啡
skype

SQLite能夠很好工作的場景;
儲存應用程式的配置資訊;
嵌入式裝置和應用程式;
小網站,原型系統。如果大網站併發性高,還是建議用mysql;
取代,隨意的混亂的磁碟檔案;
內部或臨時的資料庫;
命令列的資料分析工具;
做演示或者測試的時候;
閱讀SQLite的原始碼,學習資料庫技術;
對SQL語言的新特性進行擴充套件;

播布客的後臺系統用的是mySQL資料庫;

第二講

管理工具
原始碼級別安裝
已經編譯好的可執行檔案,for windows或linux;
下載原始碼自己編譯;

原始碼:
amalgamation版本,把很多細小的東西合併成一個大傢伙。
linux下演示怎麼編譯;

作業系統是CentOS5.2
chmod +x sqlite3-3.6.3.bin
./sqlite3-3.6.3.bin
和windows下一樣,進入SQLite shell

tar zxvf sqlite-amalgamation-3.6.3.tar.gz

原始碼安裝的三部曲:
configure;
make;
make install;

通常都提供README和INSTALL檔案,都是文字檔案;

SQLite的原始碼安裝過程:
./configure --prefix=/opt/sqlite3
--prefix 表明目標檔案安裝在什麼目錄下,不指定安裝在預設目錄下/usr/local/之類的。
gcc一定要裝

輸入make開始編譯;

輸入make install,把檔案copy到目標目錄下;

安裝之後,去/opt/sqlite3下看看,就三個目錄:bin、include、lib
標準的軟體佈局結構
lib下有靜態庫和動態庫,推薦用動態庫

sqlite3.exe是shell.c,2千多行原始碼實現了簡單的命令列工具;
動態庫是sqlite3.c

sqlite3工具的功能:
建立資料庫;
執行SQL命令;
查詢資料庫的表結構,或其它物件的結構;
匯入和匯出資料;
改變輸出格式;
使用在shell指令碼中;學會shell自動化指令碼程式設計;

建立資料庫;
sqlite3 資料庫檔名

輸入SQL語句的時候,結束一定要用分號,這也是SQL的標準;

linux下把sqlite加入PATH路徑,這樣在任何路徑下都能夠使用sqlite3;
# echo $PATH
cp /opt/sqlite3/bin/sqlite3 /usr/local/bin

系統表SQLITE_MASTER,存放database schema
不能對SQLITE_MASTER表進行DROP TABLE,UPDATE,INSERT,DELETE操作

臨時表儲存在sqlite_temp_master中。
SQLite除了資料庫檔案之外,在執行過程中會產生一些臨時檔案。

sqlite3只是一個殼,真正執行,還是會呼叫SQLite的庫;可以研究一下。
sqlite3本身的命令以“.”開始,.help;

SQL PLUS有三大類命令:
SQL命令,提交給資料庫引擎;
PL SQL 命令,提交給資料庫引擎;
SQL PLUS本身的命令,本地執行;

第三講

sqlite3本身的命令
.help

改變輸出格式的命令;
csv,以逗號分隔的記錄;
.mode命令在8種顯示格式中進行切換;
預設是list模式,預設的分隔線是“|”;
list模式特別適合用於AWK;
line模式,每列都單獨一行,列名等於列值,記錄之間有空行;
column模式,與SQL PLUS中的預設模式相同;.header on 開啟頭,.header off 關閉頭;此模式可讀性比較好;
.width 3 30,第一列最長3,第二列最長30;
insert模式,產生INSERT的SQL語句,挺有意思;.mode insert 目標表名;
html模式,XHTML table,適合做CGI處理;

list模式一行一條記錄,每列豎線分隔;

linux,unix的設計思想是小而美,一個工具只幹一件事情。通過管道把命令串聯起來;

預設查詢結果是寫到螢幕上,也可以寫到一個檔案中。使用.output命令;
.output stdout,輸出又回到了螢幕上;

查詢Database Schema,就是表結構、資料庫結構;
.tables,可以看資料庫中的所有表;
.indices,可以列出一個指定表的所有索引;
.schema,建立表和索引時候的create語句,也可以在後面指明表名;
.databases,檢視當前開啟的所有資料庫,通常是一個main一個temp;

第四講

把整個資料庫導成ASC文字檔案的功能;
.dump命令;匯出的SQL語句,可以放到ORACLE中去執行;
一個生成資料庫歸檔copy的命令;
$ echo ".dump" | sqlite3 ex1 | gzip -c > ex1dmp.gz
重構資料庫的命令:
zcat ex1dmp.gz | sqlite3 ex2
從SQLite3中提取資料,導到其它流行的資料庫中;

.explain命令
EXPLAIN命令,就是查詢一條SQL語句最終解析出來的執行計劃。ORACLE中也有,對SQL語句調優很有用;
一條SQL語句的處理過程:解析、分析、執行,看看SQL語句的效率;
> .explain
> explain select * from t;

.timeout命令
預設超時時間是0,查詢一張表或索引,發現表或索引被鎖定,就立刻返回,不等待;
sqlite只適合一個程序訪問,不適合多程序的併發訪問;

在SHELL中使用SQLite3的命令;
sqlite3命令的輸入和輸出都可以重定向,常用的使用模式;
SQL語句中,除了分號結束,用GO或者/也可以執行;
# sqlite3 demo.db "select * from t"

一個簡單的shell指令碼
shell指令碼的開頭一定要有一個"#!",這是規定。
成對的EOF之間的東西都被原樣匯入sqlite中;here document技術;
shell裡面呼叫互動式程式的方法;

如何使用Perl指令碼訪問sqlite資料庫;
Perl,老牌語言,有20年曆史,但在走下坡路,被python或者ruby漸漸取代;
Perl在北美比較流行;
工作中使用的工具是Perl+shell;
把Perl形容為瑞士軍刀,但可讀性差;
ruby適合web快速開發;
perl對系統管理和生物資訊處理比較厲害;

windows平臺下 ActiveStat Perl www.activestate.com  免費
Linux/Unix www.perl.org

DBI
執行一段小程式,確定perl是否安裝了對sqlite的支援;
perl需要sqlite的驅動,來訪問sqlite的資料庫,如果沒裝,還需要安裝一下;

第五講

本講主題,如何使用perl和C語言訪問sqlite3資料庫;

使用perl訪問sqlite資料庫
檢查perl是否安裝了sqlite驅動程式的程式碼;
perl訪問資料庫都用DBI介面,在DBI之下有DBD(資料庫驅動),分別開發支援mysql,oracle等;

一個基本的插入操作程式碼演示;
先和資料庫建立連線;
做些準備工作;
執行語句;
判斷是否出錯;
提交;
斷開;

一個基本的查詢操作程式碼演示:
查詢語句執行的時候,先執行prepare;
然後執行;
提取結果集,先把每列繫結到變數上,然後在while迴圈中進行fetch;
完成,釋放結果集;
斷開連線;

perl處理文字檔案功能強大,又能操作資料庫;

使用C語言訪問sqlite
兩個物件
資料庫連線物件:sqlite3;控制連線;
語句執行物件:sqlite3_stmt;控制SQL語句;

常用的六個介面函式,操作sqlite的核心函式:
sqlite3_open()
sqlite3_prepare()
sqlite3_step(),類似fetch功能;
sqlite3_column()
sqlite3_finalize()
sqlite3_close(),斷開連線;

sqlitedemo.c
#include

sqlite3_errmsg(db);獲得失敗的原因;

回撥函式的作用;
執行完查詢,自動呼叫回撥函式,把查詢的結果打印出來。

編譯程式要用到標頭檔案和lib庫。這次使用靜態庫。

# gcc -v 看看有沒有gcc
編譯命令
# gcc -I/opt/sqlite3/include -L/opt/sqlite3/lib -lsqlite3 sqlite3demo.c -o dbtest
-I標頭檔案搜尋路徑
-L庫檔案搜尋路徑
-l庫檔案

sqlite的侷限性:
官方網站上有大小的支援;
不支援外來鍵約束;
對觸發器的支援不是很完整;
對ALTER TABLE的支援不是很完整;
不支援嵌入式事務;
不支援有連線和FULL OUTER JOIN.
不支援檢視的寫操作;
不支援GRANT和REVOKE;

sqlite作為單使用者,單機版的資料庫很不錯。

相關推薦

老師SQLite快速入門視訊教程》的筆記

看了小布老師的《SQLite快速入門視訊教程》後整理的筆記 第一講 什麼是SQLite? 為什麼要用? 如何獲得?如何安裝? 如何管理? 如何使用Perl存取SQLite的資料; 如何用C或C++; SQLite不支援的SQL特性;

老師 LoadRunner系列培訓視訊

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

老師_Oracle11g SQL基礎入門系列培訓(視訊教學)

第一講: 概述 ========================================= 線上觀看: http://www.boobooke.com/v/bbk2003 視訊下載: http://www.boobooke.com/v/bbk2003.zip ==

老師loadrunner視訊教程地址

小布老師視訊: 測試工具概述,兼LoadRunner介紹 -1-4http://www.boobooke.com/v/bbk1046http://www.boobooke.com/v/bbk1046.ziphttp://www.boobooke.com/v/bbk1047http://www.boobooke

Java NIO基礎視訊教程、MINA視訊教程、Netty快速入門視訊 [有原始碼]

想要這套視訊教程的同學,可以掃描下方微信二維碼,關注“業餘草”微信公眾號,回覆“NIO“關鍵字即可免費下載! 感謝您的關注!可加QQ1群:135430763(2000人群已滿),

老師Oracle 9i DBA Fundamentals I的系列視訊(全)下載地址

請下載播布客專用客戶端麥寶進行觀看。本系列視訊依然免費:http://www.boobooke.com/download/MBoo2.zip 用麥寶看視訊,更爽更流暢,誰用誰知道! 如果你電腦上的360報告說麥寶存在木馬,請放心使用,我們不會拿播布客的信譽開玩笑。 小周童鞋的360技術不 過關,採用了一個通用

新手白如何做自媒體自媒體入門視訊教程(3G教程

現在做自媒體的人越來越多了,很多人都賺到了錢,只要掌握了一定的技巧和方法,新手小白都可以操作。 下面跟大家分享一套自媒體入門視訊教程: 自媒體8000月收策略(自媒體) 快速打造高推薦的自媒體賬號 新媒體(New Media)是指當下萬物皆媒的環境,簡單

jQuery EasyUI快速入門實戰教程(一)-入門

jquery javascript easyui 1、jQuery EasyUI概述jQuery EasyUI是一組基於jQuery的UI插件集合體,而jQuery EasyUI的目標就是幫助web開發者更輕松的打造出功能豐富並且美觀的UI界面。開發者不需要編寫復雜的javascript,也不需要

Python 零基礎 快速入門 趣味教程 (咪博士 海龜繪圖 turtle) 2. 變量

b- 剛才 math .com war 單位 中學 技術分享 sublime 大家在中學就已經學過變量的概念了。例如:我們令 x = 100,則可以推出 x*2 = 200 試試下面這段 Python 代碼 1 import turtle 2 3 turtle.sha

C#操作Sqlite快速入門及相關工具收集

收集 html urn net sel 2.3 dbn .org .sh Sqlite不需要安裝即可使用。Sqlite是不是那個System.Data.SQLite.DLL臨時創建了數據庫引擎?1.新建一個WinForm項目,引用System.Data.SQLite.DLL

式Dubbo快速入門

root登陸 odi override keep artifact snapshot 刪掉 hub 就是 Dubbo入門Editor:SimpleWuDubbo是 阿裏巴巴公司開源的一個高性能優秀的服務框架使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和 S

產品介紹快速上手視訊教程購買專業版本免費下載 介紹8種常用的專案管理工具

https://www.edrawsoft.com/cn/project-management-tools.php 本文提供有效的專案管理工具,包括甘特圖,WBS,日曆,時間線,狀態表,HOQ,和思維導圖製作工具。 專案管理涉及有效的計劃和對工作的系統管理。它包括定義專案目標,制定行程和安排

【公開課】零基礎白怎麽快速入門Java?

RoCE 快速 term 程序員薪資 程序員 可用 qq交流群 研發 路徑 哪門編程語言,在瘋狂叠代的IT業,20年屹立不倒? 那必須是Java! (如上圖,最新鮮出爐的11月TIOBE最受歡迎語言排行榜中,Java持續穩居第一) Java語言具有功能強大和簡單易用兩個特

微信程式0基礎快速入門(史上最全!!!)

產品定位及功能介紹 微信小程式是一種全新的連線使用者與服務的方式,它可以在微信內被便捷地獲取和傳播,同時具有出色的使用體驗。 小程式註冊 註冊小程式帳號 在微信公眾平臺官網首頁(mp.weixin.qq.com)點選右上角的“立即註冊”按鈕。 選擇註冊的帳號型別 選擇“

unity3d入門視訊教程

精通任何一門語言,都要經歷入門這個過程。當然了,unity3d學習也要有這個過程。你想學這門技術嗎?你想入門unity3d嗎?如果你有這個想法,這些unity3d入門視訊教程就非常值得你開啟。 遊戲開發初識與職業發展 https://pan.baidu.com/s/11TcYWqnGxfr7

2018年Vue2.x 5小時入門視訊教程-包括Vuex、MintUi、ElementUi基礎教程28講

2018年Vue2.x 5小時入門視訊教程-包括Vuex、MintUi、ElementUi基礎教程28講 https://pan.baidu.com/s/1p4cPuo_t70Eh0D_dzfJq2Q ----------------------課程目錄-----------------

Unity 3d零基礎入門視訊教程

----------------------課程目錄------------------------------ 課程目錄: 01、基礎入門之進入Unity的世界 01.Unity介紹.ts 17.4M 02.Unity下載和安裝.ts 62.6M 03.Unity 破解.ts 35

【EmguCV視訊】VS2017+EmguCV3.4(C# OpenCV)高清入門視訊教程

視訊採用VS2017 + EmguCV3.4版本錄製,內容類似本人的Python和C++版本,如果需要的朋友可加我諮詢,或關注公眾號獲得最新訊息,謝謝!  視訊共40講,如需購買請聯絡作者QQ3252314061 1---40講目錄如下:   你

Python OpenCV高清入門視訊教程

Python OpenCV視訊教程高清入門視訊已經錄製完成,謝謝! 採用Python2.7 + OpenCV3.0講解,喜歡或者需要的朋友可以關注一下,和我C++版的OpenCV視訊教程類似! 試看視訊片段(主要看講課風格和視訊清晰度):連結:https://pan.baidu.com/

scrapy命令互動模式簡單介紹--老師網易雲課堂

scrapy命令互動模式介紹 scrapy 命令互動模式啟動 $ scrapy shell 網址[不需要引號] 命令互動模式中函式介紹 request 對網址發起請求的請求資訊 response網址伺服器響應請求,發回的響應資訊 view(response)呼叫系