sqliteSQL基础

SQL基础

SQLite 数据库简介

SQLite 是一个开源的、 内嵌式的关系型数据库, 第一个版本诞生于 2000 年 5 月, 目前最高版本为 SQLite3。

下载地址: https://www.sqlite.org/download.html

菜鸟教程 : https://www.runoob.com/sqlite/sqlite-tutorial.html

Linux 下 字符界面

sudo apt-get install sqlite3

Linux 下 图形界面

sudo apt-get install sqlitebrowser

该教程没有使用这个, 因为我下载时找不到

sudo apt-get install sqliteman

SQLite 特性:

  • 零配置
  • 灵活
  • 可移植
  • 自由的授权
  • 紧凑
  • 可靠
  • 简单
  • 易用

SQL 语句基础

SQL 是一种结构化查询语言(Structured Query Language) 的缩写, SQL 是一种专门用来与数据库通信的语言。

SQL 目前已成为应用最广的数据库语言。

SQL 已经被众多商用数据库管理系统产品所采用, 不同的数据库管理系统在其实践过程中都对 SQL 规范作了某些编改和扩充。 故不同数据库管理系统之间的 SQL 语言不能完全相互通用。

SQLite 数据类型 :

一般数据采用固定的静态数据类型, 而 SQLite 采用的是动态数据类型, 会根据存入值自动判断。

SQLite 具有以下五种基本数据类型 :

  • integer: 带符号的整型(最多 64 位) 。
  • real: 8 字节表示的浮点类型。
  • text: 字符类型, 支持多种编码(如 UTF-8、 UTF-16) , 大小无限制。
  • blob: 任意类型的数据, 大小无限制。
  • BLOB(binary large object)二进制大对象, 使用二进制保存数据
  • null: 表示空值

对数据库文件 SQL 语句:

创建、 打开数据库:

当*.db 文件不存在时, sqlite 会创建并打开数据库文件。

当*.db 文件存在时, sqlite 会打开数据库文件。

sqlite3 test.db

image-20200809124512574

SQL 的语句格式:

所有的 SQL 语句都是以分号结尾的, SQL 语句不区分大小写。 两个减号“–” 则代表注释。

关系数据库的核心操作:

  • 创建、 修改、 删除表
  • 添加、 修改、 删除行
  • 查表

创建表: create 语句

语法:

create table 表名称 (列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, ...);

创建一表格该表包含 3 列, 列名分别是: “id” 、 “name” 、 “addr” 。

create table cpucode (id integer, name text, addr text);

image-20200809125437496

创建表: create 语句 (设置主键)

在用 sqlite 设计表时, 每个表都可以通过 primary key 手动设置主键, 每个表只能有一个主键, 设置为主键的列数据不可以重复。

语法:

create table 表名称 ( 列名称1 数据类型 primary key, 列名称2 数据类型,列名称3 数据类型, ...);
create table test (id integer primary key, name text, addr text);

image-20200809124801066

查看表: .table

查看数据表的结构:

.schema[表名]
.tables

image-20200809124825297

.schema

image-20200809125503551

退出数据库命令

.quit
.exit

image-20200809125554172

图形化的软件查看表的结构 :

sqlitebrowser test.db

image-20200809125700156

image-20200809125806604

修改表: alter 语句

在已有的表中添加删除列以及修改表名。(添加、 删除-sqlite3 暂不支持、 重命名)

语法 :

alter table 表名 add 列名 数据类型;
alter table cpucode add sex text;

image-20200809130120229

语法: (alter 修改表名)

alter table 表名 rename to 新表名;
.tables
alter table cpucode rename to new_cpucode;
.tables

image-20200809130242617

删除表: drop table 语句

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

语法:

drop table 表名称;
drop table new_cpucode;

image-20200809131750952

插入新行: insert into 语句(全部赋值)

给一行中的所有列赋值。

当列值为字符串时要加上‘ ’ 号。

语法:

