Sqlite3入門學(xué)習(xí)一

一、基本操作

1.創(chuàng)建一個(gè)新的數(shù)據(jù)庫

sqlite3 文件名

先建立一個(gè) Db 目錄,并在 Db 目錄中創(chuàng)建一個(gè) car.db 數(shù)據(jù)庫文件,打開控制臺(tái)窗口,命令如下:
E:\>mkdir Db
E:\>cd Db
E:\Db>sqlite3 car.db

2.打開一個(gè)已經(jīng)存在的數(shù)據(jù)庫

sqlite3 已經(jīng)存在的文件名

創(chuàng)建一個(gè)新數(shù)據(jù)庫和打開一個(gè)已經(jīng)存在的數(shù)據(jù)庫命令是一模一樣的,如果文件在當(dāng)前目錄下不存在,則新建;如果存在,則打開。

3.導(dǎo)入數(shù)據(jù)

.read 數(shù)據(jù)文件

打開記事本,并將下列 SQL 語句復(fù)制到記事本中,保存為 car.sql,并存到上面說到的 Db 目錄下,在命令行環(huán)境中輸入
sqlite>.read car.sql
即將所有的數(shù)據(jù)導(dǎo)入到 car.db 數(shù)據(jù)庫中。
cal.sql的內(nèi)容如下:
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;
BEGIN TRANSACTION;
create table Friends(Id integer primary key, Name text unique not NULL,
Sex text check(Sex IN ('M', 'F')));
insert into Friends values(1,'Jane', 'F');
insert into Friends values(2,'Thomas', 'M');
insert into Friends values(3,'Franklin', 'M');
insert into Friends values(4,'Elisabeth', 'F');
insert into Friends values(5,'Mary', 'F');
insert into Friends values(6,'Lucy', 'F');
insert into Friends values(7,'Jack', 'M');
COMMIT;
BEGIN TRANSACTION;
create table Customers(CustomerId integer primary key, Name text);
insert into Customers(Name) values('Paul Novak');
insert into Customers(Name) values('Terry Neils');
insert into Customers(Name) values('Jack Fonda');
insert into Customers(Name) values('Tom Willis');
create table Reservations(Id integer primary key,
CustomerId integer, Day text);
insert into Reservations(CustomerId, Day) values(1, '2009-22-11');
insert into Reservations(CustomerId, Day) values(2, '2009-28-11');
insert into Reservations(CustomerId, Day) values(2, '2009-29-11');
insert into Reservations(CustomerId, Day) values(1, '2009-29-11');
insert into Reservations(CustomerId, Day) values(3, '2009-02-12');
COMMIT;
BEGIN TRANSACTION;
create table Names(Id integer, Name text);
insert into Names values(1,'Tom');
insert into Names values(2,'Lucy');
insert into Names values(3,'Frank');
insert into Names values(4,'Jane');
insert into Names values(5,'Robert');
COMMIT;
BEGIN TRANSACTION;
create table Books(Id integer primary key, Title text, Author text,
Isbn text default 'not available');
insert into Books values(1,'War and Peace','Leo Tolstoy','978-0345472403');
insert into Books values(2,'The Brothers Karamazov',
'Fyodor Dostoyevsky','978-0486437910');
insert into Books values(3,'Crime and Punishment',
'Fyodor Dostoyevsky','978-1840224306');
COMMIT;

SQLite是不區(qū)分大小寫的,但也有一些命令是大小寫敏感的,比如GLOB和glob在SQLite的語句中有不同的含義。

4.列出所有的數(shù)據(jù)表

.tables

1.PNG

5.顯示數(shù)據(jù)庫結(jié)構(gòu)

.schema

2.PNG

schema---方案、格式

6.顯示表的結(jié)構(gòu)

.schema 表名

3.PNG

7.導(dǎo)出某個(gè)表的數(shù)據(jù)

7.1導(dǎo)出表的完整sql語句

.dump 表名

4.PNG

dump--傾倒

7.2 導(dǎo)出表中的數(shù)據(jù)

