fro语句里面不能嵌套多个if语句吗?

在sql语言中,一个select-from-where语句成为一个查询块,将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询成为嵌套查询。外层的查询块称为外层查询或父查询,内层的查询称为内层查询或子查询。

注意点:子查询的select语句不能使用order by 子句,order by 只能对最终查询结果排序。

1、相关子查询/关联子查询:子查询的查询条件依赖于父查询,比如,如果子查询需要执行多次,即采用循环的方式,先从外部查询开始,每次都传入子查询进行查询,然后再将结果反馈给外部,这种嵌套的执行方式就称为关联子查询。
2、不相关子查询/非相关子查询:子查询的查询条件不依赖于父查询,比如:子查询从数据表中查询了数据结果,这个数据结果只执行一次,然后这个数据结果作为主查询的条件进行执行,这样的子查询叫做非关联子查询。

2.1 带有比较运算符的子查询

带有比较运算符的子查询是指父查询和子查询之间用比较运算符连接,当用户能确切知道子查询返回的是单个值时,可以用带有比较运算符的子查询;

例如:子查询是查询学生表中姓名为张三的学生所在的系,父查询是查询该系所有学生的姓名和学号。张三只能在一个系,所以子查询的结果是单个值,可以使用比较运算符连接。

2.2 带有in谓词的子查询

用在where子句中用来判断查询的属性是否在多个值的列表中。返回满足in列表中的满足条件的记录。

有的系统用any,有的用some;

子查询返回单值时可以用比较运算符,但返回多值时使用any/some谓词修饰符。而使用any(some)或all谓词时则必须同时使用比较运算符,或者说any或all是为了配合比较运算符而产生的。

exists直译就是存在,代表存在量词。带有exists谓词的子查询不返回任何数据,只产生逻辑真值”true“或逻辑假值”false“。它只查找满足条件的那些记录。一旦找到第一个匹配的记录后,就马上停止查找。

使用存在量词exists后,若子查询结果为空,则外层的where子句返回真值,否则返回假值。
由exists引出的子查询,其目标列表达式通常都是用 * ,因为带exists的子查询只返回真值或假值,给出列名没有实际意义。

  • next():读取输入结束符之前的数据,对应判断方法为hasNext()
    • 一定要读取到有效字符后才可以输入
    • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
    • next()不能得到带有空格的字符串
    • 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有值
  • 练习:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非法字来结束输入并输出执行结果
//一定要记得关闭输入
  • Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一行一行执行
  • 顺序结构是最简单的算法结构
  • 语句语句之间,诳语康之间是按照从上到下的顺序进行的,他是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构
    如果布尔表达式为true将执行这里的语句
    如果布尔表达式为true将执行这里的语句 如果布尔表达式为false将执行这里的语句
    如果布尔表达式1为true将执行这里的语句 如果布尔表达式2为true将执行这里的语句 如果布尔表达式3为true将执行这里的语句 如果上面布尔表达式都为false将执行这里的语句
    如果布尔表达式为true将执行这里的语句 如果布尔表达式2为true将执行这里的语句
  • switch case语句判断一个变量与一系列值中的某个值是否相等,每个值称为一个分支
  • case穿透现象:当匹配到某一个case后语句中没有break,则往后的case中的语句也会输出,直至输出完或遇见break
    • 只要布尔表达式为true,循环就会一直执行下去
    • 我们多数情况下是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环
    • 少部分情况需要循环一直循环执行,比如服务器的请求响应监听等
    • 循环条件一直为true就会造成无限死循环,在编写过程中应尽量避免死循环
    • 与whiled区别是循环体至少被执行一次
    • for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构
    • for循环的执行次数是在执行前就确定的
    for(初始化;布尔表达式;更新){
    
 最先执行初始化步骤,可以声明一种类型,但可以初始化一个或多个循环控制变量,也可以空的。然后检测布尔表达式的值。
 如果为true,循环体被执行,如果为false,循环终止,开始执行循环体后面的语句。执行一次循环后,更新循环控制变量(迭代因子控制循
 环变量的增减),再次检测布尔表达式,循环执行上面的过程。
//计算0到100之间奇数和偶数的和
//用for循环输出1-1000之间能被5整除的数,并且每行输出3个
  • 增强for循环:主要用于数组和集合
    • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。起作用域限定在循环语句块,其值与此时数组元素的值相等。
    • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法

  • break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch中使用)

  • continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断

goto(不要求掌握)

  • goto关键字很早出现在程序设计语言中,尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用;Java没有goto.然而,在break和continue这两个关键字的身上,我们仍能看出一些goto的影子--带标签的break和continue
  • 标签是指后面跟着一个冒号的标识符,例如 label:
  • 对Java来说唯一用到标签的地方是在循环语句之前。而在设置循环语句之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常之中断当前循环,但若随同标签使用,他们就会中断到存在标签的地方。
//质数:指大于1的自然数中,除了1和它本身以外不在有其他因数的自然数

我要回帖

更多关于 多个if函数嵌套 的文章

 

随机推荐