【笔记】SQLite学习笔记

前言

SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程序库中。与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。(维基百科

安装sqlite

MacOS

  • MacOS新版本预装sqlite,如果没有可以使用brew安装
1
brew install sqlite

Linux

1
apt install sqlite3

启动SQLite

  • 在SQLite中可以直接使用命令操作数据库
1
sqlite3

直接执行命令

  • 只执行一条命令时,也可以不启动SQLite,直接将命令追加到后面

<name>.db:想要操作的数据库
.show:一条SQLite命令

1
sqlite3 <name>.db .show

数据类型

数据类型 备注
NULL 空值
int 整型
integer 带符号的整型。根据值的大小,自动存储在1、2、3、4、6、8字节中
real 浮点型。存储8字节的小数
text 文本型
blob blob型

SQLite命令

注释

1
-- 注释内容

查看帮助

1
.help

打开或创建数据库文件

  • SQLite是以文件的形式存储数据的,所以打开一个数据库实质上就是打开一个.db文件

<name>:想要创建或想要打开的数据库文件名

1
2
3
.open <name>.db

sqlite3 <name>.db

查看当前数据库的信息

1
.show

展示所有数据库

1
.databases

展示所有数据表

  • 实质上就是打印数据表的创建语句
1
.schema

备份数据库(导出)

  • 使用输入重定向导出数据库

<file>.sql:导出为sql文件

1
sqlite3 <name>.db .dump > <file>.sql

还原数据库(导入)

  • 使用输入重定向导入数据库
1
sqlite3 <name>.db < <file>.sql

SQL语句

创建表

<table_name>:数据表名
<field_name>:字段名
<field_type>:字段类型

PRIMARY KEY:定义为主键

1
2
3
4
CREATE TABLE <table_name>(
<field_name_1> <field_type_1> PRIMARY KEY,
<field_name_2> <field_type_2>
);

删除表

1
DROP TABLE <table_name>;

插入数据

指定字段

  • 指定字段只需要在对应字段上添加数据
1
INSERT INTO <table_name>(<field_name_1>, <field_name_2>, ...) VALUES(<value_1>, <value_2>, ...);

不指定字段

  • 不指定字段表示全部字段都要添加数据
1
INSERT INTO <table_name> VALUES(<value_1>, <value_2>, ...);

复制表中的数据

指定字段

<new_table_name>:新的表
<select>:select语句

1
INSERT INTO <new_table_name> (<field_name_1>, <field_name_2>, ...) <select>;

不指定字段

1
INSERT INTO <new_table_name> <select>;

查询数据

查询所有字段

1
SELECT * FROM <table_name>;

查询指定字段

1
SELECT <field_name_1>, <field_name_2>, ... FROM <table_name>;

限定语句

  • 通过where实现限定select语句
1
SELECT * FROM <table_name> WHERE <field_name>=0;

运算符

1
SELECT 1 + 1;
数值运算符
运算符 备注
+
-
*
/
== 相等
!= 不等
<> 不等
> 大于
< 小于
>= 大于等于
<= 小于等于
and 并且
or 或者
is
is not 不是

修改数据

<where>:where子句

1
2
3
4
5
# 不加where子句表示修改全部数据
UPDATE <table_name> SET <field_name>=<value>

# 加where子句表示修改限定的数据
UPDATE <table_name> SET <field_name>=<value> <where>

删除数据

1
2
3
4
5
# 不加where子句表示删除全部数据
DELETE FROM <table_name>

# where子句表示删除限定的数据
DELETE FROM <table_name> <where>

完成