SQLite 插入和修改操作 | 学习笔记

简介: 快速学习 SQLite 插入和修改操作

开发者学堂课程【嵌入式之 RFID 开发与应用2020版:SQLite 插入和修改操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/665/detail/11225


SQLite 插入和修改操作

内容介绍:

一、修改表: alter 语句

二、删除表:drop table 语句

三、插入新行:insert into 语句

四、修改表中的数据:update 语句

 

一、修改表: alter 语句

在已有的表中添加或删除列以及修改表名。

语法: (添加、删除 -sqlite3 暂不支持、重命名)

alter table 表名 add 列名 数据类型;

sqlite> alter table persons add sex text;

alter 不能对表结构进行修改,可以在表中增加列、列属性

什么是修改表结构,比如说之前创建一张表:

sqlite> .tablespersons

sqlite> .schema

CREATE TABLE persons (id integer,name text,addr text);

假设 id integer,id 不具有主键约束,alter 就不能做到将 id 改成具有主键约束。

语法:( alter 修改表名)

alter table 表名 rename to 新表名;

sqlite> .tables

persons

sqlite> alter table persons rename to new_persons;

sqlite> .tables

new_persons

接下来介绍修改表,如修改如下表:

sqlite> .schema

CREATE TABLE[stu_info](

[id] int,-

[name] varchar(255),

[city] VARCHAR(244),

[score]_int) ;

如何进行修改:

sqlite> alter table stu_info rename to stu ;

再次查看:sqlite> .schema

CREATE TABLE IF NOT EXISTS "stu" (

[id] int,

[name] varchar(255),

[city] VARCHAR(244),

[score] int);

同样的方法也可以查看:

sqlite> select *from stu ;

200800|jiangbo| 成都 |11

200807| 李勇| 甘肃 |90

200815| lucy | lanzou |10

200811 | obama | 美国 |99

6804570|tv| |6429856

200912| 张三 | 北说 |34

200988| 李四 | 北京 |80

还可以在表中增加一列属性,根据 sqlite> alter table persons add sex text; 得知是直接加在 add 后,假如加 num integer:

sqlite> alter table stu add num integer;

sqlite> .schema

CREATE TABLE IF NOT EXISTS "stu"(

[id] int,

[name] varchar(255),

[city] VARCHAR(244),

[ score] int,num integer);

表的结构中出现 num integer

查看表的内容,内容如下:

sqlite> select*from stu ;

200800|jiangbo|成都|11|

200807|李勇|甘肃|90|

