SQLite學習筆記之二

一.創建數據庫

sqlite3 test.db  不存在則建立 存在則打開能夠,能夠指定目錄好比sqlite3 d:/test/test.db
html

C:\Users\Administrator>g:
進入到含有要使用的sqlite3.exe的目錄否則會用環境變量裏的sqlite3.exe,本機中有兩個 分別是版本3.7.11 和版本3.8.2
G:\>cd G:\sqlite_file 本目錄裏沒有指定的sqlite3.exe

G:\sqlite_file>sqlite3 test.db  生成test數據庫
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>  
若是進入後sqlite>後什麼也不作 則不會生成數據庫 若是建表或者執行某些命令好比.database則會在當前目錄中生成數據庫
sqlite> .database 
seq  name             file
---  ---------------  -------------------------------------
0    main             G:\sqlite_file\test.db    在當前目錄中生成了數據庫
1    temp
sqlite>
使用指定的sqlite3.exe 在指定的目錄下生成數據庫 sql

G:\sqlite_file>cd G:\sqlite_file\sqlite-shell-win32-x86-3080200 本目錄裏有指定的sqlite3.exe
G:\sqlite_file\sqlite-shell-win32-x86-3080200>sqlite3 g:/sqlite_file/db/test.db
SQLite version 3.8.2 2013-12-06 14:53:30
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .table
sqlite>
在指定的目錄(g:/sqlite_file/db/)裏生成了數據庫注意路徑必須現存在否則沒法建立 shell



二.雙擊sqlite-3_6_16目錄下的程序sqlite3.exe,便可運行
三.退出
.exit  或者 .quit
四.SQLite支持以下5種數據類型
1.NULL:空值。
2.INTEGER:帶符號的整型,具體取決有存入數字的範圍大小。
3.REAL:浮點數字,存儲爲8-byte IEEE浮點數。
4.TEXT:字符串文本。
5.BLOB:二進制對象。
  五.聯繫人表格結構以下
create table contact(id integer primary key autoincrement,
lastname varchar(20),firstname varchar(20),
mobile varchar(30), telephone varchar(20),
email  varchar(30), company varchar(50),
department varchar(16),address varchar(80),
id1 interger,id2 integer, updatetime datetime);
 
六.查看數據庫有哪些數據表
命令是:.tables
七.如何插入一條記錄
insert into contact(lastname,firstname,mobile,telephone,updatetime) values('劉','暢','13910128132','010-81749136','2009-07-22');
八.查看數據表的結構
針對整個數據庫
.schema
針對僅僅是contact聯繫人該表
.schema  contact 注意沒有分號
  九.如何打開一個已經建立的數據庫
sqlite3  test.db
十.如何解決以下問題
SQL error: near "sqlite3": syntax error
  SQL指令都是以分號(;)結尾的。若是遇到兩個減號(--)則表明註解,sqlite3會略過去
  十一.如何創建索引
create index index_name on table_name(field_to_be_indexed);
十二.如何刪除一張數據表
drop table contact;
  十三.查看當前的數據庫
.database
  十四.如何刪除一個數據表的數據
delete from contact;
十五.如何導入一個文件到某個表中
.import  文件路徑  表名
注意這是非SQL語句,因此不加分號
.import e:/contact.txt contact
十六.如何設置文件字段的分隔符
.separator   「,」
十七.如何查看當前sqllite字段的分隔符是什麼?
.show
十八.如何將查詢結果導出到一個文件
第一步:.output a.txt
第二步:執行要導出的SQL語句

第三步:.output stdout 數據庫

sqlite> .output g:/sqlite_file/db/test.txt   沒有;號  導出文件到指定的目錄
sqlite> select * from contact;                   查詢要導出的數據
sqlite> .output stdout                           沒有;號  
sqlite> delete from contact;                    爲看效果清楚數據後在導入
sqlite> select * from contact;
sqlite> .import g:/sqlite_file/db/test.txt contact  沒有;號
當導入的數據的分隔符可能和表中的分隔符不一樣,
先用.show 看錶中的分隔符若是不一樣用.separator   「文件裏的分隔符」替換。 

十九.SQL查詢語句
select * from film order by year limit 10;
select * from film order by year desc limit 10;
select count(*) from film;
select * from film where starring like 'Jodie%'; 
select * from film where starring='Jodie Foster';
select title, year from film order by year desc limit 10;
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;
express

G:\sqlite_file\sqlite-shell-win32-x86-3080200>sqlite3  g:/sqlite_file/db/test.db
 ".dump" > output.sql
output.sql文件內容
   
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE contact (id integer primary key autoincrement,lastname varchar(20),
firstname varchar(20),mobile varchar(30),telephone varchar(20),email varchar(30)
,company varchar(50),department varchar(16),address varchar(80),id1 integer,id2
integer ,updatetime datetime);
INSERT INTO "contact" VALUES(1,'劉','暢','13910128132','010-81749136','','','','','','','2009-07-22');
INSERT INTO "contact" VALUES(2,'劉','暢','13910128132','010-81749136','','','','','','','2009-07-22');
INSERT INTO "contact" VALUES(7,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
INSERT INTO "contact" VALUES(8,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
INSERT INTO "contact" VALUES(9,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
DELETE FROM sqlite_sequence;
INSERT INTO "sqlite_sequence" VALUES('contact',9);
COMMIT;

二十.如何更新表中數據
update contact set lastname=’江南七怪’where id = 1028
update contact set lastname='江南七怪', mobile='13912345678' where id=1028;
二十一.如何一次插入多個數據
Insert into SAMPLE(PRJNUM, PRJNAME, EMYNUM, EMYNAME, SALCATEGORY, SALPACKAGE)
values(100001, 'TPMS', 200001, 'Johnson', 'A', 2000), (100001, 'TPMS', 200002,
'Christine', 'B', 3000), (100001, 'TPMS', 200003, 'Kevin', 'C', 4000), (100002,
'TCT', 200001, 'Johnson', 'A', 2000), (100002, 'TCT', 200004, 'Apple', 'B',
3000);


ui

相關文章
相關標籤/搜索