Sqlite3入门学习一
一、基本操作
1.创建一个新的数据库
sqlite3 文件名
先建立一个 Db 目录,并在 Db 目录中创建一个 car.db 数据库文件,打开控制台窗口,命令如下:
E:\>mkdir Db
E:\>cd Db
E:\Db>sqlite3 car.db
2.打开一个已经存在的数据库
sqlite3 已经存在的文件名
创建一个新数据库和打开一个已经存在的数据库命令是一模一样的,如果文件在当前目录下不存在,则新建;如果存在,则打开。
3.导入数据
.read 数据文件
打开记事本,并将下列 SQL 语句复制到记事本中,保存为 car.sql,并存到上面说到的 Db 目录下,在命令行环境中输入
sqlite>.read car.sql
即将所有的数据导入到 car.db 数据库中。
cal.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;
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是不区分大小写的,但也有一些命令是大小写敏感的,比如GLOB和glob在SQLite的语句中有不同的含义。
4.列出所有的数据表
.tables
1.PNG5.显示数据库结构
.schema
2.PNGschema---方案、格式
6.显示表的结构
.schema 表名
3.PNG7.导出某个表的数据
7.1导出表的完整sql语句
.dump 表名
4.PNGdump--倾倒
7.2 导出表中的数据
.output 文件名
如果要显示字段名称设置 .headers on 具体请见下面8.3
完成后记得将输出重定向至屏幕.
sqlite> .output stdout
在EmEditor打开,如下所示:
image.png
8.从文件导入数据到SQLite表
.import 文件名 表名
可以使用sqlite3工具和.import命令将CSV或txt文件导入SQLite表。此命令接受文件名和表名。这里,文件名是用于指定从哪里获取数据,表名是要导入数据的表。
将一个CSV文件:data.csv的内容导入到不存在的表中,在导入时指定新表名称为“newTable”。 它将根据csv文件的数据创建一个表。文件:data.csv的内容如下
ID,NAME,AGE,ADDRESS,FEES
1,Maxsu,26,Haikou,36000
2,Minwang,25,Guangzhou,29900
为防止命令行实用程序尝试将输入的csv文件解释为其他格式,应先设置.mode csv,然后再用.import语句导入。
13.PNG
注: 检查系统默认的分隔符separator,必须与要导入的数据一致. 如果不一致可能导致sqlite字段分割错误.
查看分隔符使用命令 .show , 如果不一致可直接修改, 比如:
sqlite>.separator ","
将分隔符转为逗号.
9.数据显示相关命令
9.1设置分隔符:.separator 分隔符
我们可以首先运行 SELECT * FROM Names; ,可以看到默认的分隔符是 |
运行.separator *** 以后,再 SELECT * FROM Names;,可以看到分隔符已经变成 *** 了
5.PNG
9.2设置显示模式:.mode 模式
默认的是 list 显示模式,一般我们使用 column 显示模式,还有其他几种显示模式可以 .help 看 mode 相关内容。看看下面的图,和上面是不是显示的不一样了
6.PNG
7.PNG