• 数据库、计算机网络,操作系统刷题笔记6


    数据库、计算机网络,操作系统刷题笔记6

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开
    测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库
    这oracle比sql安全,强大多了,所以你需要学习,最重要的,你要是考网络警察公务员,这玩意你不会就别去报名了,耽误时间!
    考网警特招必然要考操作系统,计算机网络,由于备考时间不长,你可能需要速成,我就想办法自学速成了,课程太长没法玩

    刷题笔记系列文章:
    【1】Oracle数据库:刷题错题本,数据库的各种概念
    【2】操作系统,计算机网络,数据库刷题笔记2
    【3】数据库、计算机网络,操作系统刷题笔记3
    【4】数据库、计算机网络,操作系统刷题笔记4
    【5】数据库、计算机网络,操作系统刷题笔记5


    子查询先做最内层
    在这里插入图片描述
    最内层:
    从客户表中,找纽约的用户id
    所以锁定范围在纽约
    在这里插入图片描述

    然后第二个括号
    在订单表中查这些顾客id的订单总量
    在这里插入图片描述
    主查询展示id和订单总量,

    整个命令的含义:就是说展示orders表中,订单总量大于纽约的订单总量最小值的那些id和订单数量

    妥了,很简单的
    any是任意一个,最小值
    all是全部,最大值
    在这里插入图片描述
    好说
    结果就是
    在这里插入图片描述
    好说
    在这里插入图片描述
    在这里插入图片描述
    第一个小括号去掉,无所谓
    第二个小括号去掉,无所谓
    第三个外面的小括号去掉,无所谓
    中间的小括号去掉,无所谓
    都是乘法,没啥大不了

    所以没有影响的
    在这里插入图片描述
    优先级:()最大,先乘除后加减
    优先级相同,从右往左,右边优先
    在这里插入图片描述
    在这里插入图片描述

    定义约束的格式,要清楚哦

    表级约束
    列级约束

    作用于一列
    第一种,定义列直接后面跟约束:

    SQL> create table test4(stuno number primary key);
    SQL> create table test4(stuno number not null);
    SQL> create table test4(stuno number unique);
    SQL> create table test4(stuno number default 1);
    SQL> create table test4(stuno number check(sunno>3));
    
    表已创建。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    unique不适用于null哦!!!!!!

    SQL> create table test4(id number primary key,name varchar(20) not null unique,address varchar(20) default 'guangzhou' check(length(address)>1), other varchar(20) unique);
    
    表已创建。
    
    SQL> insert into test4(id,address,other) values(1,default,'a');
    insert into test4(id,address,other) values(1,default,'a')
    *1 行出现错误:
    ORA-01400: 无法将 NULL 插入 ("HR"."TEST4"."NAME")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    你想插入name为null那是不行的
    因为限定了name是非空且唯一的

    SQL> insert into test4(id,name,address,other) values(2,'a',default,null);
    
    • 1

    unique可以为null而且不是唯一哦

    随你

    SQL> insert into test4(id,name,address,other) values(3,'c',default,null);
    
    已创建 1 行。
    
    • 1
    • 2
    • 3

    看见没有,unique对null是无效的哦

    SQL> insert into test4(id,name,address,other) values(4,'c',default,null);
    insert into test4(id,name,address,other) values(4,'c',default,null)
    *1 行出现错误:
    ORA-00001: 违反唯一约束条件 (HR.SYS_C0011645)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    但是你看关于name的限定,一个非空,一个唯一,c就不能重复哦

    SQL> set linesize 200;
    SQL> select * from test4;
    
            ID NAME                                     ADDRESS                                  OTHER
    ---------- ---------------------------------------- ---------------------------------------- ----------------------------------------
             1 a                                        guangzhou                                a
             3 c                                        guangzhou
    
    SQL>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    目前就这个样子了
    在这里插入图片描述
    注意,有多个约束时
    default必须放第一个!!!!!!!!!

    SQL> create table test5(id number primary key,name varchar(20) not null unique,address varchar(20) check(length(address)>1) default 'aaaa', other varchar(20) unique);
    create table test5(id number primary key,name varchar(20) not null unique,address varchar(20) check(length(address)>1) default 'aaaa', other varchar(20) unique)
                                                                                                                           *1 行出现错误:
    ORA-00907: 缺失右括号
    
    • 1
    • 2
    • 3
    • 4
    • 5

    你瞅瞅check在default前面就不行
    多个约束,必须default在前面
    !!!

    别的约束可以随意换!

    主键约束和唯一约束,报错都是唯一约束失败,因为主键非空且唯一。

    好说
    在这里插入图片描述

    表级约束:

    constraint 约束名字 约束类型(字段)
    好处是可以同时放好多字段,而不是每个字段都去给它限定
    在这里插入图片描述

    SQL> create table test5(id number,name varchar(20),address varchar(20),other varchar(20),constraint pk_id primary key(id),constraint uq_name_address unique(name,address));
    
    表已创建。
    
    • 1
    • 2
    • 3

    constraint uq_name_address unique(name,address));
    constraint 跟约束的名字,跟约束的类型,加括号(中间是约束的字段)

    表级方式,可以加外键哦
    命名方式也很简单
    A表的a字段,B表的b字段
    constraint 跟约束的名字,跟约束的类型,加括号(A表的a字段)参考references B表(b字段)

    在这里插入图片描述
    所以;
    在这里插入图片描述
    A references后面表名(字段),没有括号,不行
    B 没有明确说我是哪种约束类型
    在这里插入图片描述
    C有约束类型怎么放最后了,gg
    D约束类型放前面可以,后面跟约束名字,和参考表,OK的

    SQL> create table dept40(id number, d_id number, constraint dept40_fk foreign key(d_id) references dept50(id));
    create table dept40(id number, d_id number, constraint dept40_fk foreign key(d_id) references dept50(id))
    
    ORA-02270: 此列列表的唯一关键字或主键不匹配
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    反正这种是标准格式,唯独D可以
    在这里插入图片描述
    在这里插入图片描述
    将日期转换为字符标准格式
    函数就是tochar
    A括号里面是一个今天日期-受雇日期,得天数,你没法转化为日期格式啊

    SQL> select sysdate-(sysdate-1) from dual;
    
    SYSDATE-(SYSDATE-1)
    -------------------
                      1
    SQL> select to_date(sysdate-(sysdate-1)) from dual;
    select to_date(sysdate-(sysdate-1)) from dual
                          *1 行出现错误:
    ORA-01840: 输入值对于日期格式不够长
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    看见了吗,2天日期减完没法转日期了,数字怎么转
    在这里插入图片描述

    B括号里面是日期,不需要转化为日期

    SQL> select to_date('20220202','yy-mm-dd') from dual;
    
    TO_DATE('20220
    --------------
    02-2-22
    
    • 1
    • 2
    • 3
    • 4
    • 5

    to_date的本意是将字符串格式的日期,转化为日期,本身是日期没法转的

    SQL> select to_date(to_char(sysdate,'yy-mm-dd'),'yy-mm-dd') from dual;
    
    TO_DATE(TO_CHA
    --------------
    01-12-22
    
    • 1
    • 2
    • 3
    • 4
    • 5

    你看,我把今天的日期转字符串,你再通过这种方式转日期,就OK了
    很简单的

    C括号里面是日期,可以转化为字符串,格式OK【很正确】
    C正确哦!
    D已经是天数,没法转化为字符串,和A类似
    在这里插入图片描述
    delete from
    才是删除哦

    SQL> insert into test5 values(1,'1','11','1');
    
    已创建 1 行。
    
    SQL> delete test5;
    
    已删除 1 行。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    卧槽,还可以这么搞???????????????
    所以答案选择C哦,语法没问题

    语法上可以,但是不建议这么玩哦
    最好是delete from

    其实直接delete也行的,我记得清华那个老师讲过,就是整体删除,问题不大的。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    C默认名字也行吧
    DOK的
    那就优先D

    别名:不能是关键字
    要用关键字,那需要双引号“”
    空格需要双引号
    单引号没法玩空格的
    B正确哦
    在这里插入图片描述
    C有空格

    initcap,首字母大写

    SQL> select 12*salary initcap("annual salary") from employees;
    select 12*salary initcap("annual salary") from employees
                            *1 行出现错误:
    ORA-00923: 未找到要求的 FROM 关键字
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里不能用函数作为别名

    你只能这样搞

    SQL> select 12*salary "Annual salary" from employees;
    
    Annual salary
    -------------
           156000
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    在这里插入图片描述

    null不是啥东西,不能用=
    必须用is

    ARP和RARP属于网络层协议。但是工作内容属于数据链路层

    傻逼玩意题目
    链接:https://www.nowcoder.com/questionTerminal/31980656cbf44c21a7fb906b04866ae7
    来源:牛客网
    在这里插入图片描述

    ARP和RARP 是网络层的协议,但是它所工作的内容是链路层的。。。具体来说应该是在网络层。

    地址解析协议(Address Resolution Protocol,ARP)是在仅知道主机的IP地址时确定其物理地址的一种协议。
    因IPv4和以太网的广泛应用,其主要用作将IP地址翻译为以太网的MAC地址,但其也能在ATM和FDDIIP网络中使用。

    从IP地址到物理地址的映射有两种方式:表格方式和非表格方式。ARP具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为数据连接层(MAC层,也就是相当于OSI的第二层)的MAC地址。

    链接:https://www.nowcoder.com/questionTerminal/31980656cbf44c21a7fb906b04866ae7
    来源:牛客网

    ARP协议,ICMP是网络层,
    UDP,TCP是传输层,
    FTP和HTTP是应用层

    在这里插入图片描述
    网卡和适配器也在数据链路层哦!记住了

    目前VPN隧道协议主要有4种:
    点到点隧道协议PPTP、**PPP协议,**操蛋
    第二层隧道协议L2TP、
    网络层隧道协议IPSec以及SOCKS v5协议。

    其中,PPTP和L2TP工作在数据链路层,
    IPSec工作在网络层,SOCK v5工作在会话层。

    傻逼题目

    在这里插入图片描述

    网卡:网络适配器在接收和发送各种帧时,不使用计算机的CPU,此时计算机的CPU可以处理其他任务;

    链接:https://www.nowcoder.com/questionTerminal/4095014364554d15892b15e3c2be957b
    来源:牛客网
    在这里插入图片描述

    网卡:网络适配器在接收和发送各种帧时,不使用计算机的CPU,此时计算机的CPU可以处理其他任务;

    不然我造你干嘛呢????

    收到有差错的帧时,就把帧直接丢弃不通知计算机;
    收到正确的帧时,使用中断通知计算机,并交付协议栈中的网络层;
    当计算机发送IP数据报时,由协议栈把IP数据报向下交付给适配器,组装成帧发送到局域网。
    在这里插入图片描述

    大型广域网和远程计算机网络大都采用网状拓扑结构

    大型广域网和远程计算机网络大都采用网状拓扑结构

    其目的在于,通过邮电部门提供的线路和服务,将若干个不同位置的局域网连接在一起

    在这里插入图片描述

    双绞线最大传输距离100米

    gg

    双绞线100米,同轴电缆185–500米,光纤:几十几百公里(单模>多膜

    这题目几百年前的了吗不懂

    在这里插入图片描述

    在这里插入图片描述
    1000字节——用啥类型,这个要了解

    alter table 表名字 字段 修改后的类型
    变长的varchar2是变长的
    在这里插入图片描述
    char是定长
    varchar2变长,字节单位
    nvarchar2变长,字符单位
    所以
    在这里插入图片描述

     desc test5;
     名称                                                                                                              是否为空? 类型
     ----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------
     ID                                                                                                                NOT NULL NUMBER
     NAME
                VARCHAR2(20)
     ADDRESS
                VARCHAR2(20)
     OTHER
                VARCHAR2(20)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    test5的字段基本都是varchar2
    我们将name改变长1000的类型

    SQL> alter table test5 modify(name varchar2(1000));
    
    表已更改。
    
    SQL> desc test5;
     名称                                                                                                              是否为空? 类型
     ----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------
     ID                                                                                                                NOT NULL NUMBER
     NAME
                VARCHAR2(1000)
     ADDRESS
                VARCHAR2(20)
     OTHER
                VARCHAR2(20)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    easy,反正该看的看,这些都要搞清楚。
    在这里插入图片描述
    number(p,s)
    p整数位
    s小数位
    number(38,0)=integer
    在这里插入图片描述
    在这里插入图片描述
    数据库操作语言:增删改【DML】 查【DQL是查询】,delete,insert into
    DDL定义语言:创建,修改表,删除表,视图啥的alter啥的,drop
    DCL控制语言:grant,revoke,deny

    在这里插入图片描述
    这仨函数很强的
    trunc截取小数点后的几位
    如果是-1,-2,-3,就往前面截取,-1就是个位数直接废成0
    -2是十位个位废成0
    -3是百位十位个位都废成0

    懂?

    SQL> select trunc(123.567,1) from dual;
    
    TRUNC(123.567,1)
    ----------------
               123.5
    
    SQL> select trunc(123.567,-1) from dual;
    
    TRUNC(123.567,-1)
    -----------------
                  120
    
    SQL> select trunc(123.567,-2) from dual;
    
    TRUNC(123.567,-2)
    -----------------
                  100
    
    SQL> select trunc(123.567,-3) from dual;
    
    TRUNC(123.567,-3)
    -----------------
                    0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    那么本题:

    SQL> select mod(1600,10) from dual;
    
    MOD(1600,10)
    ------------
               0
    SQL> select trunc(0,-1) from dual;
    
    TRUNC(0,-1)
    -----------
              0
    SQL> select round(0,2) from dual;
    
    ROUND(0,2)
    ----------
             0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    懂了吧
    四舍五入一个道理,只不过舍掉那个大于=5,需要向前进位1
    在这里插入图片描述
    round和trunc都可以 用于日期的骚操作
    在这里插入图片描述
    数字默认整数,你保留几个都是0

    不用屁股加0了

    在这里插入图片描述
    在这里插入图片描述
    子查询
    从客户表中查Smith的cust_id
    然后去订单中查cust_id的订单

    查Smith的订单

    在这里插入图片描述
    显然这题目选D 啊

    子查询有俩Smith
    主查询就不能用=
    而应该是in

    这很好说

    在这里插入图片描述

    数据库:关系型sql类型–二维表结构
    nosql型:非关系型

    在这里插入图片描述
    在这里插入图片描述
    组的结果过滤,having

    where是过滤行
    group by分组
    order by排序
    在这里插入图片描述
    在这里插入图片描述

    oracle默认账户:
    scott/tiger
    system/manager
    sys/change_on_install

    默认端口号
    oracle:1521
    mysql:3306
    sqlserver:1433

    在这里插入图片描述
    在这里插入图片描述
    事务操作,只对DML有效,对增删改查有效,对DDL【create啥的】,DCL无效【因为他们自动commit】
    有savepoint,那就去savepoint
    单一个rollback,那就返回上一次commit之后那行。

    我解析,
    1建表
    3插入数据,copy来
    4 s1
    5将字段name的所有名字全部改为大写,无所谓
    6 s2
    7删除里面的数据
    8恢复数据,去s2,等于没干
    9删除180id的数据行
    10将表name字段所有名字全部改为James
    11恢复数据,去s2,等于没干
    12将id为180的那行名字改为james
    13 rollback是,返回到上一次commit那里,那就是直接返回到第3行………………
    故里面没有数据哈哈哈哈哈哈哈,很骚吧!!!!!!!!!!!!

    因此本题选A

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    这是oracle特有的,全连接——不对
    不论e表,是否有部门,都要展示,e在左边,那就是左链接哦!!!!

    左右链接,都是mysql和oracle公有的

    select name,depid from employees e left outer join departments d on e.depid=d.depid;

    在这里插入图片描述
    在这里插入图片描述
    F正确哦

    在这里插入图片描述
    B对的
    count咋可能小数呢

    不是求数据
    总和是sum
    在这里插入图片描述
    这波好说

    B

    月薪不可能为null哦

    在这里插入图片描述
    序列是不需要特定表用的
    可以供给给所有表使用哦——B错
    C默认只有自己和管理员,其他用户不可用
    D谁创建谁可以用,不见得一定要管理员
    E不会自动,需要你手动用

    ——这玩意接触得很少
    在这里插入图片描述

    create sequence myseq increment by 2 start with 10000 maxvalue 100000
    伪列
    nextval下一个值
    curraval当前值

    SQL> create sequence myseq  increment by 2 start with 10000 maxvalue 100000;
    
    序列已创建。
    
    SQL> select myseq.nextval,id from test3;
    
       NEXTVAL         ID
    ---------- ----------
         10000          1
         10002          3
         10004          4
    
    SQL>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    nextval默认指向那个没用过的序列

    hr用户可以创建,普通用户需要授权的
    create sequence的权限
    只能是创建序列的用户或者管理员才能修改
    修改序列,只会影响修改之后的数据,以前用过了的序列不能动了
    用了123,后面改了2间隔,那修改之后就是5,前面的不动
    在这里插入图片描述
    select any sequence
    其他用户要查询我hr创建的序列,你要用,还得授权才行
    在这里插入图片描述
    还是default
    number没法玩,status是需要char

    当初说过,create or replace,是建立在你已经有了表的情况下,还行,否则不行的

    在这里插入图片描述
    在这里插入图片描述
    创建表和sequence时,不能加or replace

    下面可以:
    function, procedure,package,type,synonym,view,trigger
    在这里插入图片描述
    在这里插入图片描述
    所以E是答案
    在这里插入图片描述

    在这里插入图片描述
    部门名称
    自己写一个语句,就不用一个个查了

    链接字段:department_id
    员工和经理,得用自连接,因为经理也是员工

    select last_name ename,last_name mname,department_name from employees e inner join employees b on e.manager_id = b.employee_id inner join departments d on e.department_id = d.department_id;
    三张表,第一张自连接:自连接的条件很重要,第一张看员工的经历id,拿去对应经理表的员工id
    还有一张普通链接
    都可以用inner join
    前后把各自的条件写清楚。

    内连接的话,是不展示没有部门的员工名字哦
    在这里插入图片描述
    left outer join也行的
    没问题
    反正e表放左边即可
    因为是所有员工,所以没有部门的也要展示

    美滋滋!


    总结

    提示:重要经验:

    1)
    2)学好oracle,操作系统,计算机网络,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。
    3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

  • 相关阅读:
    欧科云链:成本与规模之辨——合规科技如何赋能香港Web3生态?
    C语言——深入理解指针(第五章)
    Hadoop Series
    进博会期间,多地政府领导密集考察深兰科技
    微信小程序项目源代码SSM英语学习平台
    004.利用插补查找用户输入的数据【插补查找算法】
    ref和reactive
    linux ARM64 中断底层处理代码分析
    xss原理分析
    共享店铺系统如何搭建无人共享自习室?
  • 原文地址:https://blog.csdn.net/weixin_46838716/article/details/128126075