美文网首页
Sqlite3入门学习一

Sqlite3入门学习一

作者: 巴山哥 | 来源:发表于2018-10-19 16:20 被阅读0次

    一、基本操作

    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.PNG

    5.显示数据库结构

    .schema

    2.PNG

    schema---方案、格式

    6.显示表的结构

    .schema 表名

    3.PNG

    7.导出某个表的数据

    7.1导出表的完整sql语句

    .dump 表名

    4.PNG

    dump--倾倒

    7.2 导出表中的数据

    .output 文件名

    如果要显示字段名称设置 .headers on 具体请见下面8.3

    10.PNG
    完成后记得将输出重定向至屏幕.
    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

    9.3显示标题栏:.headers on

    第一行显示字段名 8.PNG

    9.4列出当前显示格式设置情况:.show

    9.PNG

    SQLite数据库支持加密和解密,但是免费版没有这个功能

    相关文章

      网友评论

          本文标题:Sqlite3入门学习一

          本文链接:https://www.haomeiwen.com/subject/mfryzftx.html