嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++)

这篇具有很好参考价值的文章主要介绍了嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

一、sqlite概念和特性

二、sqlite安装

三、sqlite3数据类型 

四、sqlite数据库约束

五、sqlite常用命令 

六、SQL语句(增删改查)

七、sqlite使用实例(教学管理数据库)

总结


前言

数据在实际工作中应用非常广泛,数据库的产品也比较多,oracle、DB2、SQL2000、mySQL;基于嵌入式linux的数据库主要有SQLite, Firebird, Berkeley DB, eXtremeDB。

本文主要讲解数据库SQLite,通过这个开源的小型的嵌入式数据库带领大家掌握一些基本的数据库操作,这些操作在很多系统中都是通用的,可谓学一通百。


一、sqlite概念和特性

概念:

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。

特性:

  1. 零配置一无需安装和管理配置;

  2. 储存在单一磁盘文件中的一个完整的数据库;

  3. 数据库文件可以在不同字节顺序的机器间自由共享;

  4. 支持数据库大小至2TB;

  5. 足够小,全部源码大致3万行c代码,250KB;

  6. 比目前流行的大多数数据库对数据的操作要快。

二、sqlite安装

现在运行的主要是sqlite3版本,在ubuntu下安装也非常方便。

安装命令:

sudo apt-get install sqlite sqlite3   安装应用程序
sudo apt-get install libsqlite3-dev   安装库+头文件,用代码操作数据库必须安装

查看版本号:输入命令 sqlite3进入操作界面,输入命令.version,即可查看详细版本号。

嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++),Ubantu和C语言学习,数据库,sqlite,ubuntu

 也可以使用下面命令,安装图形化操作工具:

sudo apt-get install sqlitebrowser    图形化工具建立数据库

 除此之外,还可以部署在windows下,本文只讨论ubtuntu下,采用命令行方式来操作数据库。

三、sqlite3数据类型 

操作数据库,主要就是操作表,表的每一列内容都有一定数据类型,比如整型值、字符串、布尔型等。

Sqlite3主要数据类型如下:

数据类型 定义
NULL 表示该值为NULL值。
INTEGER 无符号整型值。
REAL 浮点值。
TEXT 文本字符串,存储使用的编码方式为UTF-8、UTF-16BE、UTF-16LE。
BLOB 存储Blob数据,该类型数据和输入数据完全相同,1表示true,0表示false。

同时sqlite3也接受如下的数据类型:

数据类型 定义
smallint 16位的整数。
interger 32位的整数。
decimal(p,s) 精确值p是指全部有几个十进制数,s是指小数点后可以有几位小数。如果没有特别指定,则系统会默认为p=5 s=0 。
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
graphic(n) 和 char(n) 一样,不过其单位是两个字节, n不能超过127。这个形态是为了支持两个字节长度的字体,如中文字。
vargraphic(n) 可变长度且其最大长度为n的双字元字串,n不能超过2000
date 包含了 年份、月份、日期。
time 包含了 小时、分钟、秒。
timestamp 包含了 年、月、日、时、分、秒、千分之一秒。

四、sqlite数据库约束

表的每一列都有一些限制属性,比如有的列的数据不能重复,有的则限制数据范围等,约束就是用来进一步描述每一列数据属性的。SQLite 数据库常用约束如下:

名称 定义
NOT NULL - 非空
UNIQUE 唯一
PRIMARY KEY 主键
FOREIGN KEY 外键
CHECK 条件检查
DEFAULT 默认

非空 NOT NULL

有一些字段我们可能一时不知到该填些什么,同时它也没设定默认值, 当添加数据时,我们把这样的字段空着不填,系统认为他是 NULL 值。但是还有另外一类字段,必须被填上数据,如果不填,系统就会报错。这样的字段被称为 NOT NULL 非空字段,需要在定义表的时候事先声明。

 唯一 UNIQUE

除了主列以为,还有一些列也不能有重复值。

主键 PRIMARY KEY

一般是整数或者字符串,只要保证唯一就行。在 SQLite 中,主键如果是整数类型,该列的值可以自动增长。

外键 FOREIGN KEY

