开发者学堂课程【嵌入式之 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