08 2022 档案
摘要:1. 前言 sql check 约束(检查性约束)用来限制字段的取值范围。您可以在 check 约束中添加限制条件,只有满足这些条件的值才允许进入该字段。 您可以为一个字段或者多个字段定义 check 约束。 2. 示例 创建一个名为 website 的新表,该表包含七个字段,我们为 age 字段添
阅读全文
摘要:1. 前言 主键(primary key)由表中的一个或者多个字段构成,用来唯一标识表中的每一行记录。可以将主键类比为学号、身份证号、车牌号或者 id。 主键必须包含唯一值,换句话说,所有记录的主键都不能出现相同的值。此外,主键必须是一个具体的值,不能是 null 值。 当主键包含多个字段时,又称为
阅读全文
摘要:1. 前言 unique 约束也称“唯一约束”,设置了 unique 约束的字段,每条记录的值都必须是唯一的,因此 unique 约束可以防止两条记录在某个字段上出现重复值。例如在 customers 表中,要防止两个或者多个顾客出现相同的姓名。 unique 可以约束表的一个字段,也可以约束多个字
阅读全文
摘要:1. 前言 default 约束用于给字段指定一个默认值,当使用 insert into 语句向表中插入数据时,如果没有为该字段提供具体的值,那么就使用这个默认值。 2. 示例 下面的 sql 语句将创建一个名为 website 的新表,该表包含五个字段,其中 uv 和 country 字段拥有 d
阅读全文
摘要:1. 前言 默认情况下,表的字段可以包含 null 值,如果您不希望某个字段出现 null 值,那么可以在该字段上添加 not null 约束(非空约束),此时就必须给该字段指定一个具体的值,不能留空。 注意,null 不等于没有数据,而是表示数据是未知的。 2. 示例 下面的 SQL 语句将创建一
阅读全文
摘要:1. 前言 在 SQL 中,关键字 NULL 用来表示缺失的值,也即空值,或者没有值。NULL 值不等同于零值,也不等同于包含空格的字段,理解这一点非常重要。表的字段默认允许存放 NULL 值,这意味着,您在插入记录或者更新记录时,可以不为该字段指定值,此时该字段将存储 NULL 值。在查询结果中,
阅读全文
摘要:1.前言 关于 sql 约束,我们已经在《rdbms是什么》中进行了简要介绍,但是现在我们有必要再温习一下,并稍加深入。 约束(constraint)是指表的数据列必须强行遵守的规则,这些规则用于限制插入表中的数据类型,这样能够确保每份数据的准确定和可靠性。 约束可以是列级别,也可以是表级别;列级约
阅读全文
摘要:1. 前言 sql distinct 关键字需要和 select 语句一起使用,用来删除结果集中所有重复的记录,仅保留唯一的一条记录。 数据表中有时候会有重复的记录,如果您只需要其中一条,就可以使用 distinct 关键字。关于 unique 关键字unique 和 distinct 的效果是等价
阅读全文
摘要:1. 前言 group by 子句用来根据指定的字段对结果集(选取的数据)进行分组,如果某些记录的指定字段具有相同的值,那么它们将被合并为一条数据。通俗地理解,group by 子句将根据指定的字段合并数据行。 借助 sql 聚合函数,您可以对分组的数据进行再次加工,例如:sum( ) 函数可以对指
阅读全文
摘要:1. 前言 order by 子句用于根据一个或者多个字段对查询结果(结果集)进行排序,可以是降序,也可以是升序。默认情况下,大部分数据库将查询结果按照升序排序。语法order by 子句的基本语法如下所示: select column_list from table_name [where con
阅读全文
摘要:1 .前言 sql top 子句用于限定要返回的记录的数据,可以是一个具体的数字,也可以是一个百分数。 对于拥有成千上万条记录的大型数据表来说,top 子句非常有用,它能够压缩结果集的大小,提高程序查询效率。 注意,并不是所有的数据库都支持 top 子句,有些数据库使用其它的等价语句来替代,例如:
阅读全文
摘要:1. 前言 sql like 子句用于在 where 语句中进行模糊匹配,它会将给定的匹配模式和某个字段进行比较,匹配成功则选取,否则不选取。 like 子句可以和通配符一起使用: 通配符说明 百分号(%) 代表零个、一个或者多个任意的字符。 下划线(_) 代表单个字符或者数字。 [charlist
阅读全文
摘要:1.前言 delete 语句用于删除数据表中现有的记录。delete 命令通常和 where 子句一起使用,用以删除满足条件的记录;如果不使用 where 子句,那么表中所有的记录都将被删除,这往往不是我们所期望的。语法带有 where 子句的 delete 命令的基本语法如下: delete fr
阅读全文
摘要:1. 前言 sql update 语句用于修改数据表中现有的记录(数据行)。update 通常和 where 子句一起使用,用以筛选满足条件的记录;如果不使用 where 子句,那么表中所有的记录都将被修改,这往往不是我们期望的。语法带有 where 子句的 update 命令的基本语法如下: up
阅读全文
摘要:1. 前言 sql 中的 and 和 or 运算符用来连接多个查询条件,以缩小返回的结果集,它们被称为连接符。and 运算符and 运算符用于连接 where 子句中的多个查询条件,只有当这些查询条件都被满足时,数据行(记录)才会被选取。语法where 子句中 and 运算符的基本语法如下: sel
阅读全文
摘要:1.前言 使用 sql 从单个表或者多表联合查询数据时,可以使用 where 子句指定查询条件。当给定查询条件时,只有满足条件的数据才会被返回。建议您使用 where 子句来过滤记录,以获取必要的结果集。 where 子句不仅可以用在 select 语句中,还可以用在 update、delete 等
阅读全文
摘要:select 语句用于从表中选取符合条件的数据,该数据以临时表的形式返回,称为结果集。 语法 select 语句的基本语法如下: select column1, column2, columnn from table_name where conditions; column1, column2,
阅读全文
摘要:1. 前言 sql insert into 语句用于向表中插入新的数据行。语法insert into 语句有两种基本的用法。 1) 按指定的列插入数据,语法如下: insert into table_name (column1, column2, column3,...columnn) values
阅读全文
摘要:1. 前言 SQL 允许对表进行重命名。有时候我们为表使用了无意义的名称,因此需要更正。 2. 语法 SQL 支持两种重命名表的方式: alter table old_table_name rename to new_table_name; rename old_table _name to new
阅读全文
摘要:1. 前言 不需要使用某个数据表时,您可以将它删除。sql drop table 语句用来删除数据表,以及与该表相关的所有数据、索引、触发器、约束和权限。注意使用 drop table 命令时一定要非常小心,因为一旦删除了表,那么该表中所有的信息将永远丢失。语法drop table 语句的基本语法如
阅读全文
摘要:1. 前言 表(table)是以行和列形式组织的数据的集合,表被创建以后,列数是固定的,但是行数可以改变。创建表时,需要给表命名,并定义它的列以及每一列的类型。 sql create table 语句用于创建新的表。 2. 语法 create table 语句的基本语法如下: create tabl
阅读全文
摘要:1. 前言 如果您的系统中有多个数据库,那么在开始操作之前,您需要先选择一个数据库。 sql use 语句用来选择一个已经存在的数据库。 2. 语法 use 语句的基本语法如下: use databasename; databasename 表示要选择的数据库名称,它必须是存在的。 3. 示例 首先
阅读全文
摘要:1.前言 drop database 语句用来删除已经存在的数据库。语法drop database 语句的基本语法如下: drop database databasename; databasename 表示要删除的数据库。示例如果希望删除现有的 test 数据库,那么 drop database
阅读全文
摘要:1. 前言 sql create database 语句用来创建一个新的数据库。 2. 语法 create database 语句的基本语法如下: create database DatabaseName; DatabaseName 为数据库名字,它的名字必须是唯一的,不能和其它数据库重名。 3.
阅读全文
摘要:1. 前言 数据类型用来指明存储在表中的数据的性质。例如,在表的某一列中,如果我们想存储字符串,那么就必须将该字段声明为字符串类型。在 SQL 中,每个字段、变量和表达式都有特定的数据类型,您可以在创建表时指明字段的类型,也可以根据需要随时修改字段的类型。大部分数据库都支持以下 4 种类别的基本数据
阅读全文
摘要:1. 前言 使用 SQL 语言必须遵守一套特定的规范和准则,这称之为语法(Syntax)。本教程列出了常用的 SQL 语法,以帮助您快速入门 SQL。所有的 SQL 语法都必须以关键字(也称命令)开头,比如 select、insert、update、delete、alter、drop、create、
阅读全文
摘要:1.前言 关系型数据库管理系统(RDBMS)有很多种,它们都有各自的优缺点,下表是由 DB-Engines 发布的 2020 年 11月份数据库排名榜单。 2020 年 11 月份 DB-Engines 榜单(前十名) 排名数据库类型得分 1 Oracle 关系型数据库 1345.00 2 MySQ
阅读全文
摘要:1.前言 RDBMS 是 Relational Database Management System 的缩写,中文译为“关系数据库管理系统”,它是 SQL 语言以及所有现代数据库系统(例如 SQL Server、DB2、Oracle、MySQL 和 Microsoft Access)的基础。关系数据
阅读全文
摘要:1. 前言 SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL 虽然是一种被 ANSI 标准化的语言,但是它有很多不同的实现版本。 ANSI 是 American National Standards Institute 的缩写,中文译为“美国国家标准
阅读全文
摘要:1.前言 SQL 是 Structured Query Language 的缩写,译为“结构化查询语言”。SQL 是一种数据库操作语言,用来检索和管理关系型数据库中的数据,比如插入数据、删除数据、查询数据、创建和修改表等。 本 SQL 教程提供了 SQL 的基础用法和高级概念,语言简练紧凑,将带您快
阅读全文
摘要:1. 前言 Redis 命令大致可分为以下几种: 服务端(server)命令 客户端(client)命令 键命令(key) 数据类型命令 功能应用命令 这本《Redis 常用命令手册》介绍了 Redis 中经常使用的命令,包括键命令和数据类型命令,其中数据类型命令包括 String、List、Has
阅读全文
摘要:1. 前言 JSON 是一种纯粹的数据交换格式,其简单、灵活的特性使得 JSON 适合被用于各种不同的场景,例如在配置文件中、在接口返回的数据中都会用到 JSON 格式。然而 JSON 却有一个非常明显的缺点,那就是 JSON 不能像编程语言那样添加注释,JSON 中的任何内容都会看作数据的一部分。
阅读全文
摘要:1.前言 数组是值的有序集合,JSON 中的数组与 JavaScript 中的数组相似,同样需要使用方括号[ ]定义,方括号中为数组中的若干值,值可以是 JSON 中支持的任意类型(例如字符串、数字、布尔值、对象、数组等),每个值之间使用逗号,分隔开,具体语法格式如下: { "array":[ {
阅读全文
摘要:1. 对象 在 JSON 中,对象是一个无序的、键/值对的集合,一个对象以左花括号{开始,以右花括号}结束,左右花括号之间为对象中的若干键/值对。键/值对中,键必须是字符串类型(即使用双引号将键包裹起来),而值可以是 JSON 中的任意类型,键和值之间需要使用冒号:分隔开,不同的键/值对之间需要使用
阅读全文
摘要:1. 前言 JSON 是 Web 开发中使用最广泛的数据交换格式,它独立于编程语言,能够被大多数编程语言使用。本节我们来详细介绍一下 JSON 中支持的数据类型。JSON 中支持的数据类型可以分为简单数据类型和复杂数据类型两种,其中简单数据类型包括:string(字符串)、number(数字)、bo
阅读全文
摘要:1. 前言 JSON 的语法与 JavaScript 中的对象很像,在 JSON 中主要使用以下两种方式来表示数据: Object(对象):键/值对(名称/值)的集合,使用花括号{ }定义。在每个键/值对中,以键开头,后跟一个冒号:,最后是值。多个键/值对之间使用逗号,分隔,例如{"name":"百
阅读全文
摘要:1. 前言 JSON 全称“JavaScript Object Notation”,译为“JavaScript 对象简谱”或“JavaScript 对象表示法”,是一种轻量级的、基于文本的、开放的数据交换格式。JSON 在 Web 开发领域有着举足轻重的地位,如果您想在 Web 开发领域大展身手的话
阅读全文
摘要:1.前言 1本节对 Redis 的常用配置项和基本命令做简单的总结,您可以把本篇文章看做简版的速查手册。不过,需要注意的是由于 Redis 不同版本的差异,配置项会多少存在一些不同,但总体的来说,大同小异。 2. 基本配置 port 6379 # 监听端口号,默认为6379,如果你设为 0 ,red
阅读全文
摘要:1. 前言 Python 使用 Redis 相对比较简单,Python 专门提供了操作 Redis 的第三方模块,即 redis 模块,该模块可以直接使用 Python 包管理工具pip来安装。本节内容适合 Python 开发人员阅读。 2. 安装redis模块 下面以 Windows 系统为例,使
阅读全文
摘要:1. 前言 在开始学习本节内容之前, 首先需要您掌握 Java 编程语言,其次确定您已经安装了 Redis 服务及 Java Redis 驱动,并且能够成功运行 Java 程序。 本节介绍如何在 Java 中使用 Redis。 2. 安装Redis驱动 如果想在 Java 环境下操作 Redis ,
阅读全文
摘要:1. 前言 在实际的业务场景中,Redis 一般和其他数据库搭配使用,用来减轻后端数据库的压力,比如和关系型数据库 MySQL 配合使用。Redis 会把 MySQL 中经常被查询的数据缓存起来,比如热点数据,这样当用户来访问的时候,就不需要到 MySQL 中去查询了,而是直接获取 Redis 中的
阅读全文
摘要:1. 前言 在分布式系统中,当不同进程或线程一起访问共享资源时,会造成资源争抢,如果不加以控制的话,就会引发程序错乱。此时使用分布式锁能够非常有效的解决这个问题,它采用了一种互斥机制来防止线程或进程间相互干扰,从而保证了数据的一致性。 提示:如果对分布式系统这一概念不清楚,可参考百度百科《分布式系统
阅读全文
摘要:1.算数运算符 代码演示: num1 = 10 num2 = 3 print(num1+num2) print(num1-num2) print(num1*num2) print(num1/num2) print(num1%num2) # 取余,10除3余数 print(num1//num2) #
阅读全文
摘要:1.前言 在 Redis 主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中,不仅需要人为干预,而且还会造成一段时间内服务器处于不可用状态,同时数据安全性也得不到保障,因此主从模式的可用性较低,不适用于
阅读全文
摘要:1. 前言 在软件的架构中,主从模式(Master-Slave)是使用较多的一种架构。主(Master)和从(Slave)分别部署在不同的服务器上,当主节点服务器写入数据时,同时也会将数据同步至从节点服务器,通常情况下,主节点负责写入数据,而从节点负责读取数据。 2. 主从模式解析 主从模式的结构图
阅读全文
摘要:Redis 事务的目的是方便用户一次执行多个命令。执行 Redis 事务可分为三个阶段: 开始事务 命令入队 执行事务 1. Redis事务特性 Redis 事务具有两个重要特性: 1) 单独的隔离操作 事务中的所有命令都会被序列化,它们将按照顺序执行,并且在执行过的程中,不会被其他客户端发送来的命
阅读全文
摘要:1.前言 Redis 事务的目的是方便用户一次执行多个命令。执行 Redis 事务可分为三个阶段: 开始事务 命令入队 执行事务 2. Redis事务特性 Redis 事务具有两个重要特性: 1) 单独的隔离操作 事务中的所有命令都会被序列化,它们将按照顺序执行,并且在执行过的程中,不会被其他客户端
阅读全文
摘要:1. 前言 Redis 是一款基于内存的非关系型数据库,它会将数据全部存储在内存中。但是如果 Redis 服务器出现某些意外情况,比如宕机或者断电等,那么内存中的数据就会全部丢失。因此必须有一种机制能够保证 Redis 储存的数据不会因故障而丢失,这就是 Redis 的数据持久化机制。数据的持久化存
阅读全文
摘要:1.前言 Redis SAVE 命令用于创建当前数据库的备份文件,文件名默认为dump.rdb。备份数据库数据可以增强对数据的保护,提升数据的安全性。当数据不小心丢失或者被删除时,我们就可以通过相应的操作进行数据恢复。本节介绍 Redis 的数据备份和数据还原操作。 2. 备份数据 SAVE 命令基
阅读全文
摘要:1. 前言 我们知道, Redis 服务器是以单线程的方式来处理客户端的网络 IO 请求的。如果每执行一次请求都要创建和断开一次连接,就会消耗过多的时间,导致执行效率降低。因此 Redis 提供了 Pipeline(管道技术),使用该技术可以一次性向服务器发送多条命令,并返回多个执行结果。这样就节省
阅读全文
摘要:1. 前言 Redis 分区技术(又称 Redis Partition)指的是将 Redis 中的数据进行拆分,然后把拆分后的数据分散到多个不同的 Redis 实例(即服务器)中,每个实例仅存储数据集的某一部分(一个子集),我们把这个过程称之为 Redis 分区操作。 Redis 实例指的是一台安装
阅读全文
摘要:1. 前言 为了解 Redis 在不同配置环境下的性能表现,Redis 提供了一种行性能测试工具 redis-benchmark(也称压力测试工具),它通过同时执行多组命令实现对 Redis 的性能测试。性能测试的作用是让我们了解 Redis 服务器的性能优劣。在实际的业务场景中,性能测试是必不可少
阅读全文
摘要:1. 前言 Redis 事务的目的是方便用户一次执行多个命令。执行 Redis 事务可分为三个阶段: 开始事务 命令入队 执行事务 2. Redis事务特性 Redis 事务具有两个重要特性: 1) 单独的隔离操作 事务中的所有命令都会被序列化,它们将按照顺序执行,并且在执行过的程中,不会被其他客户
阅读全文
摘要:1.前言 在 Redis 3.2 版本中,新增了存储地理位置信息的功能,即 GEO(英文全称 geographic),它的底层通过 Redis 有序集合(zset)实现。不过 Redis GEO 并没有与 zset 共用一套的命令,而是拥有自己的一套命令。Redis GEO 提供了 6 个常用命令:
阅读全文
摘要:1.前言 布隆过滤器(Bloom Filter)是 Redis 4.0 版本提供的新功能,它被作为插件加载到 Redis 服务器中,给 Redis 提供强大的去重功能。相比于 Set 集合的去重功能而言,布隆过滤器在空间上能节省 90% 以上,但是它的不足之处是去重率大约在 99% 左右,也就是说有
阅读全文
摘要:1. 前言 Redis Stream 是 Redis 5.0 版本引入的一种新数据类型,同时它也是 Redis 中最为复杂的数据结构,本节主要对 Stream 做相关介绍。 2. 什么是Stream? Stream 实际上是一个具有消息发布/订阅功能的组件,也就常说的消息队列。其实这种类似于 bro
阅读全文
摘要:1. 前言 Redis PubSub 模块又称发布订阅者模式,是一种消息传递系统,实现了消息多播功能。发布者(即发送方)发送消息,订阅者(即接收方)接收消息,而用来传递消息的链路则被称为 channel。在 Redis 中,一个客户端可以订阅任意数量的 channel(可译为频道)。 消息多播:生产
阅读全文
摘要:1. 前言 Redis 经常使用的数据类型有字符串、列表、散列、集合和有序集合,但这些类型并不能满足所有的应用场景,因此,Redis 的后续版本不断的扩增其他数据类型来增强 Redis 适用能力。在 Redis 2.8.9 版本中新增了 HyperLogLog 类型。 2. 什么是HyperLogl
阅读全文
摘要:1.前言 Redis 服务器是对客户端提供服务的主体,只要是安装了 Redis 数据库的计算机都可以通过本地,或者远程的方式对外提供服务。Redis 服务器能够以高可用集群的方式对外提供服务。所谓高可用集群,指的是多台 Redis 服务器组成的服务器架构,每台服务器都提供相同的服务,从而让服务器达到
阅读全文
摘要:1.前言 Redis 提供了一些操作客户端(client)的命令,比如查询所有已连接到服务器的客户端数量,控制客户端的连接状态(关闭或者挂起)等。通过客户命令我们可以轻松的实现对客户端的管理、控制。Redis 服务器通过监听 TCP 端口的方式来接受客户端的连接。当一个连接建立后,Redis 会自动
阅读全文
摘要:1.前言 Redis 提供了诸多安全策略,比如为了保证数据安全,提供了设置密码的功能。Redis 密码设置主要有两种方式:一种是使用CINFIG命令来设置密码;另外一种则是手动修改 Redis 的配置文件。虽然看似前者更为简单,其实两种方式各有特点。本节将对它们进行介绍。 2. 命令配置密码 通过执
阅读全文
摘要:1. 前言 Redis 连接命令是主要用于验证 Redis 服务器的连接状态,比如验证客户端与 Redis 服务器是否连接成功,以及检查服务器运行状态,以及是否断开当前连接等。我们知道,只有当客户端与服务器正常连接后才能够实现彼此的交互、通信。Redis 通过“Redis序列化协议”(简称“RESP
阅读全文
摘要:1.前言 顾名思义,Redis zset(有序集合)中的成员是有序排列的,它和 set 集合的相同之处在于,集合中的每一个成员都是字符串类型,并且不允许重复;而它们最大区别是,有序集合是有序的,set 是无序的,这是因为有序集合中每个成员都会关联一个 double(双精度浮点数)类型的 score
阅读全文
摘要:1. 前言 Redis set (集合)遵循无序排列的规则,集合中的每一个成员(也就是元素,叫法不同而已)都是字符串类型,并且不可重复。Redis set 是通过哈希映射表实现的,所以它的添加、删除、查找操作的时间复杂度为 O(1)。集合中最多可容纳 2^32 - 1 个成员(40 多亿个)。Red
阅读全文
摘要:1. 前言 Redis hash(哈希散列)是由字符类型的 field(字段)和 value 组成的哈希映射表结构(也称散列表),它非常类似于表格结构。在 hash 类型中,field 与 value 一一对应,且不允许重复。Redis hash 特别适合于存储对象。一个 filed/value 可
阅读全文
摘要:1. 前言 Redis list(列表)相当于 Java 语言中的 LinkedList 结构,是一个链表而非数组,其插入、删除元素的时间复杂度为 O(1),但是查询速度欠佳,时间复杂度为 O(n)。当向列表中添加元素值时,首先需要给这个列表指定一个 key 键,然后使用相应的命令,从列表的左侧(头
阅读全文
摘要:1. 前言 Redis string 类型提供了一些专门操作数值的命令,比如 INCRBY(自增)、DECRBR(自减)、INCR(加1) 和 DECR(减1) 等命令。数值操作,同样有特定的应用场景,比如常见的点赞、取消点赞、关注、取消关注等,这类和计数相关的场景都可以使用数值操作来实现。注意:此
阅读全文
摘要:1.前言 在平时开发过程中,经常会有一些 bool 类型数据需要存取。比如记录用户一年内签到的次数,签了是 1,没签是 0。如果使用 key-value 来存储,那么每个用户都要记录 365 次,当用户成百上亿时,需要的存储空间将非常巨大。为了解决这个问题,Redis 提供了位图结构。位图(bitm
阅读全文
摘要:1. 技能大纲 技能学习路线 2. 接口介绍 1.1 什么是接口测试? 接口测试是测试项目和项目之间,模块与模块之间,组件与组件之间的数据交互和权限鉴定。 1. 前后端分离架构的项目:mock2. 基于安全3. 测试左移 1.2. 接口的分类? 内部:开发的接口给内部系统使用。(正例)外部: 1.被
阅读全文


浙公网安备 33010602011771号