热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQLite数据库简介

SQLite数据库简介1.介绍SQLite是D.RichardHipp用C语言编写的开源嵌入式数据库引擎。SQLite是一种轻量级的小型数据库,虽然比较小,但是功能相对比

SQLite数据库简介

1. 介绍

SQLite 是 D.Richard Hipp 用 C 语言编写的开源嵌入式数据库引擎。SQLite 是一种轻量级的小型数据库,虽然比较小,但是功能相对比较完善,一些常见的数据库基本功能也具有,它支持大多数的 SQL92 标准,并且可以在所有主要的操作系统上运行。因为它占用系统资源很少,Android 系统中也主要采用 SQLite 数据库引擎。

SQLite 实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保 SQLite 的二进制文件存在即可开始创建、连接和使用数据库。

2. 准备

在操作之前,我们要先下载SQLite数据库,官方的下载页面是 http://www.sqlite.org/download.html,由于是在Windows下测试,所以我选择了 Precompiled Binaries For Windows 下面的 sqlite-shell-win32-x86-3081101.zip 和 sqlite-analyzer-win32-x86-3081101.zip 的zip包,前者是SQLite数据库引擎,后者是SQLite数据库分析器,主要用于分析数据库的状态等信息,大家也可以根据自己的情况去下载。解压后的文件:

解压

3. 创建数据库

语法:

sqlite3.exe [数据库名字.后缀名]

示例:

D:\Program Files\SQLite>sqlite3.exe mydb.db
SQLite version 3.8.11.1 2015-07-29 20:00:57
Enter ".help" for usage hints.
sqlite>

创建的数据库后缀名可以是任意的,不过注意一点就是:在命令框下执行创建数据库的时候,如果没有为数据库创建表格,则看不见数据库文件,所以必须创建表格后才能看见数据库文件。

我们可以使用 .databases 命令查看数据库文件信息:

sqlite> .databases
seq name file

--- --------------- -------------------------------------------

0 main D:\Program Files\SQLite\mydb.db

注意,SQLite中的命令是以 .(小圆点) 开头的。

4. 创建表

语法:

CREATE TABLE 表名(
列名 [类型] [说明],
列名 [类型] [说明] [, ...]
);

示例:

sqlite> CREATE TABLE test(
...> id INTEGER PRIMARY KEY AUTOINCREMENT,
...> name VARCHAR(20),
...> age date);
sqlite>

建表语句以;(分号)结束。在 SQLite 数据库中创建表格字段的时候,允许不为字段申明数据类型。

我们创建表后,可以使用 .tables 命令去查看已有的表,可以使用 .schema 命令去查看表的结构。

sqlite> .tables
test
sqlite> .schema
CREATE TABLE test(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(20),
age date);
sqlite>

在 .schema 命令后没有表名,则列出所有表的建表语句。

5. 修改表

SQLite 的 ALTER 功能只是 ALTER TABLE 的一个子集,只有部分功能,比如重命名表名,新增列到现有表中。SQLite 不支持现有列的重命名,删除和修改。

修改表名语法:

ALTER TABLE 旧表名 RENAME TO 新表名;

添加列语法:

ALTER TABLE 表名 ADD COLUMN 列名 [数据类型] [说明];

示例:

sqlite> ALTER TABLE test RENAME TO users;
sqlite> .tables
users
sqlite> ALTER TABLE users
...> ADD COLUMN address VARCHAR(100);
sqlite> .schema
CREATE TABLE "users"(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(20),
age date, address VARCHAR(100));
sqlite>

6. 删除表

语法:

DROP TABLE 表名;

示例:

sqlite> DROP TABLE users;
sqlite> .tables
sqlite>

7. 插入数据

语法:

INSERT INTO 表名 (列名, 列名, ...) VALUES (列值, 列值, ...);

示例:

sqlite> INSERT INTO users (id, name, age, address) VALUES (1, '小明', 25, '四川成都');

我们也可以从已有的 .sql 文件中导入 SQL 语句执行来插入数据:

sqlite> .read mydb.sql

查看已插入数据:

sqlite> SELECT * FROM users;
1|小明|25|四川成都
2|小刚|28|四川绵阳
3|小红|18|四川绵阳
4|小美|23|北京
5|小丽|22|广东深圳

8. 修改数据

语法:

UPDATE 表名 
SET 列名=列值 [, 列名=列值...]
[WHERE 条件];

示例:

sqlite> UPDATE users SET age=15 WHERE id=1;
sqlite> UPDATE users SET age=18, address='广东广州' WHERE id=5;

注意,不跟 WHERE 子句的 UPDATE 语句会将表中所有记录做修改操作。

9. 删除数据

语法:

DELETE FROM 表名 [WHERE 条件];

示例:

sqlite> DELETE FROM users WHERE id=2;

注意,不跟 WHERE 子句的 DELETE 语句会将表中所有记录清空。

10. 查询

语法:

SELECT 列名[,列名...]
FROM 表名
[WHERE 条件];

示例1:

sqlite> SELECT id, name FROM users;
1|小明
3|小红
4|小美
5|小丽

也可以将列名换为 * 号,代替表中的所有列:

sqlite> SELECT * FROM users;
1|小明|15|四川成都
3|小红|18|四川绵阳
4|小美|23|北京
5|小丽|18|广东广州

可以使用 .mode column 将显示设置为列显示模式,.headers on 显示列名。

sqlite> .mode column
sqlite> .headers on
sqlite> SELECT * FROM users;
id name age address
---------- ---------- ---------- ----------
1 小明 15 四川成都
3 小红 18 四川绵阳
4 小美 23 北京
5 小丽 18 广东广州
sqlite>

示例2,根据条件查询:

sqlite> SELECT * FROM users WHERE age>20;
id name age address
---------- ---------- ---------- ----------
4 小美 23 北京
sqlite>

11. 小结

由于资源占用少、性能良好和零管理成本,嵌入式数据库有了它的用武之地,像Android、iPhone都有内置的 SQLite 数据库供开发人员使用,它的易用性可以加快应用程序的开发,并使得复杂的数据存储变得轻松了许多。


推荐阅读
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
author-avatar
尽做好风水_549_881
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有