数据库、计算机网络,操作系统刷题笔记7
2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开
测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库
这oracle比sql安全,强大多了,所以你需要学习,最重要的,你要是考网络警察公务员,这玩意你不会就别去报名了,耽误时间!
考网警特招必然要考操作系统,计算机网络,由于备考时间不长,你可能需要速成,我就想办法自学速成了,课程太长没法玩
刷题笔记系列文章:
【1】Oracle数据库:刷题错题本,数据库的各种概念
【2】操作系统,计算机网络,数据库刷题笔记2
【3】数据库、计算机网络,操作系统刷题笔记3
【4】数据库、计算机网络,操作系统刷题笔记4
【5】数据库、计算机网络,操作系统刷题笔记5
【6】数据库、计算机网络,操作系统刷题笔记6
文章目录
- 数据库、计算机网络,操作系统刷题笔记7
- @[TOC](文章目录)
- time_wait是为了tcp四次握手建立连接所用的状态
- WWW 的传输协议采用 HTML,这种说法正确吗?错
- 信息的极限传输速率与信道中的信噪比成对数关系log
- 用交换机取代集线器,冲突域的数量将会?增加
- 以下哪些路由项由网管手动配置,静态路由和和缺省路由
- HTTP状态码(HTTP Status Code)
- 属于DHCP客户端发送的消息是( )
- 十进制ip转化为标注字符串
- 在平均往返时间RTT为20ms的快速以太网上运行TCP/IP协议,假设TCP的最大窗口尺寸为64KB,问此时TCP协议所能支持的最大数据传输率是( )
- 数据在各层之间叫啥名字?
- 标识一个特定的服务通常用端口号。标识网络上的唯一标识符:IP地址+端口号。
- 总结
文章目录
- 数据库、计算机网络,操作系统刷题笔记7
- @[TOC](文章目录)
- time_wait是为了tcp四次握手建立连接所用的状态
- WWW 的传输协议采用 HTML,这种说法正确吗?错
- 信息的极限传输速率与信道中的信噪比成对数关系log
- 用交换机取代集线器,冲突域的数量将会?增加
- 以下哪些路由项由网管手动配置,静态路由和和缺省路由
- HTTP状态码(HTTP Status Code)
- 属于DHCP客户端发送的消息是( )
- 十进制ip转化为标注字符串
- 在平均往返时间RTT为20ms的快速以太网上运行TCP/IP协议,假设TCP的最大窗口尺寸为64KB,问此时TCP协议所能支持的最大数据传输率是( )
- 数据在各层之间叫啥名字?
- 标识一个特定的服务通常用端口号。标识网络上的唯一标识符:IP地址+端口号。
- 总结
time_wait是为了tcp四次握手建立连接所用的状态
三次握手:
四次握手
WWW 的传输协议采用 HTML,这种说法正确吗?错
西巴……
看错了,操蛋,HTML,压根不是HTTP啊
这种抹字眼的题目是真的恶心人!!!!!!!!!!!
链接:https://www.nowcoder.com/questionTerminal/4ec702dcaeed4cc2b8c921d4fa86de09
来源:牛客网
WWW服务采用客户机/服务器工作模式。
它以**超文本标记语言(Hyper Text Markup Language,HTML)**与
**超文本传输协议(Hyper Text Transfer Protocol,HTTP)**为基础,为用户提供界面一致的信息浏览系统。
http内部也是tcp连接
但是http是无连接的
很骚
信息的极限传输速率与信道中的信噪比成对数关系log
而不是正比……
行
链接:https://www.nowcoder.com/questionTerminal/e0124e9ab2b542fc86672ae7fb3b2b20
来源:牛客网
A、通俗理解:打电话时候两边可以同时说话,一定是全双工
B、超过上限会出现码间串扰的问题
C、 极限传输速率 C = W log2(1+S/N) (其中为信道的带宽(以 Hz 为单位);S 为信道内所传信号的平均功率;N 为信道内部的高斯噪声功率。S/N即信噪比),与信噪比成对数关系
选D
用交换机取代集线器,冲突域的数量将会?增加
西巴…………
因为
交换机:一个端口是一个冲突域
集线器:所有端口是一个冲突域
数量端口数量相同的情况下,比如100个,
集线器5个口子一个冲突域
交换机1个口子一个冲突域
所以集线器的冲突域是100/5=20个
交换机的冲突域是100/1=100个
那显然交换机的冲突域数量很多……
以下哪些路由项由网管手动配置,静态路由和和缺省路由
选AC 静态路由是指由用户或网络管理员手工配置的路由信息。
当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。【非自适应路由】
直接路由是指路由器各网络接口所直连的网络之间进行通信所使用的路由。直接路由是在配置完路由器网络接口的IP地址后自动生成的,因此,如果没有对这些接口进行特殊的限制,这些接口所直连的网络之间就可以直接通信。【自适应路由】
缺省路由是一种特殊的路由,可以通过静态路由配置,某些动态路由协议也可以生成缺省路由,如OSPF和IS-IS。在小型互连网中,使用缺省路由可以减轻路由器对路由表的维护工作量,从而降低内存和CPU的使用率。 【非自适应路由】
动态路由是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。 所以静态路由和缺省路由由网管手动配置。 所以答案选A和C【自适应路由】
HTTP状态码(HTTP Status Code)
做的时候,我就觉得每一个都是对的,gg
实际上4XX是代表客户端错误
区分一下就知道
5xx才是服务器的错误哦
1继续
2OK
3资源移动,需要重定向
4客户端错误
5服务器错误
链接:https://www.nowcoder.com/questionTerminal/c6a59e94fcaa4e97bba95e3be50441c3
来源:牛客网
状态码分为5类,如下:
1××(“继续努力”) => 表示接收到请求并且继续处理
2××(“开心”) => 表示动作被成功接收、理解和接受
3××(“又要跑一趟”) => 为了完成指定的动作,必须接受进一步处理
4××(“自己的问题自己解决”) => 客户端发生错误,请求中包含错误语法,请求不能被正确执行
5××(“服务不到位”) => 服务端出现错误,服务器不能正确地执行请求。
常见的状态码:
200 => 表明该请求被成功地完成,所请求的资源发送回了客户端
301 => 永久转移
304 => 服务端文件未做修改,客户端利用本地的缓存文件即可
403 => 禁止访问
404 => 请求的资源不存在(eg: 客户端输错了网址、资源被删除)
503 => 服务器暂时无法提供服务。
下面了解一下:
三、状态码详解
3.1、1xx
100:(继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101:(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。
102:由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
3.2、2XX
200:(成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
201:(已创建) 请求成功并且服务器创建了新的资源。
202:(已接受) 服务器已接受请求,但尚未处理。
203:(非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
204:(无内容) 服务器成功处理了请求,但没有返回任何内容。
205:(重置内容) 服务器成功处理了请求,但没有返回任何内容。
206:(部分内容) 服务器成功处理了部分 GET 请求。
208:(已经报告)一个DAV的绑定成员被前一个请求枚举,并且没有被再一次包括。
226:(IM Used)服务器已经满足了请求所要的资源,并且响应是一个或者多个实例操作应用于当前实例的结果。
3.3、3XX
300:(多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301:(永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302:(临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303:(查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304:(未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305:(使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
307:(临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
308:(永久转移)这个请求和以后的请求都应该被另一个URI地址重新发送。307、308和302、301有相同的表现,但是不允许HTTP方法改变。例如,请求表单到一个永久转移的资源将会继续顺利地执行。
3.4、4XX
400:(错误请求) 服务器不理解请求的语法。
401:(未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
402:该状态码是为了将来可能的需求而预留的。
403:(禁止) 服务器拒绝请求。
404:(未找到) 服务器找不到请求的网页。
405:(方法禁用) 禁用请求中指定的方法。
406:(不接受) 无法使用请求的内容特性响应请求的网页。
407:(需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
408:(请求超时) 服务器等候请求时发生超时。
409:(冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
410:(已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
411:(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
412:(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
413:(请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414:(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
415:(不支持的媒体类型) 请求的格式不受请求页面的支持。
416:(请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
417:(未满足期望值) 服务器未满足"期望"请求标头字段的要求。
418:(我是一个茶壶)这个代码是在1998年作为传统的IETF April Fools‘ jokes被定义的在RFC2324,超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现。RFC指定了这个代码应该是由茶罐返回给速溶咖啡。
419:(认证超时)并不是HTTP标注的一部分,419认证超时表示以前的有效证明已经失效了。同时也被用于401未认证的替代选择为了从其它被拒绝访问的已认证客户端中指定服务器的资源。
420:(方法失效)不是HTTP的标准,但是被Spring定义在HTTP状态类中当方法失时使用。这个状态码已经不推荐在Spring中使用。
420:(提高你的耐心)也不是HTTP标准的一部分,但是被版本1的Twitter搜索和趋势APi返回当客户端的速率被限制的时候。其它的服务提供商可能会使用429太多的请求响应码来代替。
421:从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。通常,这里的IP地址指的是从服务器上看到的客户端地址(比如用户的网关或者代理服务器地址)。在这种情况下,连接数的计算可能涉及到不止一个终端用户。
422:请求格式正确,但是由于含有语义错误,无法响应。(RFC 4918 WebDAV)423 Locked
当前资源被锁定。(RFC 4918 WebDAV)
424:由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH。(RFC 4918 WebDAV)
425:在WebDav Advanced Collections 草案中定义,但是未出现在《WebDAV 顺序集协议》(RFC 3658)中。
426:客户端应当切换到TLS/1.0。(RFC 2817)
428:(需要前置条件)原始服务器需要有条件的请求。当客户端GET一个资源的状态的时候,同时又PUT回给服务器,与此同时第三方修改状态到服务器上的时候,为了避免丢失更新的问题发生将会导致冲突。
429:(过多请求)用户已经发送了太多的请求在指定的时间里。用于限制速率。
431:(请求头部字段太大)服务器由于一个单独的请求头部字段或者是全部的字段太大而不愿意处理请求。
440:(登陆超时(微软))一个微软的扩展,意味着你的会话已经超时。
444:(无响应)被使用在Nginx的日志中表明服务器没有返回信息给客户端并且关闭了连接(在威慑恶意软件的时候比较有用)。
449:(重试(微软))一个微软的扩展。请求应该在执行适当的动作之后被重试。
450:(被Windows家长控制阻塞(微软))一个微软的扩展。这个错误是当Windows家长控制打开并且阻塞指定网页的访问的时候被指定。
451:(由于法律原因而无效(因特网草稿))被定义在因特网草稿“一个新的HTTP状态码用于法律限制的资源”。被用于当资源的访问由于法律原因被禁止的时候。例如检查制度或者是政府强制要求禁止访问。一个例子是1953年dystopian的小说Fahrenheit 451就是一个非法的资源。
451:(重定向(微软))被用在Exchange ActiveSync中如果一个更有效的服务器能够被使用或者是服务器不能访问用户的邮箱。客户端会假定重新执行HTTP自动发现协议去寻找更适合的服务器。
494:(请求头太大(Nginx))Nginx内置代码和431类似,但是是被更早地引入在版本0.9.4(在2011年1月21日)。
495:(证书错误(Nginx))Nginx内置的代码,当使用SSL客户端证书的时候错误会出现为了在日志错误中区分它和4XX和一个错误页面的重定向。。
496:(没有证书(Nginx))Nginx内置的代码,当客户端不能提供证书在日志中分辨4XX和一个错误页面的重定向。
497:(HTTP到HTTPS(Nginx))Nginx内置的代码,被用于原始的HTTP的请求发送给HTTPS端口去分辨4XX在日志中和一个错误页面的重定向。
498:(令牌超时或失效(Esri))由ArcGIS for Server返回。这个代码意味着令牌的超时或者是失效。
499:(客户端关闭请求(Nginx))被用在Nginx日志去表明一个连接已经被客户端关闭当服务器仍然正在处理它的请求,是的服务器无法返货状态码。
499:(需要令牌(Esri))由ArcGIS for Server返回。意味着需要一个令牌(如果没有令牌被提交)。
3.5、5XX
500:(服务器内部错误) 服务器遇到错误,无法完成请求。
501:(尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502:(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503:(服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504:(网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505:(HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
506:由《透明内容协商协议》(RFC 2295)扩展,代表服务器存在内部配置错误:被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。
507:服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918)
509:服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。
510:获取资源所需要的策略并没有没满足。(RFC 2774)。
508:(发现环路)服务器发现了一个无限的循环档处理请求的时候。
511:(需要网络授权)客户端需要授权去火的网络的访问权限。一般用于代理交互中被用来进行网络的访问控制。
520:(未知错误)这个状态码也没有被指定在任何RFC中,并且只会被一些服务器返回,例如微软的Azure和CloudFlare服务器:”520错误。本质上是一个捕获全部的响应当原始服务器返回一些未知的或者一些不能被忍受或者被解释的(协议违反或者空响应)”。
598:(网络读取超时异常(未知))这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络读取超时在一个客户端之前的代理的后面。
599:(网络连接超时异常(未知))这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络连接超时在一个客户端之前的代理的后面。
————————————————
版权声明:本文为CSDN博主「闲着无聊整些资料」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43418737/article/details/121851847
属于DHCP客户端发送的消息是( )
又是咬文爵字
客户端:discover,request
服务器:offer,ack
TCP/IP协议族中定义的层次结构中包含( )
网络接口层
网络层
传输层
应用层
十进制ip转化为标注字符串
最后一位是3所以 转换后最后应该是个奇数d是153选d
技巧
不是硬算的
在平均往返时间RTT为20ms的快速以太网上运行TCP/IP协议,假设TCP的最大窗口尺寸为64KB,问此时TCP协议所能支持的最大数据传输率是( )
计算要统一单位
数据在各层之间叫啥名字?
应用层——消息(message)
传输层——数据段(segment)
网络层——分组、数据包(packet,datagram)
链路层——帧(frame)
物理层——P-PDU(bit)
标识一个特定的服务通常用端口号。标识网络上的唯一标识符:IP地址+端口号。
应用层:比如
就这意思
缺job_id
因为job_id是not null约束
至于sal,mgr_id,department_id对可以为空的
相比于A就OK的
视图的规矩:
当是图定义中,包含以下之一时,不能insert update
组函数:group by,distinct,rownum,列为定义表达式(sal*12)
当是图定义中,包含以下之一时,不能delete
组函数:group by,distinct,rownum
建议:视图只用于查看,而不要增删改,可以给视图增加with read only
因此CD都不行哦
join默认是inner join,啥也不写就是内连接,
这种题经常出现的
自连接:
from employees e join employees m
左边是员工表,右边是经理表
链接条件就是e.manager_id=m.employee_id
限定条件是员工薪水超过4000的那些员工中
选择员工id
名字
薪水
其经理的id
其经理的名字
自然就是103,105,108,110,120
顺便说他们的经理是120,108,110,无,110
A好像OK的,不对的,他108那个经历名字gg
B缺了110
C才是完全正确的
D 110对应没有经理
null不可以用=,!=
必须用is,is not null
sql的执行过程
group之后可以用聚合函数,在group之前绝对不可以直接用聚合函数,除非你用子查询把平均值搞出来
本题问题就在,你直接where筛选表格的时候,没有group by,你直接用avg是错误的!!!!
一般聚合函数用在select里面
而不是where,因为where是筛选表的,不是计算表的
反正你记住,组函数一定在select不能出现在where里面就行,可以在select,having,distinct,order by limit中
简单的排序
默认的ASC
和上面题目一样
默认升序asc
A有的是隐式自动提交的,A有歧义的——insert,update,delete,不会自动commit,A对吧
C是错误的,DDL自动隐式提交,咱们不需要commit
DCL,DDL就是自动commit
D和A配对的,没错,就需要
round是需要四舍五入
trunc是直接阶段
C正确
-1那个位置四舍五入,50
隐式转换——最好别用这种方法,不好查错
显式转换
字符是桥梁,可以
to_char(数字/日期,字符格式)
to_number(字符串,数字格式)
to_date(字符串,日期格式)
9是一位数字,0代表0,
SQL> select to_char(sysdate,'yyyy') from dual;
TO_CHAR(
--------
2022
A是OK的
B里面应该是字符串,你咋搞一个date
SQL> select sysdate from dual;
SYSDATE
--------------
04-12月-22
日月年
你想要直接转,那就要写好格式
SQL> select to_date(sysdate,'dd-mon-yy') from dual;
TO_DATE(SYSDAT
--------------
04-12月-22
你发现了吗,格式对应了,就没问题的
它把sysdate自动转化为字符串了,美滋滋
所以,格式一定要对其
最好不要用隐式转换!!!!!!!!!!!!!!
它还会使得索引失效
SQL> select substr(sysdate,8) from dual;
SUBSTR(SYSDATE,8)
--------------------------------------------------------
22
SQL> select sysdate from dual;
SYSDATE
--------------
04-12月-22
substr从第8位开始截取
然后
decode(字段,条件,表达式1,条件,表达式2……)
相当于switch case
decode你不能乱用
22根yyyy有啥关系,参数都不够,完全没法搞
select last_name, salary 涨薪前, decode(job_id,‘SA_REP’,salary+1000,‘SA_MAN’,salary+500,‘ST_CLERK’,salary+500,default, salary+0) 涨薪后 from employees;
没有那个default
SQL> select last_name, salary 涨薪前, decode(job_id,'SA_REP',salary+1000,'SA_MAN',salary+500,'ST_CLERK',salary+500,salary+0) 涨薪后 from employees;
LAST_NAME 涨薪前 涨薪后
-------------------------------------------------- ---------- ----------
Hartstein 13000 13000
Fay 6000 6000
Mavris 6500 6500
Baer 10000 10000
Higgins 12008 12008
Gietz 8300 8300
Lu 23233 23233
Lu 23233 23233
OConnell 2600 2600
Grant 2600 2600
Whalen 4400 4400
LAST_NAME 涨薪前 涨薪后
-------------------------------------------------- ---------- ----------
Kochhar 17000 17000
King 24000 24000
De Haan 17000 17000
Hunold 9000 9000
Ernst 6000 6000
Austin 4800 4800
Pataballa 4800 4800
Lorentz 4200 4200
Greenberg 12008 12008
Faviet 9000 9000
Chen 8200 8200
LAST_NAME 涨薪前 涨薪后
-------------------------------------------------- ---------- ----------
Sciarra 7700 7700
Urman 7800 7800
Popp 6900 6900
Raphaely 11000 11000
Khoo 3100 3100
Baida 2900 2900
Tobias 2800 2800
Himuro 2600 2600
Colmenares 2500 2500
Weiss 8000 8000
Fripp 8200 8200
LAST_NAME 涨薪前 涨薪后
-------------------------------------------------- ---------- ----------
Kaufling 7900 7900
Vollman 6500 6500
Mourgos 5800 5800
Nayer 3200 3700
Mikkilineni 2700 3200
Landry 2400 2900
Markle 2200 2700
Bissot 3300 3800
Atkinson 2800 3300
Marlow 2500 3000
Olson 2100 2600
LAST_NAME 涨薪前 涨薪后
-------------------------------------------------- ---------- ----------
Mallin 3300 3800
Rogers 2900 3400
Gee 2400 2900
Philtanker 2200 2700
Ladwig 3600 4100
Stiles 3200 3700
Seo 2700 3200
Patel 2500 3000
Rajs 3500 4000
Davies 3100 3600
Matos 2600 3100
LAST_NAME 涨薪前 涨薪后
-------------------------------------------------- ---------- ----------
Vargas 2500 3000
Russell 14000 14500
Partners 13500 14000
Errazuriz 12000 12500
Cambrault 11000 11500
Zlotkey 10500 11000
Tucker 10000 11000
Bernstein 9500 10500
Hall 9000 10000
Olsen 8000 9000
Cambrault 7500 8500
LAST_NAME 涨薪前 涨薪后
-------------------------------------------------- ---------- ----------
Tuvault 7000 8000
King 10000 11000
Sully 9500 10500
McEwen 9000 10000
Smith 8000 9000
Doran 7500 8500
Sewall 7000 8000
Vishney 10500 11500
Greene 9500 10500
Marvins 7200 8200
Lee 6800 7800
LAST_NAME 涨薪前 涨薪后
-------------------------------------------------- ---------- ----------
Ande 6400 7400
Banda 6200 7200
Ozer 11500 12500
Bloom 10000 11000
Fox 9600 10600
Smith 7400 8400
Bates 7300 8300
Kumar 6100 7100
Abel 11000 12000
Hutton 8800 9800
Taylor 8600 9600
LAST_NAME 涨薪前 涨薪后
-------------------------------------------------- ---------- ----------
Livingston 8400 9400
Grant 7000 8000
Johnson 6200 7200
Taylor 3200 3200
Fleaur 3100 3100
Sullivan 2500 2500
Geoni 2800 2800
Sarchand 4200 4200
Bull 4100 4100
Dellinger 3400 3400
Cabrio 3000 3000
LAST_NAME 涨薪前 涨薪后
-------------------------------------------------- ---------- ----------
Chung 3800 3800
Dilly 3600 3600
Gates 2900 2900
Perkins 2500 2500
Bell 4000 4000
Everett 3900 3900
McCain 3200 3200
Jones 2800 2800
Walsh 3100 3100
Feeney 3000 3000
已选择109行。
一定不要用case when then else end
decode是一个非常简单的多条件分支的控制语句
decode是最方便的
case when then else end很麻烦的
通用函数——条件判断函数decode很牛
还有nvl判断是否为null,是null,请你取b替代
SQL> select nvl(null,1) from dual;
NVL(NULL,1)
-----------
1
a是null,则返回b
多条件nvl2
a是null,取c
a不是null,取b
三目运算符
SQL> select nvl2(null,1,2) from dual;
NVL2(NULL,1,2)
--------------
2
SQL> select nvl2(1,1,2) from dual;
NVL2(1,1,2)
-----------
1
还有一个nullif(a,b)
如果a=b,则返回null
否则返回a
SQL> select nullif(1,1) from dual;
NULLIF(1,1)
-----------
SQL> select nullif(1,2) from dual;
NULLIF(1,2)
-----------
1
前面俩相等,那就返回null
不相等,则返回a
coalesce(a,b,c,d)从左往右找到第一个不为null的值
a-b-c-d继续找
找第一个不为null的值
SQL> select coalesce(null,null,null,1,null) from dual;
COALESCE(NULL,NULL,NULL,1,NULL)
-------------------------------
1
SQL> select coalesce(null,null,null,null) from dual;
C
-
SQL>
找不到就只能撞南墙了
关键字是要加单引号的
字符串加不加单引号有啥区别?
SQL> create table test6(id number,name varchar2(20));
表已创建。
SQL> insert into test6 values(1,'1');
已创建 1 行。
SQL> insert into test6 values(2,'2');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from test6;
ID NAME
---------- ----------------------------------------
1 1
2 2
隐式转换将数字字符串转数字
SQL> select * from test6 where name=2;
ID NAME
---------- ----------------------------------------
2 2
那你要是名字呢??
字母就不行了
SQL> insert into test6 values(3,'aaa');
已创建 1 行。
SQL> commit
2 ;
提交完成。
SQL> select * from test6 where name=aaa;
select * from test6 where name=aaa
*
第 1 行出现错误:
ORA-00904: "AAA": 标识符无效
SQL> select * from test6 where name='aaa';
ID NAME
---------- ----------------------------------------
3 aaa
你看看,这就需要加单引号的
隐式转换可以,还能玩,不能转换那就gg
所以本题选D
总结
提示:重要经验:
1)
2)学好oracle,操作系统,计算机网络,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。