需要注意的是,NULL 值与零值或包含空格的字段不同。具有 NULL 值的字段是在记录创建期间留空的字段。 如何测试 NULL 值? 使用比较运算符(如=、)无法测试 NULL 值。...相反,我们必须使用 IS NULL 和 IS NOT NULL 运算符。...IS NOT NULL; 这是关于 SQL NULL 值的基本介绍和示例。...使用 IS NULL 和 IS NOT NULL 运算符可以有效地处理数据库中的空值情况。 SQL UPDATE 语句 UPDATE 语句用于修改表中的现有记录。...UPDATE语句用于修改数据库表中的记录,可以根据需要更新单个或多个记录,但务必小心使用WHERE子句,以防止意外更新。
添加/修改数据时,如果值没有填写或者被清空了,采用指定的值作为字段值 ] 是否可以填写空(null,等同于python里面的None)值 创建班级表 create table classes(...表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab' 字符串text表示存储大文本,当字符大于4000时推荐使用 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个文件管理服务器上...7 数据库设计 约束规则 主键primary key:在表中区分每一行数据的唯一性的标志服,数据在物理上存储的顺序 非空not null:此字段不允许填写空值,如果允许填写空值,则直接不填not null...,会到关联的表中查询时是否此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常 说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(create增加、update修改、delete...查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充 语法 select * from 表1 left join 表2 on 表1.列 = 表2.列 例如,使用左连接查询学生表与成绩表
因为此时动态数组在使用Erase语句后已经不存在了。 Split函数 Split函数把一个文本字符串按照指定的分隔符分开,返回一个一维Variant变体型数组,该数组的最小索引号为0为下界。...函数中的第三参数limit为返回的字符串数,通常是不指定的。下面通过示例简单介绍下如何使用: 如果将上面示例修改下。在Split函数中加入第三参数limit参数为2,即要求拆分成两个字符串。...第四参数主要的用处是在拆分分隔符时,如果用默认的vbBinaryCompare是区分字母大小写,而如果用vbTextCompare是不区分大小写的。...而第二个Split函数选择vbTextCompare是不区分大小写的,那么"A"和"a"都是分隔符,所以分割的结果是第一个为空值“ ”,第二个为“BC”,第三个为“bc”,第四个为“BC。...那么Join函数正相反,Join函数是将一个一维数组里的元素使用指定的分隔符连接成一个新的字符串返回。
表的连接分为内连和外连。 一.内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。...而使用where进行笛卡尔积筛选的时候,后面必须跟着一个过滤条件,将不合理的数据筛选掉,并且这时候再跟着其他条件就需要and其他条件,所以这种方式的内连接虽然可以,但是容易将内连接的条件与其他约束条件混淆...即有可能出现这样的情况:学生表里有四个人,但成绩表中只有三个成绩,这种情况还是常见的,因为存在着部分学生没有考试的情况,但是此时我们仍想将已知的信息显示出来,那么在连接时就会出现空值的情况。...即将学生表放在左侧,成绩表放在右侧,此时左侧的表完全显示,右侧的表由于缺少对应的一条信息,其内部的值为空。语法与内连接的区别就是将inner替换成了left。...三.案例 案例:列出部门名称和这些部门的员工信息,同时列出没有员工的部门。 通过观察,emp表中不存在部门号为40的员工。
开始时,使用了not null,default值为0000-00-00 00:00:00。但是有个同事说,这个值很有可能不存在,只有部分情况下才会存在,应当使用null,节省空间。...开始时,使用not null的原因也是因为之前的一位前辈说数据库建表时,所有字段尽量为not null,并且设默认值。然后通过代码保证。因此有重新查阅博客文档了解其原因。...在数据库里是严格区分的,任何数跟NULL进行运算都是NULL, 判断值是否等于NULL,不能简单用=,而要用IS NULL关键字。...SQL语句函数中可以使用ifnull()哈数进行处理,判断空字符串用=''或者''来进行处理 含有空值的列很难进行查询优化,而且对表索引时不会存储NULL值的,所以如果索引字段可以为NULL,索引的效率会下降很多...联表查询的时候,例如LEFT JOIN table2,如果没有记录,则查找出的table2字段都是NULL,加入table2有些字段本身可以是null,那么除非把table2中not null中的字段查出来
应用场景描述 通常,因为准备写入到表数据都需要统一的schema,如果我们使用原有的表的Schema,那么每条记录不包含的字段会被设置为null,但是这样,我们就不知道,究竟该字段是没有还是该字段最新值为...value是json字符串,里面包含了变更的字段的值。所以逻辑上是,找到id为9的记录,将label更新为100,找到id为10的记录,将content字段更新为”天才“。...如何基于Delta实现 将delta表和新进来的数据做full outer join,这样就能将两边数据衔接起来,衔接的结果可以组成类似这样的记录: case class FullOuterJoinRow...和right join的结合体,这样可以区分出新来的数据是直接新增的还是说原来的表里面已经有的。...进left,也就是做update, 如果left存在,right不存在,则说明数据没有变化,如果left不存在,right存在,则说明数据是新增的。
但是「你不能问这个格子里装的是空吗(是否=null)」 ?因为不存在『装在格子里的空』,「只存在『空的格子』」 。「所以应该问『这个格子是否是空的?...❞ 另外对于存在not in 语句最理想的解决办法是尽量「避免使用NOT IN,除非必须使用并且可以保证结果绝对有默认值,」 更好的建议是使用 left join 连接查询进行替代,或者可以使用not...join效率快一点 left join:主表的关联条件ID为空时拼接连接表的内容为空,right join则相反 full join:等于left join和right join的并集 两张表的关系存在一对多的关系...,所以就会出现重复情况,「无论是join还是left join,都是先把表以笛卡尔积的方式连接,然后通过on来筛选数据,join只显示符合条件的数据,left join不仅会显示所有满足条件的数据,而且还会把主表没有匹配上的也显示出来...、如果是out join(left),还需要把没匹配上的行数添加和join的数据合并,生成一张临时表 6、where,对临时表进行过滤 exists 真的比in 快么?
使用主键来作为 WHERE 子句的条件查询是非常快速的 如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据 MySQL 的 where字符串比较是不区分大小写的。...可以使用 BINARY 关键字来设定 where字符串比较区分大小写 ?...一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。 联合主键 顾名思义就是多个主键联合形成一个主键组合(主键原则上是唯一的,别被唯一值所困扰。)...如何使用 MySQL 的 JOIN 在两个或多个表中查询数据呢 可以在 SELECT, UPDATE 和 DELETE 语句中使用 MySQL 的 JOIN 来联合多表查询。...以上实例中使用了 LEFT JOIN,该语句会读取左边的数据表 runoob_tbl 的所有选取的字段数据,即便在右侧表 tcount_tbl中 没有对应的 runoob_author 字段值。 ?
print 或 write,可用来显示字符串、数字、数学表达式的结果等 显示mysql的版本 mysql> select version(); 显示当前时间 mysql> select now(); 显示年月日...更新数据 更新数据时通常跟随where条件,如果没有条件,是全表更新数据,可以使用 limit 限制更新的数量 基本语法:update set = where <判断条件...,where通过运算符进行结果比较来判断数据,注意和后面的having区分 7.5 group by 分组:根据指定的字段将数据进行分组,分组的目标是为了统计。...外连接分为两种:左外连接(left join),右外连接(right join) 左连接:左表是主表 右连接:右表是主表 流程: 1、 确定连接主表:左连接left join左边的表为主表;right...,不能插入对应主表主键不存在的数据 主表删除数据,不能删除被从表引入的数据 外键约束保证了数据的完整性(主表与从表数据一致),外键强大的数据约束作用可能导致数据在后台变化的不可控,所以外键在实际开发中较少使用
可以发现第一和第二种思路,当数据不存在时,是有 bug 的,因为取最小值和取第一个值,都会取到一个值,除非整个 table 数据都是空的。这两种思路暂时排除(后面也会给出这两种思路下的解决方法)。...第三种思路,执行一下,结果很happy,符合题目要求,即便是数据不存在时,也会返回 NULL,好了,你已经完成了这个题目。...第四种思路,执行一下,当数据不存在时,返回的结果集为 空,并没有返回 NULL。...也就是我们去扩展上面说到的第一和第二种思路,通过结合 LEFT JOIN 或 RIGHT JOIN。...为什么会想到 LEFT JOIN 呢,很明显,不存在的结果却需要显示为 NULL,这很符合 LEFT JOIN 或 RIGHT JOIN 的特质。
如果主要充当缓存功能,或者可以承受数分钟数据的丢失,通常生产环境一般只需启用RDB即可,此也是默认值;如果数据需要持久保存,一点也不能丢失,可以选择同时开启RDB和AOF,一般不建议只开启AOF。...解决办法:在缓存的时候给过期时间加上一个随机值,这样就会大幅度的减少缓存在同一时间过期。5 什么是缓存穿透?如何解决?定义:缓存穿透是指查询一个一定不存在的数据。...当我们从数据库找不到的时候,我们也将这个空对象设置到缓存里边去。下次再请求的时候,就可以从缓存里边获取了。这种情况一般会将空对象设置一个较短的过期时间。6 什么是缓存击穿?如何解决?...,也不存在多进程或者多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;使用多路 I/O 复用模型,非阻塞 IO;使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样...,Redis 直接自己构建了 VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求8 Redis 常用命令INFO:显示当前节点redis运行状态信息SELECT:切换数据库,相当于在
char表示字符串,括号中的数字表示定义这个字符串的长度 enum表示枚举 Null表示是否可以为空;NO的话就是必须要赋值,不能为空 Key中的PRI表示 primary key(主键),之前说过主键代表唯一的值...每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。 TIMESTAMP类型有专有的自动更新特性,将在后面描述。 ?...字符串类型 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。 ?...本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。 你可以在SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。...先找两个表相同的,不同的右表则会以NULL显示。 select * from B left join A on A.a = B.b ; #把A和B调换位置 ?
从多个表中返回丢失的数据 问题 解决方案 full join union all 13 多表查询时的空值处理 问题 解决方案 3.1 记录集的叠加 问题 要将来自多个表的数据组织到一起,就像将一个结果集叠加到另外一个上面一样..._3 left_4 right_4 right_5 right_6 SQL> full join的特点 该方式的左表和右表都返回所有的数据,但只有相匹配的数据显示在同一行..._3 right_3 1 left_4 right_4 0 SQL> 对于L表,4条数据全部返回了,而对于R表,我们如果 只需要显示 status=1的部分,该如何写SQL呢?...如果确定需要去掉重复记录再使用。 ---- 3.13 多表查询时的空值处理 问题 NULL值永远不会等于或者不等于任何值,也包括null自己,但是需要像计算真实值一样计算可为空列的返回值。...,comm有许多空值 的并没有被显示出来,原因在于与空值比较后结果还是空值,需要先转换才行 解决方案 使用coalesce函数将null值转换为一个可以用来作为标准值进行比较的真实值。
索引:类似书籍中的目录,使用索引可以快速访问数据库中的特定信息,是对数据库表中一列或者多列值进行排序的一种结构 参照完整性:要求关系中不允许引用不存在的实体,保证数据一致性。...除非使用 LIKE 来比较字符串,否则MySQL的WHERE子句的字符串比较是不区分大小写的。可以使用 BINARY 关键字来设定WHERE子句的字符串比较是区分大小写的。...LEFT JOIN,该语句会读取左边的数据表runoob_tbl的所有选取的字段数据,即便在右侧表tcount_tbl中没有对应的runoob_author字段值。...: 比较操作符(不同于=运算符),当比较的的两个值为NULL时返回true。..."--------------------------------"; } 注意 所有的数据库名,表名,表字段都是区分大小写的。所以在使用SQL命令时需要输入正确的名称。
大家好,又见面了,我是你们的朋友全栈君。 数据库是研究数据管理的技术。即如何妥善地保存和科学地管理数据。 数据管理是指对数据进行分类、组织、编码、存储、检索和维护等操作。...使用set子句插入数据 可以不按顺序插入数据,对允许空值的列可以不插入 利用set子句向se_course表插入数据。...多表连接 查询选修课程号为c05103的学生的学号、姓名和期末成绩 内连接inner join:通过比较数据源表键共享列的值,从多个源表检索符合条件的行 左外连接Left Outer Join...左外连接left outer join:返回指定左表的全部行+右表中对应的行,如果左表中的数据在右表中没有与其匹配的行,则再查询结果集中相应位置显示为空值。...右外连接Right Outer Join 右外连接right outer join:返回指定右表的全部行+左表中对应的行,如果右表中的数据在左表中没有与其匹配的行,则再查询结果集中相应位置显示为空值。
【面试题】某游戏数据后台设有“登录日志”和“登出日志”两张表。 “登录日志”记录各玩家的登录时间和登录时的角色等级。 “登出日志”记录各玩家的登出时间和登出时的角色等级。...也就是说,若玩家登录后没有对应的登出日志,则进行左联结后“登出时间”这一列会存在空值,而空值可以使用当天23:59:59进行填充。 如何实现这一操作呢?...合并字符串使用concat()函数,合并时日期与23:59:59之间存在一个空格,使时间格式一致,即: concat(日期,' 23:59:59') 这样,在左联结时,同时填充“登出时间”字段空值的SQL...也就是说,若玩家登录后没有对应的登出日志,则进行左联结后“登出时间”这一列会存在空值,而空值可以使用当天23:59:59进行填充。 如何实现这一操作呢?...合并字符串使用concat()函数,合并时日期与23:59:59之间存在一个空格,使时间格式一致,即: concat(日期,' 23:59:59') 这样,在左联结时,同时填充“登出时间”字段空值的SQL
SHOW TABLES; 显示指定数据库的所有表,使用该命令前需要使用 use命令来选择要操作的数据库。...每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。 TIMESTAMP类型有专有的自动更新特性,将在后面描述。 ?...字符串类型 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。 ?...---- Mysql 连接(left join, right join, inner join ,full join) 我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据...本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。 你可以在SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。
你可以通过在print语句的后面添加逗号“,”将输出限制在同一行显示(如果指定打印的字符很多,则会“换行”),代码如下所示: 当你希望通过一行而不是多行显示文本中的内容时,可以使用上述形式的代码。...当循环执行结束,清单1 打印出数值单词的和,并在后面显示非数值单词。它的输出如下所示: 02 指数运算 清单2 的Nth_exponet.py说明了如何计算一组整数的幂。...它的输出如下所示: 04 在for循环中使用split()函数 Python 支持各种便捷的字符串操作相关函数,包括split()函数和join()函数。...清单7 的输出如下所示: 05 用基础的for循环显示字符串中的字符 清单8 的StringChars1.py说明了如何打印一个文本字符串中的字符。...接下来join()函数使用一个空格作为分隔符将字符串text1中的单词连接在一起。上述代码的最后部分使用字符串XYZ替换空格作为分隔符,执行相同的连接操作。
b.范围比较 c.模式匹配 d.空值使用 代码示例: 3、连接查询 a.连接谓词 b.以JOIN关键字指定的连接 (1)内连接 (2)外连接 4、统计计算 5、排序查询 6、子查询 T-SQL基础技术...T-SQL对数据库的查询使用SELECT语句,SELECT语句具有灵活的使用方式和强大的功能, SELECT语句的基本语法格式如下: 基本语法格式 SELECT select_list /* 指定要选择的列...[ ESCAPE ‘escape_character’] 其含义是查找指定列值与匹配串相匹配的行,匹配串(即string_expression)可以是一个完整的字符串, 也可以含有通配符。...d.空值使用 空值是未知的值,判定一个表达式的值是否为空值时,使用IS NULL关键字,语法格式如下: expression IS [ NOT ] NULL 代码示例: -- 2、【选择查询】 --...|{LEFT|RIGHT|FULL}[OUTER][]JOIN INNER表示内连接,OUTER表示外连接,CROSS表示交叉连接,此为JOIN关键字指定的连接的3种类型。
领取专属 10元无门槛券
手把手带您无忧上云