sqlite常用的命令-增刪改查


一、查看版本信息:

#sqlite3 -version

 

二、sqlite3常用命令

1、當前目錄下建立或打開test.db數據庫文件,並進入sqlite命令終端,以sqlite>前綴標識:

 

2、輸出幫助信息:

sqlite>.help

 

3、查看數據庫文件信息命令(注意命令前帶字符'.'):

sqlite>.database

 

4、退出sqlite終端命令:

sqlite>.quit

sqlite>.exit

 

列出當前顯示格式的配置:
sqlite>.show

 

6、顯示數據庫結構:.schema

顯示表的結構:.schema    表名

其實就是一些 SQL 語句,他們描述了數據庫的結構,如圖

 

7、導出某個表的數據: .dump    表名

 

8、設置導出目標: 

.output     文件名  

或者

.output   stdout

先運行 .output cars.sql ,然后再運行 .dump 命令試試看?如果要回復成導出到終端(標准輸出),則運行 .output stdout

 

10、設置分隔符:.separator    分隔符

我們可以首先運行 SELECT * FROM Cars; ,可以看到默認的分隔符是 | 

運行.separator : 以后,再 SELECT * FROM Cars;,可以看到分隔符已經變成 : 了

 

11、顯示標題欄:.headers   on

 

12、設置顯示模式:.mode    模式

有好幾種顯示模式,默認的是 list 顯示模式,一般我們使用 column 顯示模式,還有其他幾種顯示模式可以 .help 看 mode 相關內容。看看下面的圖,和上面是不是顯示的不一樣了?

 

 

13、設置 NULL 值顯示成什么樣子: .nullvalue     你想要的NULL值格式

默認情況下NULL值什么也不顯示,你可以設置成你自己想要的樣子

 

14、配置文件 .sqliterc

如果我們每次進入命令行都要重新設置顯示格式,很麻煩,其實 .show 命令列出的所有設置項都可以保存到一個 .sqliterc 文件中,這樣每次進入命令行就自動設置好了。.sqlterc 文件在 Linux 下保存在用戶的 Home 目錄下,在 Windows 下可以保存到任何目錄下,但是需要設置環境變量讓數據庫引擎能找到它,感興趣的可以看看幫助。 

 

 

三、數據庫和表的相關命令

 

1、創建一個新的數據庫:sqlite3     文件名

創建一個 test.db 數據庫文件,打開控制台窗口,命令如下:

sqlite>sqlite3 test.db

 

2、打開一個已經存在的數據庫:sqlite3 已經存在的文件名

創建一個新數據庫和打開一個已經存在的數據庫命令是一模一樣的,如果文件在當前目錄下不存在,則新建;如果存在,則打開。

 

3、建立數據表

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

table_name是要創建數據表名稱,fieldx是數據表內字段名稱,typex則是字段類型。
如:該語句創建一個記錄學生信息的數據表。

sql的指令格式:所有sql指令都是以分號(;)結尾,兩個減號(--)則表示注釋。

 

4、添加數據記錄

insert into table_name(列field1, field2, ...) values(值val1, val2, ...);

valx為需要存入字段的值。
例,往老師信息表添加數據:

很簡單,創建了一個 Teachers 表並向其中添加了四條數據,設定了一些約束,其中有自動增加的主鍵、默認值等等。

 

5、修改數據

UPDATE 表 SET 列 = '新值' 【WHERE 條件語句】

UPDATE 語句用來更新表中的某個列,如果不設定條件,則所有記錄的這一列都被更新; 如果設定了條件,則符合條件的記錄的這一列被更新, WHERE 子句被用來設定條件,如下例:

 

6、刪除數據 DELETE FROM 表 【WHERE 條件語句】

如果設定 WHERE 條件子句,則刪除符合條件的數據記錄;如果沒有設定條件語句,則刪除所有記錄

 

 

7、導入數據:.read     數據文件

打開記事本,並將下列 SQL 語句復制到記事本中,保存為 test.sql ,在命令行環境中輸入

.read   test.sql

即將所有的數據導入到 test.db 數據庫中。

 

BEGIN TRANSACTION;
CREATE TABLE Cars(Id integer PRIMARY KEY, Name text, Cost integer);
INSERT INTO Cars VALUES(1,'Audi',52642);
INSERT INTO Cars VALUES(2,'Mercedes',57127);
INSERT INTO Cars VALUES(3,'Skoda',9000);
INSERT INTO Cars VALUES(4,'Volvo',29000);
INSERT INTO Cars VALUES(5,'Bentley',350000);
INSERT INTO Cars VALUES(6,'Citroen',21000);
INSERT INTO Cars VALUES(7,'Hummer',41400);
INSERT INTO Cars VALUES(8,'Volkswagen',21600);
COMMIT;

BEGIN TRANSACTION;
CREATE TABLE Orders(Id integer PRIMARY KEY, OrderPrice integer CHECK(OrderPrice>0), 
                    Customer text);
