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

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


SQLite 补操作复制表以及修改表结构

内容介绍:

复制表以及修改表结构

补充介绍组合操作,首先查看表的内容:

sqlite> .schema

CREATE TABLEtbl(id interger ,name text, addr text);

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

sqlite> select*from tbl;

id name a ddr

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

101 zs bj

102 ls tj

103 ww sh

104 zs cd

104 xw cq

sqlite> select*from tbl2;

sqlite>

有两张表,tbl 内容如上,tbl2 内容为空。

Tbl2 的 id 类型已经设置成主键,如果要将 tbl 内容复制到 tbl2 中是不可能的,只有重新创建 tbl2,在创建的同时复制 tbl 内容。

第一种情况,复制表:

/删除 tbl2,创建新表 tbl2,内容来源于 tbl

sqlite> drop table tbl2;

sqlite> .schema

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

sqlite- create table tbl2 as select *from tbl;

注:as 是指定复制来源

sqlite> .schema

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

CREATE TABLE tbl2(id INT, name TEXT , addr TEXT);

/再次查看,此时 tbl2 和 tbl 内容一致

sqlite> select*from tbl2;

id name addr

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

101 zs bj

102 ls tj

103 ww sh

104 zs cd

104 xw c q

如果是复制一部分内容:

sqlite> .schema

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

sqlite> create table tbl2 as select *from tbl where id=104;

sqlite> select*from tbl2;

id name addr

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

104 zs c d

104 xw cq

sqlite>

第二种情况,修改表结构

/创建新的表,指定信息

sqlite>create table ntbl(id interger primary key , name text ,addr text);.

sqlite> .schema

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

CREATETABLE tbl2(id INT, name TEXT , addr TEXT);

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

/导入数据

sqlite> insert into ntbl(id ,name , addr) select id ,name , addr from tbl;

Error: UNIQUE constraint failed: ntbl.id

sqlite>

注意:主键要求不能重复,但是 tbl 中有两个 104

如果有重复,可以不复制重复的内容或者将其删除。

sqlite>delete from tbl where addr='cq';

sqlite> insert into ntbl(id, name , addr) select id,name , addr from tbl;

sqlite> select* from ntbl;

id name a ddr

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

101 zs bj

102 ls tj

103 ww sh

104 zs cd

/修改表名

之前的 tbl 是没有主键的,现在要加上主键要将tbl删除

sqlite> drop table tbl;

sqlite> .schema

CREATETABLE tbl2(id INT,nameTEXT , addr TEXT);

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

sqlite>

sqlite> alter table ntbl rename to tbl;

sqlite> .schema

CREATE TABLE tbl2(id INT, name TEXT , addr TEXT);

CREATE TABLE IF NOT EXISTS"tbl"(id interger primary key ,name text,addr text;

sqlite>select * from tbl;

id name addr

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

101 zs bj

102 ls tj

103 ww sh

104 zs cd

此时,tbl 的 id 就带有主键。

插入数据,执行全值插入:

sqlite> insert into tbl values(105,'xw','cq');

sqlite> select * from tbl;

id name addr

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

101 zs bj

102 ls tj

103 ww sh

104 zs cd

105 sw cq

现在要求系统自动生成主键,如果只输入内容,不输入主键,可以在主键位置输入( null 大小写都可),之后系统会自动生成:

sqlite> irsert into tbl values (NULL, 'xl' , 'hb' );sqlite> select*from tbl;

id name addr

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

101 zs bj

102 ls tj

103 ww sh

104 zs cd

105 sw cq

xl hb

理论上输入 null,作为主键的一列会在已有基础上递增的,但不同平台的效果不一样,这个平台不能递增,需要手动修改。

sqlite> update tbl set id=106 where name='xl';

sqlite> select*from tbl;

id name addr

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

101 zs bj

102 ls tj

103 ww sh

104 zs cd

105 sw cq

106 xl hb

正常情况下,主键会自动修改。

以上就是本节课需要补充的内容。

笔记:

1、复制一张表:

create table tbl2 as select * from tbl;

2、复制一张表的部分内容:

create table tbl2 as select * from tbl where id=104;

3、修改表的结构:

第一步,创建新表:

create table ntbl(id interger primary key,name text,addr text); 第二步,导入数据(如果有主键,要注意数据不要重复):

insert into ntbl(id, name , addr) select id,name , addr from tbl 第三步,修改表名:

drop table tbl;

alter table ntbl rename to tbl;

值得收藏:当向数据库导入大量数据时,mysql主键唯一键重复插入,如何丝滑操作并不导入重复数据呢
最近要导入大量数据到数据库,数据库中有数据列要求唯一的,也就是唯一键,但是我拿到的数据有部分重复,一运行就会出错,如果把重复数据找出来,删除后在导入,太麻烦了,所以想要丝滑导入,并忽略重复数据,有了下面的解决方案: 本次案例使用phpmyadmin进行演示
MySQL 数据库利用alter语句修改表字段属性实例演示,如何拓展表字段长度,sql语句修改表字段名称和类型
MySQL 数据库利用alter语句修改表字段属性实例演示,如何拓展表字段长度,sql语句修改表字段名称和类型
SQL Server 复制表结构以及数据,去除表中重复字段--复制另一个数据库中的某张表的结构及数据--select * from Test.dbo.TestTable(查询表中所有数据) --into [表名] 插入当前数据库新表,如果没有该表就创建 select * into TestCopy from Test.
技术图谱:由专家组参与技术图谱的绘制与编写,知识与实践的结合让开发者们掌握学习路线与逻辑,快速提升技能 电子书:电子书由阿里内外专家打造,供开发者们下载学习,更与课程相结合,使用户更易理解掌握课程内容 训练营:学习训练营 深入浅出,专家授课,带领开发者们快速上云 精品课程:汇集知识碎片,解决技术难题,体系化学习场景,深入浅出,易于理解 技能自测:提供免费测试,摸底自查 体验实验室:学完即练,云资源免费使用