200815ilucy [lanzou |10|

200811iobama|美国|99|

6804570|tv| |6429856|

200912|张三|北说|34|

200988|李四|北京|80|

根据内容是看不出什么的,我们可以再增加一个 header:

sqlite> .header on

200800|jiangbo|成都|11|

200807|李勇|甘肃|90|

200815|lucy [lanzou |10|

200811|obama|美国|99|

6804570|tv| |6429856|

200912|张三|北说|34|

200988|李四|北京|80|

也看不出什么效果,所以:

sqlite>.mode column

sqlite> select*from stu;

id       name     city     score      num

200800  jiangbo   成都     11

200807   李勇     甘肃     90

200815   lucy     lanzou   10

200811   obama   美国     99

6804570   tv               6429856

200912   张三     北说     34

200988   李四     北京     80

Num就是刚刚增加的,我们不能修改表中的结构,如果一定要修改,可以通过创建一个新表,将数据导入新表,之后将旧表删除的方法完成。

Alter 语句是不支持删除表的,所以接下来要介绍删除表。

 

二、删除表:drop table 语句

用于删除表(表的结构、属性以及表的索引也会被删除)

语法:

drop table 表名称;

sqlite> .tables

persons

sqlite> drop table persons;

sqlite> .tables

sqlite>

在进行删除之前,先备份一个表。

sqlite> create table nstu as select*from stu;

sqlite> .schema

CREATE TABLE IF NOT EXISTS "stu"(

[id] int,

[name] varchar(255),

[city] VARCHAR(244),

[score] int, num integer) ;

CREATE TABLE nstu(

id INT,

name TEXT,

city TEXT,

score INT,

num INT

);

这时就可以将其中一个表删除,剩下的表和之前的 stu 表内容一致。

sqlite>.schema

CREATE TABLE nstu(

id INT,

name TEXT,

city TEXT,

score INT,

num INT

);

sqlite> select*from nstu;

id       name     city     score      num

200800  jiangbo   成都     11

200807   李勇     甘肃     90

200815   lucy     lanzou   10

200811   obama   美国     99

6804570   tv               6429856

200912   张三     北说     34

200988   李四     北京     80

以上就是删除操作。

 

三、插入新行:insert into 语句

插入有两种方式,一种是插入时将所有元素都赋值,二是给部分元素赋值。

1.全部赋值

给一行中的所有列赋值。

语法: insert into 表名 values (列值1,列值2,列值3,列值4,.…);注意: 当列值为字符串时要加上‘’号。

在终端下输入:

sqlite> create table persons (id integer,name text,addr text)

sqlite> insert into persons values (1, 'lucy ', 'beijing' );

2.部分赋值

给一行中的部分列赋值

语法: insert into 表名(列名 1,列名 2,gm, ) values (列值1,列值2,.….);

进行赋值操作:

sqlite> .exit

edu@edu : sqlite$ ls

stu. dbstu_info.dbt.db

edu@edu : sqlite$ sqlite3 stu . db

sQLite version 3.22.0 2018-01-2218:45:57

Enter ".help" for usage hints.

sqlite> .schema

CREATE TABLE tbl(id interger,name text, addr text);

CREATE TABLE tbl2(id interger primary key,name text, addr text);

这里有两张表,现在对第一张表赋值,是全部赋值:

sqlite= insert into tbl values ( 101, 'zs ' ,'bj' );

sqlite> select *from tbl;

101|zs| bj

sqlite insert into tbl values ( 102, 'ls' , 'tj' );

部分赋值:

sqlite> insert into tbl (id, name) values ( 103, 'ww ' );

sqlite> select *from tbl;

101|zs| bj

102ils|tj

103|ww|

以上就是全部插入和部分插入的基本流程。

 

四、修改表中的数据:update 语句

使用 where 根据匹配条件,查找一行或多行,根据查找的结果修改表中相应行的列值(修改哪一列由列名指定)。

语法:

update 表名 set 列 1= 值 1[,列 2= 值 2,..][匹配条件];

匹配: where 子句

where 子句用于规定匹配的条件。

操作符

描述

=

等于

<>

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

匹配条件语法:(基础)  where 列名操作符列值

在终端下输入:

sqlite> update pglrsons set id=2,addr='tianjing’ where name='peter';

数据库要牢记四点:增删查改  更新就是改,可以通过 update 修改表的内容,比如 103|ww|,它不存在地址但又存在,所以不属于 insert,如果要将内容补上,只能用 update。

sqlite> update tbl set addr=' sh' where id=103;

注:后面一定要有条件,指明修改的是哪一行的信息。

sqlite> select*from tbl;

101|zs|bj

102|ls|tj

103|ww|sh

Update 在修改时,匹配的条件比较多,比如可以他通过 where 进行匹配,可以查找一行和多行,原则上可以通过等号、不等号等等进行操作。

在查看时也可以用 where 进行操作,比如:

sqlite> select*from tbl where id>102;

103|ww|sh

Where 后可以跟多个条件。如果有多个条件要用空格隔开。

sqlite> select * from tbl where id between 102 and 105;

102|ls|tj

103|ww|sh

相关文章
|
6天前
|
存储 API 数据库
QML使用Sqlite数据库存储ListModel数据
本文介绍了在QML中使用Sqlite数据库存储ListModel数据的方法,包括如何创建数据库、读取数据、动态添加和删除数据,以及如何在程序启动和退出时与数据库同步数据。
|
6天前
|
数据库 数据库管理
qt对sqlite数据库多线程的操作
本文总结了在Qt中进行SQLite数据库多线程操作时应注意的四个关键问题,包括数据库驱动加载、加锁、数据库的打开与关闭,以及QsqlQuery变量的使用。
|
8天前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
2月前
|
人工智能 小程序 Java
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
本文介绍了一款名为PyWxDump的开源工具,它可以获取微信账户信息、解密SQLite数据库以查看和备份聊天记录。此工具适用于已登录电脑版微信的用户,通过GitHub下载后简单几步即可操作。适合对数据恢复感兴趣的开发者,但请注意合法合规使用并尊重隐私。
204 2
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
|
8天前
|
SQL 数据库 数据库管理
SQLite 创建数据库
SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库。您不需要任何特殊的权限即可创建一个数据。
13 0
|
10天前
|
JSON NoSQL 数据库
和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)
该文章详细介绍了TinyDB这一轻量级NoSQL数据库的使用方法,包括如何在Python3环境中安装、创建数据库、插入数据、查询、更新以及删除记录等操作,并提供了多个编程案例。
23 0
|
2月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
49 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
2月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
69 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
2月前
|
SQL 存储 小程序
【教程】navicat配合HTTP通道远程连接SQLite数据库
本文介绍了如何通过 Navicat Premium 工具配合 n_tunnel_sqlite.php 和 HTTP 通道远程连接服务器上的 SQLite 数据库。SQLite 是一种自给自足的、无服务器的 SQL 数据库引擎,由于其端口未对外开放,直接使用 Navicat 进行远程连接不可行。文章详细记录了使用 HTTP 通道实现远程连接的过程,包括定位本地 `ntunnel_sqlite.php` 文件,将其上传至服务器,并通过 Navicat 配置 HTTP 通道连接 SQLite 数据库的具体步骤。
52 0
【教程】navicat配合HTTP通道远程连接SQLite数据库
|
2月前
|
关系型数据库 Java MySQL
C#winform中使用SQLite数据库
C#winform中使用SQLite数据库
65 3
C#winform中使用SQLite数据库
下一篇
无影云桌面