如何在Linux上安装和基本使用SQLite

时间:2020-03-05 15:28:16  来源:igfitidea点击:

在本文中,我们将了解如何通过其基本操作安装SQLite(关系数据库)。
如果我告诉我们SQLite可能比所有其他数据库引擎加起来使用更多的话,该怎么办?
是的,我们没听错。
它是世界上部署最广泛的数据库,具有数百万亿个副本。

造成这种流行的原因是一些与众不同的独特特征,这使其与许多其他SQL数据库引擎(如MySQL,PostgreSQL,Oracle,Microsoft SQL Server等)不同。

首先,我们将其安装在Linux上,然后介绍基本的数据库操作。

安装Sqlite

  • 要在基于debian的(Ubuntu,Debian等)机器上安装,请执行以下命令。
$sudo apt-get update
$sudo apt-get install sqlite3
  • 要在基于RPM(RHEL,CentOS,Fedora等)的计算机上安装,请执行以下命令。
$sudo yum update
$sudo yum install sqlite

现在打开一个终端并执行“ sqlite3”,我们将看到以下带有提示的行。

$sqlite3
SQLite version 3.8.2 2013-12-06 14:53:30
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

第一行显示了sqlite3的版本以及发布日期和时间。

第二行告诉输入“ .help”以获取指示。

.help命令列出所有元命令及其说明。
这些元命令也称为“点”命令,因为它们前面带有一个点。

输入“ .help”以提示

sqlite> .help
.backup ?DB? FILE      Backup DB (default "main") to FILE
.bail ON|OFF           Stop after hitting an error.  Default OFF
.databases             List names and files of attached databases
.dump ?TABLE? ...      Dump the database in an SQL text format
                         If TABLE specified, only dump tables matching
                         LIKE pattern TABLE.
.echo ON|OFF           Turn command echo on or off
.exit                  Exit this program
.explain ?ON|OFF?      Turn output mode suitable for EXPLAIN on or off.
                         With no args, it turns EXPLAIN on.
.header(s) ON|OFF      Turn display of headers on or off
.help                  Show this message
.import FILE TABLE     Import data from FILE into TABLE
.indices ?TABLE?       Show names of all indices
                         If TABLE specified, only show indices for tables
                         matching LIKE pattern TABLE.
.load FILE ?ENTRY?     Load an extension library
.log FILE|off          Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?     Set output mode where MODE is one of:
                         csv      Comma-separated values
                         column   Left-aligned columns.  (See .width)
                         html     HTML table code
                         insert   SQL insert statements for TABLE
                         line     One value per line
                         list     Values delimited by .separator string
                         tabs     Tab-separated values
                         tcl      TCL list elements
.nullvalue STRING      Use STRING in place of NULL values
.open ?FILENAME?       Close existing database and reopen FILENAME
.output FILENAME       Send output to FILENAME
.output stdout         Send output to the screen
.print STRING...       Print literal STRING
.prompt MAIN CONTINUE  Replace the standard prompts
.quit                  Exit this program
.read FILENAME         Execute SQL in FILENAME
.restore ?DB? FILE     Restore content of DB (default "main") from FILE
.schema ?TABLE?        Show the CREATE statements
                         If TABLE specified, only show tables matching
                         LIKE pattern TABLE.
.separator STRING      Change separator used by output mode and .import
.show                  Show the current values for various settings
.stats ON|OFF          Turn stats on or off
.tables ?TABLE?        List names of tables
                         If TABLE specified, only list tables matching
                         LIKE pattern TABLE.
.timeout MS            Try opening locked tables for MS milliseconds
.trace FILE|off        Output each SQL statement as it is run
.vfsname ?AUX?         Print the name of the VFS stack
.width NUM1 NUM2 ...   Set column widths for "column" mode
.timer ON|OFF          Turn the CPU timer measurement on or off

在解释这些点命令之前,让我们看一些基本的数据库操作。

首先运行“ .quit”命令以结束会话。

建立资料库

在shell提示符下执行以下命令。

它将创建数据库文件“ example.db”(我们可以选择名称代替“ example.db”)(如果不存在)。
如果存在,则打开文件中包含的数据库。

$sqlite3 example.db
SQLite version 3.8.2 2013-12-06 14:53:30
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

“ sqlite3”和“ sqlite3 dbname.db”命令之间的区别是,第一个命令将为该会话创建一个临时数据库,并且在会话关闭时将过期。

建立表格

让我们创建一个具有属性的学生表:

reg_no int(4)
名称varchar(20)
标记int(3)

在终端输入以下命令

sqlite> create table student (
   ...> reg_no int(4),
   ...> name   varchar(20),
   ...> marks  int(3)
   ...> );

它将创建一个具有上述属性的学生表。

我们可以通过.table命令查看所选数据库中的表列表

sqlite> .table
student

在我的情况下,只有一名餐桌学生。

我们还可以使用.schema table_name查看表的架构

sqlite> .schema student
CREATE TABLE student (
reg_no int(4),
name   varchar(20),
marks  int(3)
);

插入资料

让我们在表中插入3条记录
101,pradip,87
102,阿维纳什(Avinash),86
103,拉克什,90

一一输入以下命令

sqlite> insert into student (reg_no, name, marks) values (101, 'Pradip', 87);
> insert into student (reg_no, name, marks) values (102, 'Avinash', 86);
> insert into student (reg_no, name, marks) values (103, 'Rakesh', 91);

正在撷取资料

我们可以使用select语句从表中获取数据

sqlite> select * from student;
101|Pradip|87
102|Avinash|86
103|Rakesh|91

它以默认模式(列表)显示结果。

我们可以使用.mode命令更改模式

输入.mode列进行提示,然后执行选择查询。
它将以列格式显示结果。

sqlite> .mode column
> select * from student;
reg_no      name        marks     
----------  ----------  ---------
101         Pradip      87        
102         Avinash     86        
103         Rakesh      91

Delete,Alter,Drop等具有与sql相同的语法。

sqlite3的特殊命令(点命令)

我们看到“ .help”命令列出了所有的点命令。

让我们了解其他一些重要的命令。

  • 。数据库

显示所选数据库的名称。

sqlite> .database
seq  name             file                                                      
---  ---------------  -------------------
0    main             /home/avi/example.db
  • 。桌子

列出所选数据库中的表。

sqlite> .table
student
  • 。表演

显示当前设置

sqlite> .show
     echo: off
  explain: off
  headers: off
     mode: list
nullvalue: ""
   output: stdout
separator: "|"
    stats: off
    width:
  • .header开|关
    我们可以通过运行.header ON | OFF命令在查询结果中显示属性名称
sqlite> .header ON
> select * from student;
reg_no      name        marks     
----------  ----------  ---------
101         Pradip      87        
102         Avinash     86        
103         Rakesh      91
  • 。模式

该程序能够以八种不同的格式显示查询结果:“ csv”,“列”,“ html”,“插入”,“行”,“列表”,“制表符”,“ tcl” .. mode命令用于在这些输出格式之间切换。

sqlite> .mode csv
> select * from student;
reg_no,name,marks
101,Pradip,87
102,Avinash,86
103,Rakesh,91

我们可以使用.separator命令更改分隔符。

sqlite> .separator
> select * from student;
reg_no-name-marks
101-Pradip-87
102-Avinash-86
103-Rakesh-91

将结果写入文件

默认情况下,它将查询结果发送到标准输出。

我们可以使用“ .output”和“ .once”命令进行更改。

只需将输出文件的名称作为.output的参数,所有后续查询结果将写入该文件。

sqlite> .output ex.txt

或者,如果只希望重定向下一个查询的结果,请在文件名中使用.once命令。