INSERT INTO Orders(OrderPrice, Customer) VALUES(1200, "Williamson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(200, "Robertson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(40, "Robertson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(1640, "Smith");
INSERT INTO Orders(OrderPrice, Customer) VALUES(100, "Robertson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(50, "Williamson");
INSERT INTO Orders(OrderPrice, Customer) VALUES(150, "Smith");
INSERT INTO Orders(OrderPrice, Customer) VALUES(250, "Smith");
INSERT INTO Orders(OrderPrice, Customer) VALUES(840, "Brown");
INSERT INTO Orders(OrderPrice, Customer) VALUES(440, "Black");
INSERT INTO Orders(OrderPrice, Customer) VALUES(20, "Brown");
COMMIT;

8、查詢數據記錄

a查詢輸出所有數據記錄
select * from table_name;

 

b限制輸出數據記錄數量

若數據庫中的數據太多,全部返回可不行,可以限制返回的數量,還可以設定返回的起始位置
select * from table_name limit val;

 

c升序輸出數據記錄
select * from table_name order by field asc;

 

d降序輸出數據記錄
select * from table_name order by field desc;

 

e條件查詢
select * from table_name where expression;

 

IN (集合)
select * from table_name where field in ('val1', 'val2', 'val3');

 

BETWEEN 值1 AND 值2
select * from table_name where field between val1 and val2;

f、查詢記錄數目

select count (*) from table_name;

 

g、區分列數據
select distinct field from table_name;
有一些字段的值可能會重復出現,distinct去掉重復項,將列中各字段值單個列出。

h、別名 SELECT 列 AS 別名,列 AS 別名 FROM

可以給返回數據集中的某些列起一個比較直觀的名字,比如把 Cost 改為"Price Of Car"

 

I、條件查詢 SELECT 列 FROM 表 【WHERE 條件語句】

一般的條件語句都是大於、小於、等於之類的,這里有幾個特別的條件語句

LIKE

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

LIKE 用通配符匹配字符串

下划線 _ 匹配一個字符串

百分號 % 匹配多個字符串

LIKE 匹配字符串時不區分大小寫

 

GLOB

 

J 區分 DISTINCT 列

有一些字段的值可能會出現重復,比如訂單表中,一個客戶可能會有好幾份訂單,因此客戶的名字會重復出現。

到底有哪些客戶下了訂單呢?下面的語句將客戶名字區分出來。

 

k分組 GROUP BY 列

分組和前面的區分有一點類似。區分僅僅是為了去掉重復項,而分組是為了對各類不同項進行統計計算。

比如上面的例子,我們區分出 5 個客戶,這 5 個客戶一共下了 11 個訂單,說明很多客戶都下了不止一個訂單。

下面的語句統計每個客戶在訂單上總共花費了多少錢。

這里 Sum 是 SQLite 內置的統計函數,在這個例子中用來求每個顧客的訂單價格的和。

統計結果也可以設定返回條件,但是不能用 WHERE 子句,而是用 HAVING 子句,如下例,返回訂單總額大於 1000 的顧客。

 

9、建立索引
當說數據表存在大量記錄,索引有助於加快查找數據表速度。
create index index_name on table_name(field);
例,針對學生表stu_no字段,建立一個索引:
create index student_index on student_table(stu_no);
建立完成后,sqlite3在對該字段查詢時,會自動使用該索引。
 
10、刪除數據表或索引
drop table table_name;
drop index index_name;

 

四、sqlite3存儲數據的類型
NULL:標識一個NULL值
INTERGER:整數類型
REAL:浮點數
TEXT:字符串
BLOB:二進制數

 

五、sqlite3存儲數據的約束條件
Sqlite常用約束條件如下:
PRIMARY KEY - 主鍵:
1)主鍵的值必須唯一,用於標識每一條記錄,如學生的學號
2)主鍵同時也是一個索引,通過主鍵查找記錄速度較快
3)主鍵如果是整數類型,該列的值可以自動增長
NOT NULL - 非空:
約束列記錄不能為空,否則報錯
UNIQUE - 唯一:
除主鍵外,約束其他列的數據的值唯一
CHECK - 條件檢查:
約束該列的值必須符合條件才可存入
DEFAULT - 默認值:
列數據中的值基本都是一樣的,這樣的字段列可設為默認值

 

CREATE TABLE Orders(Id integer PRIMARY KEY, OrderPrice integer CHECK(OrderPrice>0), 
                    Customer text);

CREATE TABLE Friends(Id integer PRIMARY KEY, Name text UNIQUE NOT NULL, 
                     Sex text CHECK(Sex IN ('M', 'F')));

 

CREATE TABLE IF NOT EXISTS Reservations(Id integer PRIMARY KEY, 
                                        CustomerId integer, Day text);
INSERT INTO Reservations(CustomerId, Day) VALUES(1, '2009-22-11');

CREATE TABLE Books(Id integer PRIMARY KEY, Title text, Author text, 
                   Isbn text default 'not available');

 

 

 

怎么在已經創建的表中插入一列

 

 

ALTER  TABLE   table-name 
 ADD COLUMN  column-name column-type


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM