会显示如下窗口,我们 点击 自定义课程 ——> 再点击 左上角的 添加
有单个添加、批量添加 大家可以根据自己的需求来,进行相对应的选择
保存好后,点击退出该窗口,重新再次,点击 打字测试 ——> 点击你刚刚将练习内容的复制到的那个模式里,——> 选择右上角的 课程选择 ——> 自定义课程 ,从中你可以看到,你刚刚自行编辑的打字练习内容中 课程名称 ,选择你所需要的,就可以开始你的打字练习之旅了
子查询要包含在括号内
将子查询放在比较条件的右侧,当然放在左侧也是可以的,但是放在右侧更有助于阅读
子查询 除了不能在 GROUP BY分组 和 LIMIT分页 之外,还有就是 Mysql 中的分组函数(MIN, MAX,SUM,AVG,COUNT) ,中不能使用子查询,其他地方都可以使用子查询,不过不同的地方使用子查询存在一定的其他的约束条件
单行操作符 对应单行子查询 ,多行操作符 对应多行子查询
单行子查询 :有一个限定条件,那就是 子查询的结果必须而且只能返回一行一列的结果 ,不可以返回多行多列数据,单行子查询的操作符无法处理多行多列的数据会报错
在 FROM 后面的子查询,可以将子查询的查询结果,当做为一张临时表使用,而该子查询临时表的分组函数 要使用 别名,否则无法使用子查询中的临时表,索引出的字段,而是被当作函数处理,没有该函数,从而报错
在 CASE … WHEN … THEN 子句中使用子查询 注意 使用上括号
子查询中存在空值 NULL ,不会报错,而是没有结果显示
多行子查询 也称为是 集合比较子查询 ,对于子查询中多行数据返回的处理判断比较,使用 多行比较操作符
IN 在多行子查询中的使用和在其他的地方的使用以及作用都是一样的,只要该查询的字段的值在 IN(在括号中出现了) 就返回 true , 没有出现返回 false,NOT IN : 返回不在该 IN(括号的值)
ANY 在子查询当中的使用:需要配合单行操作符一起使用,其中单行操作符在多行操作符的前面(这里的前面以左边作为参考) , 表示: 返回子查询中的任意一个的值满足条件的值,其中 SOME 其作用以及使用都是一样的,当作是 ANY 的一个别名吧
< ANY : 返回主查询中的结果集,中 小于 子查询中的 任意 一个值,如果该值不存在,则返回 false
ANY : 返回主查询中的结果集,中 大于 子查询中的 任意 一个值,如果该值不存在,则返回 false
= ANY : 返回主查询中的结果集,中 等于 子查询中的 任意 一个值,如果该值不存在,则返回 false
!= ANY/ <>ANY : 返回主查询的结果集,中 等于 子查询中的 任意 一个值,如果该值不存在,则返回 false
ALL在子查询中的的使用:同样需要单行操作符的配合,其中单行操作符在该多行操作符的前面(这里的前面是以左边为参考) ,表示:子查询中的所有值都满足条件
< ALL : 返回主查询的结果集 ,中 小于 子查询中所有 (每一个)的值,才为 true ,但凡存在一个不满足都返回 false
ALL : 返回主查询的结果集,中 大于 子查询中 所有 (每一个)的值,才为 true ,但凡存在一个不满足都返回 false
= ALL : 返回主查询的结果集, 中 等于 子查询中 所有 (每一个)的值,才为 true ,但凡存在一个不满足都返回 false
!= ALL / <>ALL : 返回主查询的结果集, 中 不等于 子查询中 所有 (每一个)的值,才为 true ,但凡存在一个不满足都返回 false
关联子查询的执行逻辑
在关联子查询中,对于外部(主)查询返回的每一行数据,内部(子)查询都要执行一次。另外,在关联子查询中是 信息流是双向的 ,外部(主)查询的每一行数据传递一个值给子查询,然后,子查询为每一行数据执行一次并返回它的记录。然后,外部(主)查询根据返回的记录做出决策
在关联子查询中使用上表别名:因为在关联子查询中的,关联条件基本上都是多个表中共同拥有的属性(字段),如果不使用表别名,加以区分,Mysql 无法确定字段信息是来自那个表中的数据,从而导致报错,或者是返回的数值错误,这是明显的字段冲突的错误
关联子查询的关联条件一定要写在子查询中
关联子查询 通常也会和 EXISTS 操作符一起来使用,用来检查在子查询中是否存在满足条件的行,在子查询中存在满足该条件的行,返回 true ,如果在子查询中不存在满足条件的行:返回 false ,
EXISTS : 在关联子查询中,满足关联条件的返回 true ,不满足条件的,返回 false ,基本上可以使用表连接代替使用
NOT EXISTS : 在关联子查询中,返回不满足关联条件的结果