insert into 表名 values (列值 1, 列值 2, 列值 3, 列值 4, ...);
create table cpucode (id integer, name text, addr text);

image-20200809132249261

insert into cpucode values (1, 'code', 'changsha');

image-20200809132551917

sqlitebrowser test.db

image-20200809132524349

image-20200809132446540

插入新行: insert into 语句部分赋值)

给一行中的部分列赋值

语法:

insert into 表名 (列名 1, 列名 2, ...) values (列值 1, 列值 2, ...);
insert into cpucode (id, name) values (1, 'cpu');

image-20200809133320623

sqlitebrowser test.db

image-20200809133413766

image-20200809133347328

修改表中的数据: update 语句

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

语法:

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

匹配: where 子句

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

操作数描述
=等于
<>不等于
>大于
<小于
>=大于等于
<=小于等于

匹配条件语法:

where 列名 操作符 列值
update cpucode set id=2, addr='shenzhen' where name='cpu';

image-20200809140409888

sqlitebrowser test.db

image-20200809140353950

当表中有多列、 多行符合匹配条件时会修改相应的多行。 当匹配条件为空时则匹配所有。

image-20200809140325506

当表中有多列、 多行符合匹配条件时会修改相应的多行 :

查询

select * from cpucode;

image-20200810095855079

插入

insert into cpucode values (3, 'test', 'changsha');

查询

select * from cpucode;

image-20200810095748022

修改

update cpucode set name='cpu' where addr='changsha';

image-20200810111341800

查看

select * from cpucode;

当匹配条件为空时则匹配所有 :

修改 :

update cpucode set addr='shenzhen';

image-20200810111523513

删除表中的数据: delete 语句

使用 where 根据匹配条件, 查找一行或多行, 根据查找的结果删除表中的查找到的行。

当表中有多列、 多行符合匹配条件时会删除相应的多行。

语法:

delete from 表名 [匹配条件];

删除

delete from cpucode where name='cpu';

查看

select * from cpucode;

image-20200810112210025

insert into cpucode values (1, 'code', 'changsha');
insert into cpucode values (2, 'cpu', 'shenzhen');
insert into cpucode values (3, 'test', 'beijing');

image-20200810112452676

查询: select 语句

用于从表中选取数据, 结果被存储在一个结果表中(称为结果集) 。

星号(*) 是选取所有列的通配符

语法:

 select * from 表名 [匹配条件];
select 列名 1[, 列名 2, ...] from 表名 [匹配条件];
select * from cpucode

image-20200810112826421

查看

select * from cpucode where id=2;

image-20200810113213821

select name from cpucode;

image-20200810113232766

select name from cpucode where id = 1;

image-20200810113321806

列名显示

.headers on

左对齐

.mode column
select * from cpucode where id = 3;

image-20200810113454155

匹配条件语法

数据库提供了丰富的操作符配合 where 子句实现了多种多样的匹配方法。

  • in 操作符
  • and 操作符
  • or 操作符
  • between and 操作符
  • like 操作符
  • not 操作符

in 允许我们在 where 子句中规定多个值。

匹配条件语法:

where 列名 in (列值 1, 列值 2, ...)
select * from 表名 where 列名 in (值 1, 值 2, ...);
select 列名 1[,列名 2,...] from 表名 where 列名 in (列值 1, 列值 2, ...);
select * from cpucode where id in (1, 2);

image-20200810113901131

select name from cpucode where id in(2, 3);

image-20200810113915934

and 可在 where 子语句中把两个或多个条件结合起来(多个条件之间是与的关系) 。

匹配条件语法:

where 列 1 = 值 1 [and 列 2 = 值 2 and ...]
select * from 表名 where 列 1 = 值 1 [and 列 2 = 值 2 and ...];
select 列名 1[, 列名 2, ...] from 表名 where 列 1 = 值 1 [and 列 2 = 值 2 and ...];
select * from cpucode where     id =1 and addr = 'changsha';

image-20200810114705475

select addr from cpucode where id = 2 and name = 'cpu';

image-20200810114823444

or 可在 where 子语句中把两个或多个条件结合起来(多个条件之间是或的关系) 。

匹配条件语法:

where 列 1 = 值 1 [or 列 2 = 值 2 or ...]
select * from 表名 where 列 1 = 值 1 [or 列 2 = 值 2 or ...];
select 列名 1[,列名 2,...] from 表名 列 1 = 值 1 [or 列 2 = 值 2 or ...];
select * from cpucode where id = 1 or addr = 'beijing';

image-20200810115842372

select name from cpucode where id = 3 or addr = 'shenzhen';

image-20200810115958013

between A and B 会选取介于 A、 B 之间的数据范围。 这些值可以是数值、 文本或者日期。

匹配字符串时会以 ascii 顺序匹配。

不同的数据库对 between A and B 操作符的处理方式是有差异的。

  • 有些数据库包含 A 不包含 B。
  • 有些包含 B 不包含 A
  • 有些既不包括 A 也不包括 B。
  • 有些既包括 A 又包括 B

匹配条件语法:

where 列名 between A and B
select * from 表名 where 列名 between A and B;
select 列名 1[,列名 2,...] from 表名 where 列名 between A and B;
select * from cpucode where id between 1 and 3;

image-20200810120415025

select * from cpucode where addr between 'a' and 'f';

image-20200810120425867

like 用于模糊查找

匹配条件语法:

若列值为数字 , 相当于列名=列值

若列值为字符串 , 可以用通配符“ % ” 代表缺少的字符(一个或多个) 。

where 列名 like 列值
select * from cpucode where id like 2;

image-20200810120638870

select * from cpucode where name like '%u%';

image-20200810120653093

not 可取出原结果集的补集

匹配条件语法:

where 列名 not in 列值等
where 列名 not in (列值 1, 列值 2, ...)
where not (列 1 = 值 1 [and 列 2 = 值 2 and ...])
where not (列 1 = 值 1 [or 列 2 = 值 2 or ...])
 where 列名 not between A and B
where 列名 not like 列值
select * from cpucode where id not in (1);

image-20200810123016883

select * from cpucode where addr not like '%zhen';

image-20200810123116343

order by 语句

根据指定的列对结果集进行排序。

默认按照升序对结果集进行排序, 可使用 desc 关键字按照降序对结果集进行排序。

升序

select * from 表名 order by 列名;

降序

select * from 表名 order by 列名 desc;
select * from cpucode order by name;

image-20200810123322828

select * from cpucode order by id;

image-20200810123351083

select * from cpucode order by addr;

image-20200810123412496

select * from cpucode order by id desc;

image-20200810123337554

事务

事务(Transaction) 可以使用 BEGIN TRANSACTION 命令或简单的 BEGIN 命令来启动。 此类事务通常会持续执行下去, 直到遇到下一个 COMMITROLLBACK 命令。 不过在数据库关闭或发生错误时, 事务处理也会回滚。 以下是启动一个事务的简单语法:

在 SQLite 中, 默认情况下, 每条 SQL 语句自成事务。

begin: 开始一个事务, 之后的所有操作都可以取消

commit: 使 begin 后的所有命令得到确认。

rollback: 取消 begin 后的所有操作。

begin;

delete from cpucode;

rollback;

select * from cpucode;

image-20200810123809245

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/664240.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目VS运营

一、项目与运营的定义与区别 项目与运营是企业管理中的两个重要概念&#xff0c;尽管在实际运作中它们常被视为同义词&#xff0c;但它们之间存在明显的区别。 项目&#xff0c;指的是为达到特定目标&#xff0c;通过临时性、系统性、有计划的组织、协调、控制等系列活动&…

活动预告|6月13日Apache Flink Meetup·香港站

6 月 13 日 | 香港 | 线下 Apache Flink Meetup 的风吹到了香江之畔&#xff0c;Apache Flink 香港 Meetup 来啦&#xff01;本次活动&#xff0c;我们邀请了来自阿里云的顶尖专家&#xff0c;帮助开发者全面了解 Apache Flink 的流批一体的数据处理能力&#xff0c;流式数据湖…

第100+9步 ChatGPT文献复现:ARIMA预测百日咳

基于WIN10的64位系统演示 一、写在前面 我们来继续换一篇文章来学习学习&#xff1a; 《BMC Public Health》杂志的2022年一篇题目为《ARIMA and ARIMA-ERNN models for prediction of pertussis incidence in mainland China from 2004 to 2021》文章的模拟数据做案例。 这…

源码编译安装LNMP

1、LNMP 包含&#xff1a;linux、Nginx、Mysql、php LNMP的工作原理 由客户端发送页面请求给Nginx&#xff0c;Nginx会根据location匹配用户访问请求的URL路径判断是静态还是动态&#xff0c;静态的一般是以 .html .htm .css .shtml结尾&#xff0c;动态的一般是以 .php .jsp…

【测试】linux快捷指令工具cxtool

简介 登录linux时,我们经常需要重复输入一些指令. 这个工具可以把这些指令预置,需要的时候鼠标一点,会自动按预置的字符敲击键盘,敲击出指令. 下载地址 https://download.csdn.net/download/bandaoyu/89379371 使用方法 1,编辑配置文件&#xff0c;自定义自己的快捷指令。 2…

PMP证书有用吗?到底要不要报名?

证书就是&#xff0c;适用者自有用&#xff0c;不适者无用。对于做管理之类的人士考个PMP必然有用。 首先PMP是什么? PMP指的是项目管理专业人士资格认证。那怎么来定义“项目”?“项目“可以简单的理解为:在给定的费用与时间约束范围之内&#xff0c;完成意向独立的、一次…

2024年5月软件设计师选择题答案(持续更新~)

题目1【考生回忆版】在计算机网络协议5层体系结构中&#xff0c;()工作在数据链路层 A.路由器 B.以太网交换机 C.防火墙 D.集线器 题目2【考生回忆版】软件交付之后&#xff0c;由于软硬件环境发生变化而对软件进行修改的行为属于()维护。 A.改善性 B.适应性 C.预防性 …

JVM之【运行时数据区1】

JVM简图 运行时数据区简图 一、程序计数器&#xff08;Program Counter Register&#xff09; 1.程序计数器是什么&#xff1f; 程序计数器是JVM内存模型中的一部分&#xff0c;它可以看作是一个指针&#xff0c;指向当前线程所执行的字节码指令的地址。每个线程在执行过程中…

『ZJUBCA MeetUP』 5月25日线下活动——Aptos 链的动态与应用

2024 求是创新 ZJUBCA Sponsored by the ALCOVE Community TIME&#xff1a;2024/05/25 ADD&#xff1a;浙江大学紫金港校区 --- Alcove 是 Aptos 公链与 Alibaba Cloud 共同打造的亚洲首个 Move 开发者社区&#xff0c;致力于支持开发者使用 Move 语言构建下一代 Web3 应用&am…

5分钟了解APP广告变现成功之道!

在当今的移动互联网时代&#xff0c;随着智能手机的普及&#xff0c;越来越多的APP应运而生&#xff0c;竞争愈发激烈。 对于开发者和企业来说&#xff0c;如何在保证用户体验的前提下实现广告变现&#xff0c;成为了一个既重要又棘手的问题。 本文旨在深入探讨和揭示成功的A…

济南著名起名大师,现代山东文化名人颜廷利教授:通过魔方解析世界

济南著名起名大师&#xff0c;现代山东文化名人颜廷利教授&#xff1a;通过魔方解析世界 在山东济南&#xff0c;中国第一起名大师的恩师颜廷利教授不仅是一位杰出的齐鲁文化名人&#xff0c;更是全球首个利用魔方游戏来解析和理解世界的先驱。他的理论框架——包括升命学说、净…

YOLO目标检测:框架技术原理和代码实现

Dream推荐 适读人群 &#xff1a;本书适合对YOLO目标检测感兴趣、了解深度学习相关概念的算法工程师、软件工程师等人员阅读。 全面&#xff1a;涵盖6个常用目标检测框架&#xff08;YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOX、YOLOv7&#xff09;的发展状况、技术原理和代码实…

过敏者的福音:猫毛克星大揭秘!使用宠物空气净化器效果如何?

对于猫毛过敏者来说&#xff0c;家中爱宠的陪伴与过敏的困扰并存&#xff0c;给他们的日常生活带来了极大的不便。猫毛过敏者常常因为与猫咪接触后出现打喷嚏、鼻塞、眼睛发痒等症状而苦恼&#xff0c;严重时甚至可能影响到他们的呼吸健康。 然而&#xff0c;这并不意味着猫毛…

相机等效焦距

1. 背景 物理焦距我们很熟悉,但是在接触实际的相机参数时,相机厂家会提到一个参数等效焦距,甚至有时候不提供物理焦距,这时候如果我们得到真实的物理焦距需要进行一定的转换.在介绍两者之间的转换关系前,先介绍一下等效焦距的由来. 如上图,假设在某一个镜头,其成像面会出现图…

无线领夹麦克风哪个品牌音质最好?领夹麦克风品牌排行榜前十名

​短视频、直播已成为现代生活中不可或缺的一部分&#xff0c;而领夹式无线麦克风则是这些活动中不可或缺的重要工具。它们能够轻松捕捉声音&#xff0c;让内容更加生动、真实。然而&#xff0c;市场上的无线麦克风种类繁多&#xff0c;价格各异&#xff0c;如何挑选一款适合自…

5G NR TAE TEST

环境配置&#xff1a; 测试TAE时&#xff0c;需要比对不同的Antenna Port之间的差异来测试 配置DL 2 layer MU的case layer1&#xff1a;通过设置weight&#xff0c;只有一个物理天线上有weight&#xff0c;其他天线上的weight为0&#xff0c;该天线的DMRS DMRS Port设置为1…

最佳 Mac 数据恢复:恢复 Mac 上已删除的文件

尝试过许多 Mac 数据恢复工具&#xff0c;但发现没有一款能达到宣传的效果&#xff1f;我们重点介绍最好的 Mac 数据恢复软件 没有 Mac 用户愿意担心数据丢失&#xff0c;但您永远不知道什么时候会发生这种情况。无论是意外删除 Mac 上的重要文件、不小心弄湿了 Mac、感染病毒…

HTML动态响应2-Servlet+Ajax实现HTTP前后台交互方式

作者:私语茶馆 前言 其他涉及到的参考章节: HTML动态响应1—Ajax动态处理服务端响应-CSDN博客 Web应用JSON解析—FastJson1.2.83/Tomcat/IDEA解析案例-CSDN博客 HTML拆分与共享方式——多HTML组合技术-CSDN博客 1.场景: WEb项目经常需要前后端交互数据,并动态修改HTML页…

定时器与PWM的LED控制

目录 一、基础概念定时器定时器类型定时器特性 PWM定义占空比原理 二、实验1.LED周期性亮灭定时器TIM2配置GPIO引脚设置工程相关参数配置Keil编写程序 2.LED呼吸灯(PWM)呼吸灯原理Keil编写程序Keil虚拟示波器&#xff0c;观察 PWM输出波形设置点击setup&#xff0c;并设置观察引…

统计计算六|自助法及置换检验(Bootstrap and Permutation Test)

系列文章目录 统计计算一|非线性方程的求解 统计计算二|EM算法&#xff08;Expectation-Maximization Algorithm&#xff0c;期望最大化算法&#xff09; 统计计算三|Cases for EM 统计计算四|蒙特卡罗方法&#xff08;Monte Carlo Method&#xff09; 统计计算五|MCMC&#x…