sqlite3簡單操作

来源:http://www.cnblogs.com/zhenghongxin/archive/2016/01/29/5168376.html
-Advertisement-
Play Games

目錄 1 建立資料庫檔案 2 在sqlite3提示列下操作 3 SQL的指令格式 4 建立資料表 5 建立索引 6 加入一筆資料 7 查詢資料 8 如何更改或刪除資料 9 其他sqlite的特別用法 10 小結 建立資料庫檔案 用sqlite3建立資料庫的方法很簡單,只要在shell下鍵入(以下$符


目錄

  • 1 建立資料庫檔案
  • 2 在sqlite3提示列下操作
  • 3 SQL的指令格式
  • 4 建立資料表
  • 5 建立索引
  • 6 加入一筆資料
  • 7 查詢資料
  • 8 如何更改或刪除資料
  • 9 其他sqlite的特別用法
  • 10 小結

建立資料庫檔案

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

$ sqlite3 foo.db

如果目錄下沒有foo.db,sqlite3就會建立這個資料庫。sqlite3並沒有強制資料庫檔名要怎麼取,因此如果你喜歡,也可以取個例如foo.icannameitwhateverilike的檔名。

 

在sqlite3提示列下操作

進入了sqlite3之後,會看到以下文字:

SQLite version 3.1.3
Enter ".help" for instructions
sqlite>

這時如果使用.help可以取得求助,.quit則是離開(請註意:不是quit)

 

SQL的指令格式

所以的SQL指令都是以分號(;)結尾的。如果遇到兩個減號(--)則代表註解,sqlite3會略過去。

 

建立資料表

假設我們要建一個名叫film的資料表,只要鍵入以下指令就可以了:

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

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

這個create table指令的語法為:

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

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

 

建立索引

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

create index film_title_index on film(title);

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

create index index_name on table_name(field_to_be_indexed);

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

 

加入一筆資料

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

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

例如我們可以加入

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的基本句型:

select columns from table_name where expression;

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

select * from film;

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

select * from film limit 10;

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

select * from film order by year limit 10;

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

select * from film order by year desc limit 10;

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

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

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

select * from film where starring='Jodie Foster';

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

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

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

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

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

select count(*) from film;

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

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

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

 

如何更改或刪除資料

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

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

update film set starring='Jodie Foster' where starring='Jodee Foster';

就會把主角欄位里,被打成'Jodee Foster'的那筆(或多筆)資料,改回成Jodie Foster。

delete from film where year < 1970;

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

 

其他sqlite的特別用法

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

sqlite3 film.db "select * from film;"

輸出 HTML 表格:

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

將資料庫「倒出來」:

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

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

sqlite3 film.db < output.sql

在大量插入資料時,你可能會需要先打這個指令:

begin;

插入完資料後要記得打這個指令,資料才會寫進資料庫中:

commit;

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Redis 的複製 (replication) 是一種使用和配置起來非常簡單的主從(master-slave)複製,允許 Redis 從伺服器成為主伺服器的精確副本。以下是關於 Redis 複製的一些重要方面: Redis 採用非同步複製。從 Redis 2.8 開始,從伺服器會周期性地報告從複製流中
  • 解決:Host xxx.xxx.xxx.xxx is blocked because of many connection errors.
  • 1、假設備份文件xxxx.bak大小約300G,還原後所占用的空間為900G 2、磁碟空間只有1T,若將備份文件拷貝過來,空間剩餘700G,無法成功還原,因此通過遠程方式還原。 例子如下: SQLSERVER服務實例名稱: 192.168.12.163需要備份的資料庫名稱: a備份機器名稱(Clie
  • 配置文件內容:[root@yoon etc]# cat mongod.conf logpath=/export/log/mongodb.loglogappend=truefork = truedbpath=/export/data/dbpidfilepath = /export/mongodb/et
  • ===================================================================================================================#!/bin/sh. /etc/profile DATE=`date
  • Output子句日常灰常有用,而且用的地方也挺多,但是確好多時候被我們忽視,今天我就也簡單掃盲一下這個語句的用法。 Output子句 返回受 INSERT、UPDATE、DELETE 或 MERGE 語句影響的各行中的信息,或返回基於受這些語句影響的各行的表達式。 這些結果可以返回到處理應用程式,以
  • 一直沒有在意過資料庫處理樹形數據的重要性,直到有一天朋友問起我關於樹形數據查詢的問題時才發現根本不會,正好這個時候也要用到遞歸進行樹形數據的查詢於是在網上查了一圈,語法總結如下 參考文獻:https://msdn.microsoft.com/query/dev10.query?appId=Dev10
  • declare @temp_temp uniqueidentifier--臨時變數 DECLARE aaa CURSOR for select Id from A -------------------打開游標 open aaa --先查詢一次再迴圈,防止有多個游標時@@FETCH_STATUS=-
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...