æ¬å¤å¿åæ¨å¨å¿«éçè§£ SQLite ææ¶åçä¸»è¦æ¦å¿µï¼æä¾äºæå¸¸ç¨çSQLè¯å¥ï¼ä¾æ¨åèã
SQLite æ¯ä¸ä¸ªè½»é级çåµå ¥å¼å ³ç³»æ°æ®åºç®¡çç³»ç»ï¼éµå¾ª ACID ååï¼å¹¿æ³ç¨äºæµè§å¨ãæä½ç³»ç»çåºç¨ä¸ï¼å®ç°æ¬å°æ°æ®åå¨ã
sqlite-tools-win32-*.zipãsqlite-dll-win32-*.zipC:\sqliteï¼å°è¿ä¸¤ä¸ªå缩æä»¶è§£åå°è¯¥æä»¶å¤¹ä¸ãsqlite3.defã sqlite3.dllã sqlite3.exelinux èªå¸¦ sqlite3ï¼æè
éè¿ apt-get/yum/brew çå®è£
ã
brew install sqlite å®è£
SQLite é常æ é夿é ç½®ï¼å½æå®çæ°æ®åºæä»¶ä¸å卿¶ï¼å®ä¼èªå¨å建ä¸ä¸ªæ°æä»¶ã
sqlite3 mydatabase.db
è¥æ°æ®åºæä»¶ä¸åå¨åä¼èªå¨å建
sqlite> .databases
main: /home/user/sqlite/database.db r/w
sqlite> .backup back
sqlite> .show
echo: off
eqp: off
explain: auto
headers: off
mode: list
nullvalue: ""
output: stdout
colseparator: "|"
rowseparator: "\n"
stats: off
width:
filename: api.db
sqlite> .dump user
sqlite> .exit
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE api (
id INTEGER PRIMARY KEY AUTOINCREMENT,
host TEXT NOT NULL,
port INTEGER NOT NULL,
path TEXT NOT NULL
);
INSERT INTO api VALUES(1,'example.com',8080,'/api/v1');
sqlite3 mydatabase.db .dump > backup.sql
sqlite3 mydatabase.db < backup.sql
sqlite> .mode csv
sqlite> select * from api;
id,host,port,path
1,example.com,8080,/api/v1
sqlite> select * from api;
| id | host | port | path |
|----|-----------------|------|---------|
| 1 | example.com | 8080 | /api/v1 |
æ¯æ ascii box column csv html insert json line list markdown qbox quote table tabs tcl çç±»å
sqlite> create table user(id integer primary key, name text);
sqlite> .tables
sqlite> .schema user
sqlite> .import user.csv user
sqlite> .head on
-- å建表
create table user(id integer primary key, name text);
-- å é¤è¡¨
drop table user;
-- éå½å表
alter table user rename to user_new;
-- æå
¥
-- åæ¡
insert into user(name) values('test');
-- 夿¡
insert into user(name) values('test1'),('test2');
-- æ¥è¯¢
select * from user;
-- å»éæ¥è¯¢
select distinct name from user;
-- ç»è®¡
select count(id) from user;
-- limit
select * from user limit 2;
-- æ¡ä»¶æ¥è¯¢
select * from user where id > 1;
-- æ¨¡ç³æ¥è¯¢
select * from user where name like '%test%';
-- group by
select name, count(id) from user group by name;
-- æåº
select * from user order by id desc;
-- èå彿°
select max(id) from user;
-- æ´æ°
update user set name='test3' where id=1;
-- å é¤
delete from user where id=1;
äºå¡å ·æååæ§(Atomicity)ãä¸è´æ§(Consistency)ãé离æ§(Isolation)ãæä¹ æ§(Durability)å个æ å屿§ï¼ç¼©å为 ACIDã
-- å¼å§äºå¡
begin transaction;
-- æä½
update user set name='test4' where id=1;
-- åæ»
rollback;
-- æäº¤
commit;
| å½ä»¤ | æè¿° |
|---|---|
| .backup ?DB? FILE | å¤ä»½ DB æ°æ®åºï¼é»è®¤æ¯ "main"ï¼å° FILE æä»¶ã |
| .bail ON|OFF | åçé误å忢ãé»è®¤ä¸º OFFã |
| .databases | ååºæ°æ®åºçåç§°åå ¶æä¾éçæä»¶ã |
| .dump ?TABLE? | 以 SQL ææ¬æ ¼å¼è½¬å¨æ°æ®åºã妿æå®äº TABLE 表ï¼ååªè½¬å¨å¹é LIKE 模å¼ç TABLE 表ã |
| .echo ON|OFF | å¼å¯æå ³é echo å½ä»¤ã |
| .exit | éåº SQLite æç¤ºç¬¦ã |
| .explain ON|OFF | å¼å¯æå ³ééåäº EXPLAIN çè¾åºæ¨¡å¼ãå¦ææ²¡æå¸¦åæ°ï¼å为 EXPLAIN onï¼å³å¼å¯ EXPLAINã |
| .header(s) ON|OFF | å¼å¯æå ³é头鍿¾ç¤ºã |
| .help | æ¾ç¤ºæ¶æ¯ã |
| .import FILE TABLE | å¯¼å ¥æ¥èª FILE æä»¶çæ°æ®å° TABLE 表ä¸ã |
| .indices ?TABLE? | æ¾ç¤ºææç´¢å¼çåç§°ã妿æå®äº TABLE 表ï¼ååªæ¾ç¤ºå¹é LIKE 模å¼ç TABLE 表çç´¢å¼ã |
| .load FILE ?ENTRY? | å è½½ä¸ä¸ªæ©å±åºã |
| .log FILE|off | å¼å¯æå ³éæ¥å¿ãFILE æä»¶å¯ä»¥æ¯ stderrï¼æ åé误ï¼/stdoutï¼æ åè¾åºï¼ã |
| .nullvalue STRING | å¨ NULL å¼çå°æ¹è¾åº STRING å符串ã |
| .output FILENAME | åéè¾åºå° FILENAME æä»¶ã |
| .output stdout | åéè¾åºå°å±å¹ã |
| .print STRING... | éåå°è¾åº STRING å符串ã |
| .prompt MAIN CONTINUE | æ¿æ¢æ åæç¤ºç¬¦ã |
| .quit | éåº SQLite æç¤ºç¬¦ã |
| .read FILENAME | æ§è¡ FILENAME æä»¶ä¸ç SQLã |
| .schema ?TABLE? | æ¾ç¤º CREATE è¯å¥ã妿æå®äº TABLE 表ï¼ååªæ¾ç¤ºå¹é LIKE 模å¼ç TABLE 表ã |
| .separator STRING | æ¹åè¾åºæ¨¡å¼å .import æä½¿ç¨çåé符ã |
| .show | æ¾ç¤ºåç§è®¾ç½®çå½åå¼ã |
| .stats ON|OFF | å¼å¯æå ³éç»è®¡ã |
| .tables ?PATTERN? | ååºå¹é LIKE 模å¼ç表çåç§°ã |
| .timeout MS | å°è¯æå¼éå®ç表 MS 毫ç§ã |
| .width NUM | NUM 为 "column" 模å¼è®¾ç½®å宽度ã |
| .timer ON|OFF | å¼å¯æå ³é CPU 宿¶å¨ã |
| .mode MODE | 设置è¾åºæ¨¡å¼ï¼MODE å¯ä»¥æ¯ä¸åä¹ä¸ :csv éå·åéçå¼ column 左对é½çå html HTML ç <table> 代ç insert TABLE 表ç SQL æå ¥ï¼insertï¼è¯å¥ line æ¯è¡ä¸ä¸ªå¼ list ç± .separator å符串åéçå¼ tabs ç± Tab åéçå¼ tcl TCL å表å ç´ |
å¨å½ä»¤è¡ä¸éè¿ .help å½ä»¤æ¾ç¤ºå¸®å©ææ¡£