我们的数据库中已经有 Teachers 表了,假如我们再建立一个 Students 表, 要求 Students 表中的每一个学生都对应一个 Teachers 表中的教师。很简单,只需要在 Students 表中建立一个 TeacherId 字段,保存对应教师的 Id 号, 这样,学生和教师之间就建立了关系。问题是:我们有可能给学生存入一个不在 Teachers 表中的 TeacherId 值, 而且发现不了这个错误。这种情况下,可以把 Students 表中 TeacherId 字段声明为一个外键, 让它的值对应到 Teachers 表中的 Id 字段上。这样,一旦在 Students 表中存入一个不存在的教师 Id ,系统就会报错。

默认值 DEFAULT 

有一些特别的字段列,在每一条记录中,他的值基本上都是一样的。只是在个别情况下才改为别的值,这样的字段列我们可以给他设一个默认值。

条件检查 CHECK 

某些值必须符合一定的条件才允许存入,这是就需要用到这个 CHECK 约束。

五、sqlite常用命令 

命令 功能
.help 可显示shell模式中可使用的所有命令列表
.database 显示数据库信息;包含当前数据库的位置
.mode  column 使得SQL语句处理的结果以列对齐的方式显示
.mode    list column
.headers on/off 打开关闭列标题显示开关,以使得查询结果在屏幕显示时具有列标题
.tables 列出当前打开的数据库中共有多少张表
.exit 退出SQLite环境
.schema foods 显示表foods 创建时的SQL语句
.schema 显示所有表被创建时的语句
.nullvalue STRING 查询时用指定的串代替输出的NULL串 默认为.nullvalue ''
.show 显示shell模式中定义的与输出相关的一些设置
.output file.csv 设置输出文件格式为CSV,文件名为file.csv
.separator 设置select语句输出的列数据间以“ ,”分隔
.output stdout 恢复输出内容到标准输出设备(屏幕)

【注意】sqlite的命令都是 . 开头的,操作语句前面是没有 . 的。 

六、SQL语句(增删改查)

1.针对表
                   :(创建)
                  (1)普通创建表
                            原型:create table 表名 (列名 列的类型,列名 列的类型...);
                            例子:create table kk(name char[30],fd int);
                  (2)避免重复创建表
                            原型:create table if not exists 表名(列名 列的类型,列名 列的类型...);
                            例子:create table if not exists kk(name char[30],fd int);
                    查:
                        .table
                        .tables
                    
                    
                        原型:drop table 表名; 
                        例子: drop table kk;
                        
                    :(只能增加列,不能减少)
                        原型: alter table 表名 add column 列名 列名类型;
                        例子: alter table kk add column online int;

2.针对数据,在已有表的基础上
                       
                        原型:insert into 表名 values(每一列的值);
                        例子:insert into kk values("xiaohua",4,1,);
                             insert into kk values("GGB",5,0,);
                    
                        查(表中数据)
                   (1)查看所有
                            原型:select * from 表名;
                            例子:select * from kk;
                   (2)查看单独数据
                            原型:select * from 表名 where 条件;
                            例子: select * from kk where name == "ggb";
                            
                          删除
                          原型:delete from 表名 where 条件;
                          例子:delete from kk where online == 0;
                        
                         修改
                         原型:update 表名 set 列=值,列=值 where 条件;
                         原型:update kk set name = "ikun",online = 1 where name == "ggb"; 

七、sqlite使用实例(教学管理数据库)

数据库的操作语句主要是增删改查,下面我们通过一些实例让大家了解数据库的这些基本操作。

表类型

假设我们要创建一个教学管理的数据库jxgl.db,数据库中要保存学生表STUDENT。

sno sname ssex sage sdept
95001 yikou m 21 cs
95002 peng m 21 cs

 根据我们的常识,可知每一列的数据有以下特性:

  • sno      学号:整型值,每个人学号是唯一的,学校一般用学号来区分所有的学生,而且一般学号是递增的,所以我们设置sno为primary key;

  • sname 姓名:一般是字符串,可以重复,但是不能为空;

  • ssex    性别:字符串,可以为空;

  • sage   年龄:整型值,假定年龄要大于14;

  • sdept  专业:字符串,可以为空,此处我们默认为'CS'。 

