一、SQLite 是什么
SQLite
是一个不需要服务器、不需要配置、不需要外部依赖的开源SQL数据库引擎。
- 不需要服务器:如MySQL安装后,会在操作系统中创建一个进程
mysqld.exe
,而 SQLite 不需要创建。 - 不需要配置:如MySQL安装后,需要配置端口、用户名、密码等,而 SQLite 不需要进行配置,它是存储在磁盘上的文件,不需要安装,直接可用。
- 不需要外部依赖:SQLite 是自给自足的,不需要任何外部的依赖。
另外:
- SQLite 支持 MySQL 拥有的大多数功能。
- 允许多个进程/线程安全访问,支持事务机制。
- 允许多门开发语言调用,支持
JDBC
。 - 支持
Windows
、Linux
等多个操作系统上运行。
二、SQLite 的历史
SQLite 在 2000 年 8 月 被设计出来,SQL代表着数据库,Lite 在英文中代表着 轻量级
、清淡的
的意思,所以 SQLite 的设计初衷就是和 MySQL、SQL Server 相比重量非常轻。
2000 年, D. Richard Hipp 设计 SQLite 是为了不需要管理即可操作程序。
2000 年 8 月,SQLite1.0 发布 GNU 数据库管理器(GNU Database Manager)。
2011 年 Hipp 宣布,向 SQLite DB 添加 UNQl 接口,开发 UNQLite(面向文档的数据库)。
三、SQLite 的命令
SQLite 的命令可以对标 SQL,包括了 CREATE、ALTER、SELECT、INSERT、UPDATE、DELETE等。
和 SQL 一样,可以分为 DDL(数据定义语言)、DML(数据操作语言)、DQL(数据查询语言)。
3.1 DDL——数据定义语言
3.1.1 CREATE
CREATE 命令用于创建一张新的数据库表,也可以用于创建一张数据库表的视图。
3.1.2 ALTER
ALTER 命令用于修改数据库一张已存在的表,支持更新表的字段名称、更新字段类型等操作。
3.1.3 DROP
DROP 命令用于删除数据库一张已存在的表,或者删除数据库表的视图。
3.2 DML——数据操作语言
3.2.1 INSERT
INSERT 命令用于在一张已存在的数据表中新增一条记录。
3.2.2 UPDATE
UPDATE命令用于在一张已存在的数据表中修改一条记录。
3.2.3 DELETE
DELETE命令用于在一张已存在的数据表中删除一条记录。
3.3 DQL——数据查询语言
3.3.1 SELECT
SELECT命令用于在若干张已存在的数据表中查询若干记录。
四、SQLite 的语法示例
本章将演示 SQLite 部分语法,完整演示在接下来的章节中逐步进行。
4.1 数据库层级——创建数据库
可以使用 .open 命令创建新的数据库,也可以用来打开已存在的数据库。
.open test.db
如下图所示。
执行后,SQLite 的安装目录下会出现 test.db 文件,如下图所示。
数据库创建完成后,可以使用 .databases
命令查看已创建的数据库列表,如下图所示。
4.2 数据表层级——创建学生表
SQLite 的 DDL(数据定义语言)可以帮助我们为数据库创建表,基本语法如下所示。
CREATE TABLE 数据库名.表名( 字段名1 数据类型 PRIMARY KEY(主键), 字段名2 数据类型, 字段名3 数据类型, ..... 字段名N 数据类型, );
比如需要创建一个学生表,学生有学号、姓名、年龄、手机号字段,创建的语句如下。
CREATE TABLE test.student( CODE CHAR(50) PRIMARY KEY NOT NULL, NAME CHAR(50) NOT NULL, AGE INT NOT NULL, mobile CHAR(50) NOT NULL );
输入命令后按回车即可,如下图所示。
接着可以使用 .tables
命令查看已创建的数据库列表,如下图所示。
4.3 数据层级——新增学生数据
SQLite 的 INSERT INTO 语句可以帮助我们向数据库的表中新增新的数据。
语句的基本语法是
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN);
或者可以省略列名,变成这样,这个语法和 SQL 比较类似。
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
如果要新增一位学生,学号为 001
,姓名为 zwz
,年龄为 18
,手机为 13600000001
,则新增语句为
INSERT INTO student (CODE, NAME, AGE, MOBILE) VALUES ('001', 'ZWZ', 18, '13600000001');
执行后,若没报错则为成功,如下图所示。
最后可以使用 SELECT 语句查询新增的数据,如下所示。
SELECT * FROM "test"."student" LIMIT 1000;
五、小结
SQLite
虽然没有像 MySQL
、SQL Server
、Oracle
那样热门,但 SQLite
也有它的优势,比如所占体积小、免安装等,有着自己的使用场景,值得被开发者去学习。
SQLite
的下载安装将在第二节进行讲解,以上内容可供初学者简单做个了解,谢谢支持!