如何在Linux上安装和基本使用SQLite
在本文中,我们将了解如何通过其基本操作安装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命令。