1. 查看sqllite的版本信息:
2 創建數據庫
3 退出sqlite命令行的方式:
sqlite>.quit 或 sqlite>.exit命令
4 列出當前顯示格式的配置
5 顯示數據庫表結構
6 向表中插入數據
7 設置導出目標
12 設置顯示模式: .mode 模式
有好幾種顯示模式,默認的是 list 顯示模式,一般我們使用 column 顯示模式,還有其他幾種顯示模式可以 .help 看 mode 相關內容。看看下面的圖,和上面是不是顯示的不一樣了?
13 設置 NULL 值顯示成什麼樣子: .nullvalue 你想要的NULL值格式
默認情況下NULL值什麼也不顯示,你可以設置成你自己想要的樣子
14 配置文件 .sqliterc
如果我們每次進入命令行都要重新設置顯示格式,很麻煩,其實 .show 命令列出的所有設置項都可以保存到一個 .sqliterc 文件中,這樣每次進入命令行就自動設置好了。.sqlterc 文件在 Linux 下保存在用戶的 Home 目錄下,在 Windows 下可以保存到任何目錄下,但是需要設置環境變量讓數據庫引擎能找到它,感興趣的可以看看幫助。
15 自定義分隔符
16 顯示標題欄 .header on
不顯示標題欄:.header off
三.數據庫和表的相關命令
1、創建一個新的數據庫:sqlite3 文件名
創建一個test.db數據庫文件,打開控制台窗口,命令如下:
2、打開一個已經存在的數據庫:sqlite3已經存在的文件名
創建一個數據庫和打開一個已經存在的數據庫命令是一模一樣的,如果存在,則打開。
3 建立數據表
create table table_name(field type1,fieldtype1,….);
table_name是要創建數據表的名稱,field x上是數據庫表內字段名字,typex則是字段類型。
如:該語句創建一個記錄學生信息的數據表
sql的指令格式:所有sql指令都是以分號(;)結尾,兩個減號(--)則表示注釋
4 添加數據記錄
insert into table_name(列 field1,field2,….)values(值val1,val2,….);
val x為需要存入字段的值。
例如,往老師信息表添加數據:
很簡單,創建了一個Teachers表並向添加了四條數據,設定了一些約束,其中有自動增加的主鍵、默認值等等。
5、修改數據
UPDATE 表 SET 列 = ‘新值’ 【WHERE 條件語句】
UPDATE語句用來更新表中的某個列,如果不設定條件,則所有記錄的這一列都被更新;如果設定了條件,則符合條件的這一列被更新,WHERE子句被用來設定條件,如下例:
6 刪除數據 DELETE FROM 表 【WHERE條件語句】
如果設定WHERE條件子句,則刪除符合條件的數據記錄;如果沒有設定條件語句,則刪除所有記錄。
7 導入數據: .read 數據文件
打開記事本,並將下列SQL語句復制到記事本中,保存為test.sql,在命令行環境中輸入
.read test.sql
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 fieldasc;
D 降序輸出數據記錄
select * from table 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 fieldbetween val1 and val2;
select * from Cars where cost between 41400and 350000;
F、查詢記錄數目
select count(*) from table_name;
G、區分列數據
select distinct field from table_name;
有一些字段的值可能會重復出現,distinct去掉重復項,將列中各字段值單個列出。
h 別名SELECT 列AS別名,列AS別名FROM
可以返回數據集中的某些列起一個比較直觀的名字,比如把Const改為”Price Of Car”
l、條件查詢SELECT列FROM表 【WHERE條件語句】
一般的條件語句都Shiite大於、小於、等於之類的,這裡有幾個特別的條件語句
LIKE
-------------------------------
LIKE 用通配符匹配字符串
下劃線_ 匹配一個字符串
百分號% 匹配多個字符串
LIKE匹配字符串時不區分大小寫
GLOB
J 區分 DISTINCT 列
有一些字段的值可能會出現重復,比如訂單表中,一個客戶可能會有好幾份訂單,因此客戶的名字會重復出現。
到底有哪些客戶下了訂單呢?下面的語句將客戶名字區分出來。
K 分組GROUP BY列
分組和前面的區分有一點類似。區分僅僅是為了去掉重復項,而分組是為了對各類不同項進行統計計算。
比如上面的例子,我們區分出5個客戶,這5個客戶一共11個訂單,說明很多客戶都下了不止一個訂單。
下面的語句的統計每個客戶在訂單上總共花費了多少錢。
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;
11 sqlite3存儲數據的類型
NULL:標識一個NULL值
INTEGER:整數類型
REAL:浮點數
TEXT:字符串
BLOB:二進制數
12 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');
13 怎麼在已經創建的表中插入一列
ALTER TABLE table-name
ADD COLUMN column-name column-type;