国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

SQLlite數(shù)據(jù)庫基礎(chǔ)教程

2018-02-01 23:43:49 22757

       SQLlite數(shù)據(jù)庫可能是目前來說最輕量級(jí)、使用最為廣泛的SQL數(shù)據(jù)庫。

       SQLlite數(shù)據(jù)庫本身是開源的,自身包含在C中的一個(gè)相對(duì)小的庫中,支持ACID事務(wù)、零配置、儲(chǔ)存在單一磁盤文件中的一個(gè)完整的數(shù)據(jù)庫,它所使用的資源非常低,在幾百K的內(nèi)存環(huán)境下也可以穩(wěn)定運(yùn)行,而目前支持的數(shù)據(jù)大小到2TB,自身又沒有什么額外的依賴、移植性好、支持多種開發(fā)語言,所以SQLlite被廣泛運(yùn)用在各個(gè)系統(tǒng)平臺(tái)上、一些軟件應(yīng)用、小型網(wǎng)站、以及嵌入式應(yīng)用、簡單的數(shù)據(jù)分析、代替磁盤臨時(shí)文件、文件檔案、緩存等等。

        在Unix系統(tǒng)下一般默認(rèn)就是有安裝過的,即使是沒有安裝也可以同在Windows、macOS中一樣到官網(wǎng)上把二進(jìn)制包下載下來解壓后配置好PATH環(huán)境變量就可以使用,或者是下載源碼包編譯亦可,平時(shí)可以在系統(tǒng)中使用shell直接交互或者使用各個(gè)gui來使用。

       建立好的一個(gè)schema在SQLlite就是一存儲(chǔ)在磁盤上的一個(gè)文件,注意一旦刪除了表的數(shù)據(jù)文件數(shù)據(jù)就會(huì)丟失,至于使用也很簡單

[root@localhost data]# sqlite3 #調(diào)用二進(jìn)制文件直接進(jìn)入命令交互界面

[root@localhost data]# sqlite3 /data/my_test.db #建立一個(gè)名為my_test的schema后綴用什么都可以但是要注意不同的文件名后綴相同的文件名就是不同的文件,是完全2個(gè)完全獨(dú)立的schema,建議是用.db是標(biāo)準(zhǔn)的容易區(qū)分,如果有這個(gè)文件名的schema則不創(chuàng)建數(shù)據(jù)文件,建好了默認(rèn)有一個(gè)main的database,其次默認(rèn)建立的schema是不加密的,如果是重要數(shù)據(jù)建議加密

[root@localhost data]# sqlite3 /data/my_test.db #進(jìn)入my_test的schema,要注意的是,如果是新建立的schema在其中沒有建立任何項(xiàng)目時(shí)是不會(huì)產(chǎn)生相應(yīng)的數(shù)據(jù)文件的

SQLite version 3.6.20

Enter ".help" for instructions

Enter SQL statements terminated with a ";"

sqlite> .database #查看當(dāng)前的schema下的database信息

seq  name             file                                                     

---  ---------------  ----------------------------------------------------------

0    main             /data/my_test.db

sqlite> .help #幫助信息

sqlite> .exit #退出

sqlite> SELECT * FROM sqlite_master; #系統(tǒng)表,在SQLite中唯一的一張,是只讀的,是無法刪除的執(zhí)行刪除該表是是在做類似于flush的操作

sqlite> .show

     echo: off

  explain: off

  headers: off

     mode: list

nullvalue: ""

   output: stdout

separator: "|"

    width:

以上就是SQLlite數(shù)據(jù)庫比較常用的交互命令,至于其他更多可以通過help查看,在這個(gè)就不做過多的介紹,在平時(shí)可以通過查詢SQLlite數(shù)據(jù)庫中唯一的一張系統(tǒng)表sqlite_master表獲知當(dāng)前的schema下所有表、視圖、索引、觸發(fā)器相關(guān)等等信息,在sqlite_master表中有4個(gè)列:

type列記錄了項(xiàng)目的類型,如表、視圖、索引、觸發(fā)器

name列記錄了項(xiàng)目的名稱,如表名、索引名、視圖名等

tbl_name列記錄所從屬的表名,如索引所在的表名。對(duì)于表來說,該列就是表名本身

rootpage列記錄項(xiàng)目在數(shù)據(jù)庫頁中存儲(chǔ)的編號(hào)。對(duì)于視圖該列值為0,觸發(fā)器該列值NULL。

sql列記錄建表的DDL

一些常用的系統(tǒng)表查詢:

sqlite> SELECT * FROM sqlite_master WHERE type = 'table'; #查看當(dāng)前schema下所有表信息

sqlite> SELECT * FROM sqlite_master WHERE rootpage = 0; #查看當(dāng)前schema下所有的視圖信息

sqlite> SELECT * FROM sqlite_master WHERE rootpage IS NULL; #查看當(dāng)前schema下所有的視圖信息

sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'tablename'; #查看tablenameDDL或者直接使用schma命令查看

sqlite> .schema sqlite_master

CREATE TABLE sqlite_master (

  type text,

  name text,

  tbl_name text,

  rootpage integer,

  sql text

);

在SQLlite目前下有5種數(shù)據(jù)存儲(chǔ)類型:

數(shù)據(jù)存儲(chǔ)類型

說明



NULL

值是一個(gè) NULL 值

INTEGER

值是一個(gè)帶符號(hào)的整數(shù),根據(jù)值的大小存儲(chǔ)在 1、2、3、4、6 或 8 字節(jié)中

REAL

值是一個(gè)浮點(diǎn)值,存儲(chǔ)為 8 字節(jié)的 IEEE 浮點(diǎn)數(shù)字

TEXT

值是一個(gè)文本字符串,使用數(shù)據(jù)庫編碼(UTF-8、UTF-16BE 或 UTF-16LE)存儲(chǔ)

BLOB

值是一個(gè) blob 數(shù)據(jù),完全根據(jù)它的輸入存儲(chǔ)

而SQLlite其自身有支持列的親和數(shù)據(jù)類型、親和數(shù)據(jù)名稱概念。任何列仍然可以存儲(chǔ)任何類型的數(shù)據(jù),當(dāng)數(shù)據(jù)插入時(shí),該字段的數(shù)據(jù)將會(huì)優(yōu)先采用親緣類型作為該值的存儲(chǔ)方式,

如各種int型存入INTEGER中,在建好的表中用的是INTEGER類型,或者還是用其它的數(shù)據(jù)類型名稱,但是實(shí)際中還是存在INTEGER中,要注意的是SQLlite本身僅僅是一個(gè)很小的輕量級(jí)數(shù)據(jù)庫平時(shí)不要把SQLlite當(dāng)成其它大型數(shù)據(jù)來使用,其次因?yàn)镾QLlite的數(shù)據(jù)文件一般都是以文件的形式存儲(chǔ)的,而在平時(shí)就可以通過對(duì)其文件來進(jìn)行壓縮備份即可。

 


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: