Linux sqlite3 基本命令
备注:本文所有操作均在root用户下进行。
接下来,我们将开始SQLite3的实战之旅。需要说明的是,尽管本文演示基于root权限以确保流程的完整性,但在实际生产环境或日常开发中,强烈建议使用具备相应权限的普通用户账户进行操作,这遵循了最小权限原则,是保障系统安全的最佳实践。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
1、安装sqlite3
在Ubuntu系统中部署SQLite3数据库环境极为便捷。您只需通过终端执行以下apt-get命令,即可完成安装:
# apt-get install sqlite3
安装过程结束后,为了验证SQLite3是否成功安装并确认其版本,可以运行版本查询命令:
# sqlite3 -version
2、sqlite3常用命令
成功安装后,掌握其命令行工具的使用至关重要。SQLite3交互界面提供了一套独特的“点命令”(Dot-Commands),以点号(.)开头,用于数据库管理、环境配置及信息查看,这与标准的SQL语句有本质区别,请注意区分。
首先,我们需要连接到一个数据库。在终端中执行以下命令,会在当前目录创建(或打开已有的)一个名为test.db的数据库文件,并进入SQLite3命令行交互模式:
# sqlite3 test.db
连接成功后,提示符将变为 sqlite>。此时,您可以输入以下实用的点命令:
- 查看数据库信息:
sqlite> .database(此命令会显示当前连接的所有数据库文件及其路径) - 查看所有表的创建语句:
sqlite> .schema - 查看指定表的创建语句:在
.schema后加上表名即可:sqlite> .schema table_name - 以SQL形式导出表数据:
sqlite> .dump table_name(此功能常用于数据备份或迁移) - 设置显示分隔符:
sqlite> .separator symble。例如,若希望查询结果以冒号分隔显示,可执行:sqlite> .separator : - 设置显示模式:默认的
list模式可能不够清晰,可切换为column模式:sqlite> .mode column,使数据按列对齐,提升可读性。其他模式可通过.help查看。 - 万能帮助:若忘记命令,随时输入
sqlite> .help,即可获取完整的命令列表与简要说明。 - 调整列宽:
sqlite> .width width_value。例如,设置每列显示宽度为2个字符:sqlite> .width 2 - 显示当前所有设置:
sqlite> .show,可一次性查看当前的分隔符、显示模式、列宽等配置参数。 - 退出终端:操作完毕后,输入
sqlite> .quit或sqlite> .exit均可安全退出SQLite3交互环境。
3、sqlite3指令
了解完管理命令,我们进入核心部分——SQL数据操作指令。一个关键规则是:所有SQL指令必须以分号(;)作为结束符,否则SQLite会等待后续输入。单行注释使用两个减号(--)。
以下是一个包含多种约束的建表示例:
sqlite> create table student_table(Stu_no integer PRIMARY KEY, Name text NOT NULL, Id integer UNIQUE, Age integer CHECK(Age>6), School text DEFAULT ‘xx小学’);
这条语句创建了一个结构严谨的学生信息表,综合运用了主键、非空、唯一、检查及默认值等约束。
3.1 sqlite3存储数据的类型
SQLite采用动态类型系统,但为保持结构清晰,我们通常为字段声明亲和类型(Type Affinity),主要分为以下五类:
- NULL:表示空值。
- INTEGER:带符号整数,根据数值大小占用1、2、3、4、6或8字节存储空间。
- REAL:浮点数,采用8字节IEEE浮点数标准存储。
- TEXT:文本字符串,存储格式依赖于数据库编码(如UTF-8、UTF-16)。
- BLOB:二进制大对象,完全按照输入的原样存储,不做任何转换。
3.2 sqlite3存储数据的约束条件
数据类型定义了数据的种类,而约束条件则强制数据必须满足的规则,是保障数据完整性与一致性的关键:
- PRIMARY KEY - 主键:
1)该列的值必须唯一,不可重复,常用于标识每条记录,如学号。
2)主键会自动创建索引,能极大提升基于该列的查询速度。
3)若主键为INTEGER类型,可将其设置为自增(AUTOINCREMENT),简化数据插入操作。 - NOT NULL - 非空:为该约束的列插入NULL值会导致操作失败,确保关键字段必有值。
- UNIQUE - 唯一:确保该列中所有值都是唯一的(允许存在一个NULL值),适用于如身份证号等字段。
- CHECK - 条件检查:允许定义自定义验证规则。例如,
CHECK(Age>6)确保年龄大于6岁。 - DEFAULT - 默认值:当插入数据未指定该列值时,自动填充预设的默认值,能有效简化数据录入,适用于如“默认学校”这类场景。
3.3 sqlite3常用指令
掌握了基础概念后,以下是数据库日常增删改查(CRUD)的常用SQL指令详解:
1)建立数据表
create table table_name(field1 type1, field2 type1, ...);
示例:创建一个基础的学生信息表。
create table student_info(stu_no integer primary key, name text);
2)添加数据记录
insert into table_name(field1, field2, ...) values(val1, val2, ...);
示例:向学生表中插入一条新记录。
Insert into student_info(stu_no, name) values(0001, ‘alex’);
3)修改数据记录
update table_name set field1=val1, field2=val2 where expression;
WHERE子句用于精确指定需要更新的行,缺失此条件可能导致全表数据被意外修改。
示例:更新学号为0001的学生姓名。
update student_info set name=‘hence’ where stu_no=0001;
4)删除数据记录
delete from table_name [where expression];
重要警告:若不指定WHERE条件,将删除表中所有数据,此操作不可逆,执行前务必确认。
示例:删除学号为0001的学生记录。
delete from student_info where stu_no=0001;
5)查询数据记录
数据查询是数据库的核心功能,SELECT语句灵活且强大:
基本语法:select columns from table_name [where expression];
- 查询所有数据:
select * from table_name; - 限制输出条数:
select * from table_name limit val;(常用于快速预览或分页) - 升序排序:
select * from table_name order by field asc; - 降序排序:
select * from table_name order by field desc; - 条件查询:这是最常用的查询方式。
精确匹配:select * from table_name where expression;
多值匹配(IN):select * from table_name where field in (‘val1’, ‘val2’, ‘val3’);
范围匹配(BETWEEN):select * from table_name where field between val1 and val2; - 统计记录总数:
select count (*) from table_name; - 去重查询:
select distinct field from table_name;
当需要查看某列所有不重复的值时,DISTINCT关键字非常有用。
6)建立索引
当数据表记录量庞大时,为频繁查询的列创建索引可以显著提升检索性能,其作用类似于书籍的目录。
create index index_name on table_name(field);
示例:为学生表的stu_no字段创建索引。
create index student_index on student_table(stu_no);
索引创建后,SQLite在执行相关查询时会自动利用索引加速,效果显著。
7)删除数据表或索引
移除不再需要的数据库对象:
删除表:drop table table_name;
删除索引:drop index index_name;
严重警告:删除操作将永久移除表结构、索引及其所有数据,且无法撤销,请谨慎操作。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
sql语句中数据库别名命名和查询问题解析
查询出低于菜品平均价格的菜品信息 (展示出菜品名称、菜品价格) 问题1:为什么下面代码不对 select d name,d price,a vg(d price) from dish as d where d price < a vg(d price) 这行代码一拿出来,很多初学者都会犯迷糊,但其
SQLDeveloper表复制的实现
步骤 当数据量比较大时,相比一条条地执行INSERT语句,这种方法效率的提升是立竿见影的。不过,有个关键点需要留心:具体的操作逻辑是直接覆盖目标表原有数据,还是进行增量合并,这个取决于你的工具设置和表结构。稳妥起见,强烈建议你先自己创建一个测试用的Demo表演练一遍,摸清实际行为,避免在生产环境中间
SQLServer数据库表结构使用SSMS和Navicat导出教程
在数据库管理和开发过程中,导出表结构是一项常见的任务,尤其是在数据库设计、数据迁移、备份以及生成文档时。本文将详细介绍如何使用 SQL Server Management Studio (SSMS) 和 Na vicat 来导出 SQL Server 数据库的表结构,包括表名、字段名、数据类型、注释
MySQL8中的保留关键字陷阱之当表名“lead”引发SQL语法错误的解决方案
问题现象 很多开发者可能都踩过这个坑:一个原本运行得好好的业务系统,在执行下面这条再简单不过的查询时,突然就报错了。 SELECT COUNT(*) AS total FROM lead WHERE deleted_flag = 0 数据库抛出的错误非常明确,直指语法问题: You ha ve an
Mysql因为字段字符集编码的问题导致索引没生效的解决方案
深入解析SQL查询性能问题:字符集不一致导致的索引失效 SELECT s department_name AS departmentName, cps purchase_type AS purchaseType FROM settlement_records s LEFT JOIN common_p
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