下面我们一步步实现这个数据库的所有操作。

创建教学管理“jxgl”数据库 

数据库的打开和退出,使用如下命令。

嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++),Ubantu和C语言学习,数据库,sqlite,ubuntu

 创建表:

 CREATE TABLE IF NOT EXISTS STUDENT(Sno integer primary key,   Sname text not null,   Ssex text,Sage integer check(Sage>14),Sdept text default 'CS');

 该表的属性就是按照上一节表属性 执行结果:

嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++),Ubantu和C语言学习,数据库,sqlite,ubuntu

 查看表:

嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++),Ubantu和C语言学习,数据库,sqlite,ubuntu

看到STUDENT,说明该表创建好了。【注意】

  1. 操作语句不是命令,前面不要加. ;

  2. 操作语句后面一定要;结尾,如果漏掉了,一定要补上分号;

  3. 操作语句对字母的全角半角很敏感,所有的符号都要用半角。

 插入数据

插入数据采用insert into语句来实现,如下所示:

insert  into  student  values('95001','李勇','M',20,'CS');
insert  into  student  values('95002','刘晨','F',19,'IS');
insert  into  student  values('95003','王敏','F',18,'MA');
insert  into  student  values('95004','张立','M',18,'IS');

查看表

用SELECT语句查看表中的内容:

SELECT * FROM STUDENT;

其中的 * 表示查看所有的数据信息。

嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++),Ubantu和C语言学习,数据库,sqlite,ubuntu

  有没有看到,结果看起来不舒服啊,下面我们来调整下显示格式: 

sqlite> .headers on          显示列名
sqlite> .mode column         列对齐 

  嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++),Ubantu和C语言学习,数据库,sqlite,ubuntu

删除一行信息 

delete from student where sname='一口';

嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++),Ubantu和C语言学习,数据库,sqlite,ubuntu

 由上图可见,名字为“一口”的那条记录被删除了。

修改一条记录的某个内容

update student SET sage=29 WHERE sname='张立';

嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++),Ubantu和C语言学习,数据库,sqlite,ubuntu

修改数据表结构。 

修改表结构,需要用到语句ALTER TABLE。下面我们向STUDENT表增加“spwd”列,其数据类型为TEXT型,用SELECT命令查看表中内容。

alter table STUDENT ADD spwd TEXT default '123456';

嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++),Ubantu和C语言学习,数据库,sqlite,ubuntu

修改表名字 

alter table student rename to stu;

嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++),Ubantu和C语言学习,数据库,sqlite,ubuntu

删除数据表

drop table STUDENT;

删除列 

sqlite3没有实现删除一列的命令,要实现这个操作,需要先将该表拷贝到一个新表,但是只集成需要的列,要删除的列不继承过来。可以 用以下方式操作删除一列:

sqlite> create table test as select sno, sname,ssex,sage,sdept  from stu;
sqlite> drop table stu;
sqlite> alter table test rename to stu;

嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++),Ubantu和C语言学习,数据库,sqlite,ubuntu

由上图可知,我们刚才增加的列spwd被删除了。


总结

        本篇文章针对嵌入式数据库sqlite3【基础篇】基本命令操作进行详细讲解,希望能够帮到大家!

        以后还会给大家展现更多关于嵌入式和C语言的其他重要的基础知识,感谢大家支持懒大王!

       希望这篇博客能给各位朋友们带来帮助,最后懒大王请来过的朋友们留下你们宝贵的三连以及关注,感谢你们!文章来源地址https://www.toymoban.com/news/detail-714973.html

