SQLite 补操作复制表以及修改表结构 | 学习笔记

简介: 快速学习 SQLite 补操作复制表以及修改表结构

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

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

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      cq

如果是复制一部分内容:

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       cd

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    addr

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

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;

相关文章
|
2月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
134 6
|
3天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
48 15
|
2月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
75 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
1月前
|
存储 SQL 数据库
数据库知识:了解SQLite或其他移动端数据库的使用
【10月更文挑战第22天】本文介绍了SQLite在移动应用开发中的应用,包括其优势、如何在Android中集成SQLite、基本的数据库操作(增删改查)、并发访问和事务处理等。通过示例代码,帮助开发者更好地理解和使用SQLite。此外,还提到了其他移动端数据库的选择。
38 8
|
2月前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
36 4
|
2月前
|
存储 关系型数据库 数据库
轻量级数据库的利器:Python 及其内置 SQLite 简介
轻量级数据库的利器:Python 及其内置 SQLite 简介
64 3
|
2月前
|
应用服务中间件 PHP Apache
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
|
3月前
|
存储 API 数据库
QML使用Sqlite数据库存储ListModel数据
本文介绍了在QML中使用Sqlite数据库存储ListModel数据的方法,包括如何创建数据库、读取数据、动态添加和删除数据,以及如何在程序启动和退出时与数据库同步数据。
|
3月前
|
数据库 数据库管理
qt对sqlite数据库多线程的操作
本文总结了在Qt中进行SQLite数据库多线程操作时应注意的四个关键问题,包括数据库驱动加载、加锁、数据库的打开与关闭,以及QsqlQuery变量的使用。
208 1
|
2月前
|
存储 缓存 关系型数据库
sqlite 数据库 介绍
sqlite 数据库 介绍
43 0