sqlite 操作簡明教程

2021-06-01 13:03:28 字數 3841 閱讀 9994

sqlite顧名思議是以 sql為基礎的資料庫軟體,sql是一套強大的資料庫語言,主要概念是由「資料庫」、「資料表」(table)、「查詢指令」(queries)等單元組 成的「關聯性資料庫」(進一步的概念可參考網路上各種關於sql及關聯性資料庫的檔案)。因為sql的查詢功能強大,語法一致而入門容易,因此成為現今主 流資料庫的標準語言(微軟、oracle等大廠的資料庫軟體都提供sql語法的查詢及操作)。 

以下我們就建立資料庫、建立資料表及索引、新增資料、查詢資料、更改資料、移除資料、sqlite3命令列選項等幾個專案做簡單的介紹。 

目錄 

列表 建立資料庫檔案 

用sqlite3建立資料庫的方法很簡單,只要在shell下鍵入(以下$符號為shell提示號,請勿鍵入): 

sql代 碼

$ sqlite3 foo.db  

sql代 碼

create   table  film(title, length,  year , starring);  

這樣我們就建立了乙個名叫film的資料表,裡面有name、length、year、starring四個字段。 

這個create table指令的語法為:

sql代 碼

create   table  table_name(field1, field2, field3, ...);  

table_name是資料表的名稱,fieldx則是字段的名字。sqlite3與許多sql資料庫軟體不同的是,它不在乎字段屬於哪一種資料 型態:sqlite3的字段可以儲存任何東西:文字、數字、大量文字(blub),它會在適時自動轉換。 

建立索引 

如果資料表有相當多的資料,我們便會建立索引來加快速度。好比說: 

sql代 碼

create   index  film_title_index  on  film(title);  

意思是針對film資料表的name欄位,建立乙個名叫film_name_index的索引。這個指令的語法為 

sql代 碼

create   index  index_name  on  table_name(field_to_be_indexed);  

一旦建立了索引,sqlite3會在針對該字段作查詢時,自動使用該索引。這一切的操作都是在幕後自動發生的,無須使用者特別指令。 

加入一筆資料 

接下來我們要加入資料了,加入的方法為使用insert into指令,語法為:

sql代 碼

insert   into  table_name  values (data1, data2, data3, ...);  

例如我們可以加入 

sql代 碼

insert   into  film  values  ( 'silence of the lambs, the' , 118, 1991,  'jodie foster' ); insert   into  film values  ( 'contact' , 153, 1997,  'jodie foster' ); insert   into  film  values  ('crouching tiger, hidden dragon' , 120, 2000,  'yun-fat chow' ); insert   into  film  values  ('hours, the' , 114, 2002,  'nicole kidman' );  

如果該欄位沒有資料,我們可以填null。 

查詢資料 

講到這裡,我們終於要開始介紹sql最強大的select指令了。我們首先簡單介紹select的基本句型: 

sql代 碼

select  columns  from  table_name  where  expression;  

最常見的用法,當然是倒出所有資料庫的內容: 

sql代 碼

select  *  from  film;  

如果資料太多了,我們或許會想限制筆數: 

sql代 碼

select  *  from  film limit 10;  

或是照著電影年份來排列: 

sql代 碼

select  *  from  film  order   by   year  limit 10;  

或是年份比較近的電影先列出來: 

sql代 碼

select  *  from  film  order   by   year   desc  limit 10;  

或是我們只想看電影名稱跟年份: 

sql代 碼

select  title,  year   from  film  order   by   year   desc  limit 10;  

查所有茱蒂佛斯特演過的電影: 

sql代 碼

select  *  from  film  where  starring= 'jodie foster' ;  

查所有演員名字開頭叫茱蒂的電影('%' 符號便是 sql 的萬用字元): 

sql代 碼

select  *  from  film  where  starring  like   'jodie%' ;  

查所有演員名字以茱蒂開頭、年份晚於2023年、年份晚的優先列出、最多十筆,只列出電影名稱和年份: 

sql代 碼

select  title,  year   from  film  where  starring  like   'jodie%'   and   year  >= 1985  order   by   year  desc  limit 10;  

有時候我們只想知道資料庫一共有多少筆資料: 

sql代 碼

select   count (*)  from  film;  

有時候我們只想知道2023年以後的電影有幾部: 

sql代 碼

select   count (*)  from  film  where   year  >= 1985;  

(進一步的各種組合,要去看sql專書,不過你大概已經知道sql為什麼這麼流行了:這種語言允許你將各種查詢條件組合在一起──而我們還沒提到 「跨資料庫的聯合查詢」呢!) 

如何更改或刪除資料 

了解select的用法非常重要,因為要在sqlite更改或刪除一筆資料,也是靠同樣的語法。 

例如有一筆資料的名字打錯了:

sql代 碼

update  film  set  starring= 'jodie foster'   where  starring= 'jodee foster' ;  

就會把主角欄位裡,被打成'jodee foster'的那筆(或多筆)資料,改回成jodie foster。

sql代 碼

delete   from  film  where   year  

就會刪除所有年代早於2023年(不含)的電影了。 

其他sqlite的特別用法 

sqlite可以在shell底下直接執行命令:

sql代 碼

sqlite3 film.db  "select * from film;"   

輸出 html **: 

sql代 碼

sqlite3 -html film.db  "select * from film;"   

將資料庫「倒出來」: 

sql代 碼

sqlite3 film.db  ".dump"  >  output .sql  

利用輸出的資料,建立乙個一模一樣的資料庫(加上以上指令,就是標準的sql資料庫備份了): 

sql代 碼

sqlite3 film.db 

sqlite 操作簡明教程

sqlite顧名思議是以 sql為基礎的資料庫軟體,sql是一套強大的資料庫語言,主要概念是由 資料庫 資料表 table 查詢指令 queries 等單元組 成的 關聯性資料庫 進一步的概念可參考網路上各種關於sql及關聯性資料庫的檔案 因為sql的查詢功能強大,語法一致而入門容易,因此成為現今主...

sqlite簡明教程

本文的主要目的是作為乙個入門級教程,教你一些如何使用pysqlite來操作 sqite 的一些基本的語句,更詳細的還要去參考想應的文件以及編寫相應的測試程式。希望本文對你有幫助。我以前的blog sqlite乙個輕巧的資料庫 一 安裝 二 建立資料庫 開啟資料庫 sqlite使用檔案作為資料庫,你可...

sqlite簡明教程

本文的主要目的是作為乙個入門級教程,教你一些如何使用pysqlite來操作 sqite 的一些基本的語句,更詳細的還要去參考想應的文件以及編寫相應的測試程式。希望本文對你有幫助。我以前的blog sqlite乙個輕巧的資料庫 一 安裝 二 建立資料庫 開啟資料庫 sqlite使用檔案作為資料庫,你可...