到了这里,关于嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式数据库:SQLite3的安装和使用说明

    目录 一,SQLite简介 ① SQLite与传统服务器型数据库 ② SQLite与MySQL比较 ③ 基于嵌入式的数据库种类 二,SQLite数据库安装 ① 输入命令安装 ② 网页安装 ● 安装步骤 三,SQLite命令用法 ● 创建一个数据库 ● 创建一张表格 ● 插入一条记录 ● 查看数据库的记录 ● 删除一条

    2024年01月21日
    浏览(84)
  • BL302嵌入式ARM控制器进行SQLite3数据库操作的实例演示

    本文主要讲述了在钡铼技术BL302嵌入式arm控制器上运行 SQLite3 数据库的命令示例。SQLite3 是一个轻型的嵌入式数据库,不需要安装数据库服务器进程,占用资源低且处理速度快。 首先,需要将对应版本的 SQLite3 文件复制到设备的 /usr/ 目录下,并解压缩。然后进入 /usr/lib 目录,

    2024年02月14日
    浏览(48)
  • 嵌入式数据库sqlite3【基础篇】基本命令操作,小白一看就懂(C/C++)

    目录 前言 一、sqlite概念和特性 二、sqlite安装 三、sqlite3数据类型  四、sqlite数据库约束 五、sqlite常用命令  六、SQL语句(增删改查) 七、sqlite使用实例(教学管理数据库) 总结 数据在实际工作中应用非常广泛,数据库的产品也比较多,oracle、DB2、SQL2000、mySQL;基于嵌入式

    2024年02月08日
    浏览(56)
  • 嵌入式培训机构四个月实训课程笔记(完整版)-Linux系统编程第八天-Linux sqlite3数据库(物联技术666)

       更多配套资料CSDN地址:点赞+关注,功德无量。更多配套资料,欢迎私信。 物联技术666_嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记-CSDN博客 物联技术666擅长嵌入式C语言开发,嵌入式硬件,嵌入式培训笔记,等方面的知识,物联技术666关注机器学习,arm开发,物联网,嵌入式硬件

    2024年01月25日
    浏览(65)
  • 嵌入式数据库之SQLite

    1.SQLite简介 轻量化,易用的嵌入式数据库,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据 库用于管理多端设备,更加复杂。 SQLite是一个无服务器的数据库,是自包含的。这也称为嵌入式数据库,这意味着数据库引擎作 为应用程序的一部分运行。 My

    2024年02月15日
    浏览(44)
  • lv9 嵌入式开发 数据库sqlite

    数据(Data)               能够输入计算机并能被计算机程序识别和处理的信息集合 数据库 (Database)             数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合 大型数据库 Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广

    2024年02月05日
    浏览(63)
  • 嵌入式中如何用C语言操作sqlite3(07)

    sqlite3编程接口非常多,对于初学者来说,我们暂时只需要掌握常用的几个函数,其他函数自然就知道如何使用了。 本篇假设数据库为my.db,有数据表student。 no name score 4 嵌入式开发爱好者 89.0 创建表格语句如下: sqlite3_open sqlite3_close sqlite3_get_table 举例 下面比如我们要显示st

    2024年02月07日
    浏览(47)
  • 一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库

    今天给大家分享一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库:LiteDB。本篇文章主要是介绍LiteDB和在.NET中如何使用。 LiteDB 是一个小巧、快速和轻量级的 .NET NoSQL 嵌入式数据库。 无服务器的 NoSQL 文档存储 简单的 API,类似于 MongoDB 100% 的 C# 代码支持 .NET 4.5 / NETStandard 1.

    2024年02月02日
    浏览(44)
  • Python数据库模块(sqlite3,SQLite3)

    创建数据库:在控制台sqlite3 name sqlite3.connect(database [,timeout ,other optional arguments]) 打开数据库;如果指数据库存在则返回一个连接对象,如果不存在则会创建一个数据库; connection.cursor() 创建一个cursor; cursor.execute(sql) 执行一个sql语句,该语句可以被参数化; connection.execut

    2024年03月19日
    浏览(61)
  • 数据库--Sqlite3

     1、思维导图  2sqlite3在linux中是实现数据的增删,改 #includemyhead.h int main(int argc, const char *argv[]) {         //1、定义一个数据库句柄指针         sqlite3* ppDb =NULL;         //2、创建或打开数据库         if(sqlite3_open(\\\"./mydb.db\\\",ppDb)!=SQLITE_OK)         {                 printf(

    2024年04月27日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包