.output 文件名

如果要顯示字段名稱設(shè)置 .headers on 具體請(qǐng)見下面8.3

10.PNG

完成后記得將輸出重定向至屏幕.
sqlite> .output stdout
在EmEditor打開,如下所示:
image.png

8.從文件導(dǎo)入數(shù)據(jù)到SQLite表

.import 文件名 表名

可以使用sqlite3工具和.import命令將CSV或txt文件導(dǎo)入SQLite表。此命令接受文件名和表名。這里,文件名是用于指定從哪里獲取數(shù)據(jù),表名是要導(dǎo)入數(shù)據(jù)的表。
將一個(gè)CSV文件:data.csv的內(nèi)容導(dǎo)入到不存在的表中,在導(dǎo)入時(shí)指定新表名稱為“newTable”。 它將根據(jù)csv文件的數(shù)據(jù)創(chuàng)建一個(gè)表。文件:data.csv的內(nèi)容如下
ID,NAME,AGE,ADDRESS,FEES
1,Maxsu,26,Haikou,36000
2,Minwang,25,Guangzhou,29900
為防止命令行實(shí)用程序嘗試將輸入的csv文件解釋為其他格式,應(yīng)先設(shè)置.mode csv,然后再用.import語句導(dǎo)入。


13.PNG

注: 檢查系統(tǒng)默認(rèn)的分隔符separator,必須與要導(dǎo)入的數(shù)據(jù)一致. 如果不一致可能導(dǎo)致sqlite字段分割錯(cuò)誤.

查看分隔符使用命令 .show , 如果不一致可直接修改, 比如:
sqlite>.separator ","
將分隔符轉(zhuǎn)為逗號(hào).

9.數(shù)據(jù)顯示相關(guān)命令

9.1設(shè)置分隔符:.separator 分隔符

我們可以首先運(yùn)行 SELECT * FROM Names; ,可以看到默認(rèn)的分隔符是 |
運(yùn)行.separator *** 以后,再 SELECT * FROM Names;,可以看到分隔符已經(jīng)變成 *** 了


5.PNG

9.2設(shè)置顯示模式:.mode 模式

默認(rèn)的是 list 顯示模式,一般我們使用 column 顯示模式,還有其他幾種顯示模式可以 .help 看 mode 相關(guān)內(nèi)容??纯聪旅娴膱D,和上面是不是顯示的不一樣了


6.PNG

7.PNG

9.3顯示標(biāo)題欄:.headers on

第一行顯示字段名
8.PNG

9.4列出當(dāng)前顯示格式設(shè)置情況:.show

9.PNG

SQLite數(shù)據(jù)庫支持加密和解密,但是免費(fèi)版沒有這個(gè)功能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載,覺得這篇寫 SQLAlchemy Core,寫得非常不錯(cuò)。不過后續(xù)他沒寫SQLAlchemy ORM... ...
    非夢(mèng)nj閱讀 5,602評(píng)論 1 14
  • 一、基本簡(jiǎn)介 SQLite 是一個(gè)自持的(self-contained)、無服務(wù)器的、零配置的、事務(wù)型的關(guān)系型數(shù)據(jù)...
    錫和里的猿閱讀 965評(píng)論 0 1
  • ORACLE自學(xué)教程 --create tabletestone ( id number, --序號(hào)usernam...
    落葉寂聊閱讀 1,243評(píng)論 0 0
  • 忙忙碌碌的一天又結(jié)束了,想想今天才是星期一,但是感覺上了好幾天班了,有些累了。一周上六天班,確實(shí)很累人。要休息好,...
    一路修行l(wèi)d閱讀 296評(píng)論 0 0
  • 躍躍欲試的好奇 遇事則斷的勇氣 朦朧的美感 在你什么都不太知道的時(shí)候最真實(shí) 心中有了對(duì)比 不經(jīng)意間的瞬間 想法 行...
    遇幾閱讀 151評(píng)論 0 0

友情鏈接更多精彩內(nèi)容