数据库语言关于not exist的用法

数据库语言关于not exist的用法,第1张

卤煮你好,

答案写法很好,我看了很久才弄明白,但我认为有漏洞,实际应用的话应该需要完善

我先说我的写法,再解释答案的逻辑

我的:

select stsno, stsname

FROM student st

where exists(

select 1 from SC a join Cource b on aCno=bCno where aSno=stSno and

aCno in(3,5,8) having count()=3

)

或者

select stsno, stsname

FROM student st

where exists(

select 1 from SC where Sno=stSno and

Cno in(3,5,8) having count()=3

)

/通过和上面的比较你可以发现其实Cource其实没有作用,但是第一种写法更加严密,因为可以判断SC中的Cno是不是有效的/

-------分割线--------------------------

再来看看这个答案

SELECT studentsno, studentsname

FROM student

WHERE not exists(select coursecno

from course

where coursecno in (3,5,8) and not exists(select

from sc

where studentsno=scsno and coursecno=sccno));

看起来很复杂,我们先来拆分下

因为SQL 的查询和执行是逐条进行的,主体是从Student表中中选数据,我们假设Student中有小明这个人,如何判断小明是不是该出来呢,只要

select coursecno

from course

where coursecno in (3,5,8) and not exists(select

from sc

where ‘小明’=scsno and coursecno=sccno)

这一大坨不返回结果即可,

这一坨

,select coursecno

from course

where coursecno in (3,5,8) and not exists(select

from sc

where ‘小明’=scsno and coursecno=sccno)

意思就比较明确了(我这儿迷糊了好一阵子)

只要小明同时选修了3,5,8那么这段话就不返回结果,所以最终小明就出现了!

/ps题目有个地方我没太看明白,“3且5且8” 是指的是同时选修3,5,8呢还是同时选修3,5,8且只选修这三个。如果是后者这3个写法还要再加一句exists/

----三段写法全部测试通过,卤煮可以尽情测试~要给分啊!!!!!!!!!!!!

查询不在这个范围类的数据。

例如:select from student where classID not in (1,4,5)查出的就是classID 不在1,4,5这个范围内的数据。

不建议用not in这个关键词来做查询,理由:

1、效率低,2、在使用中容易出现问题,或查询结果有误

PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。

在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据 *** 作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等 *** 作实现复杂的功能或者计算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。

扩展资料:

plsql特性:

1、PL/SQL完善器

该完善器允许您通过用户定义的规则对SQL和PL/SQL代码进行规范化处理。在编译、保存、打开一个文件时,代码将自动被规范化。该特性提高了您编码的生产力,改善了PL/SQL代码的可读性,促进了大规模工作团队的协作。

2、SQL 窗口

该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL编辑器提供了同PL/SQL编辑器相同的强大特性。

3、命令窗口

使用PL/SQL Developer 的命令窗口能够开发并运行SQL脚本。该窗口具有同SQLPlus相同的感观,另外还增加了一个内置的带语法加强特性的脚本编辑器。这样,您就可以开发自己的脚本,无需编辑脚本/保存脚本/转换为SQLPlus/运行脚本过程,也不用离开PL/SQL Developer集成开发环境。

参考资料来源:百度百科-plsql

select

from table

where

not ()

为什么放在外面 是因为 里面的是一个结果集

所要表示的 不在结果集中的 所以not放在外面

标准SQL中用like进行模糊查询,有两个通配符:%百分号代表任意个字符,_下划线代表一个字符。

1、like'Mc%' 将搜索以字母 Mc 开头的所有字符串。

2、like'%inger' 将搜索以字母 inger 结尾的所有字符串。

3、like'%en%' 将搜索在任何位置包含字母 en 的所有字符串。

SQL LIKE *** 作符语法

‘_':下划线,表示1个任意字符;如 where name like '_am',表示仅第一位任意,并以'am'结尾,结果如"Tam","Mam","Pam"等。

'%’: 百分号,表示任意个任意字符;如 where name like ‘%am',表示前面可以有任意位,只要以'am'结尾,结果如"abcam",“bcdefgham","qwertyuiopam","am"等等。

百度百科-SQL LIKE

你的语句可以这样写:

select

from

users

where

userid

not

in

(select

userid

from

users

limit

3)

limit

3

但是,如果你是要返回每3个一页的第二页,用下面的语句更好:

select

from

users

limit

3,3

这就是mysql比许多数据库都更适合用于internet的原因之一:方便的支持结果分页。

以上就是关于数据库语言关于not exist的用法全部的内容,包括:数据库语言关于not exist的用法、plsql查询语句中的not in什么意思、数据库嵌套查询中为什么WHERE语句中的NOT放在外面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10135715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存