zoukankan      html  css  js  c++  java
  • 数据库基础知识

    事务四大特性(简称ACID) 

    1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。

    2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。

    3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。

    4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。     

    3.

    解析如下:
    一、什么是索引:
    简单的来说,建立索引在进行数据库操作的时候不需要全盘一条条的扫描,删选出符合的记录,索引内部自己有一套优化算法,因此借助索引来对数据库进行操作可以提高查询的效率。
     
    二、什么时候建立的索引将失效或效率不高(情况有很多,这里列举常见的几种, 假设在字段name上建立了索引):
    1、使用了运算符!=,以及关键字not in, not exist等,认为产生的结果集很大,往往导致引擎不走索引而是走全盘扫描
    2、对索引字段使用了函数,如where substr(name, 1, 3)=‘mark’, 导致索引无效
    3、使用like和通配符,第一个字符是%将导致索引失效,如where name like "%ark“  (A正确)
    .....
    三、order by与索引
    首先利用where进行数据查询,这一步是免不了的,至于这一步有没有利用索引暂时不考虑,关键是在获取所有符合的记录后还需要进行排序,看看order by是如何利用索引的。
    如果order by中的字段有建立索引,同时:
    1、该字段没有出现在where中,则在排序的时候需要正常排序,默认order by是升序排序, 故索引没有对排序产生有利帮助 (B,C错误)
    2、该字段同时同时出现在where中,则在获取记录后不进行排序,而是直接利用索引, 效率变高。(D正确)
     
    补充: group by也和order by类似
    题目中的索引b是降序,而B,C两个选项都是升序,故会导致效率降低。而A,D两个选项没有指定升序降序,故会按照其定义的索引a desc,b desc 来进行操作,故而效率较高。所以选A,D。这是我的想法。。。如有不对,可指正
    假设MySQL数据库表:
    create table T{
    k int unsigned not null auto_increment,
    a date,
    b varchar(24),
    c int,d varchar(24),
    primary key(k),unique key a_index (a DESC,b DESC),
    key k1(b),key k2(c),key k3(d));
    如下哪些sql语句查询能较好的利用索引?()

    正确答案: A D   你的答案: A (错误)

    select b from WHERE b like 'aaa%';
    select a,b from T WHERE a='2015-10-25' ORDER BY b ASC,c ASC;
    select a,b,c from T WHERE a='2015-10-25' ORDER BY b ASC;
    select a,b,c from T WHERE a='2015-10-25' ORDER BY a,b;

    20.
    以下方法,哪个不是对add方法的重载?
    1
    2
    3
    4
    public class Test
    {
        public void add( int x,int y,int z){}
    }

    正确答案: B   你的答案: D (错误)

    public int add(int x,int y,float z){return 0;}
    public int add(int x,int y,int z){return 0;}
    public void add(int x,int y){}
    以上都不是

    本题知识点

    共有25条讨论添加解析

    • 方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
      原则如下:
      一.方法名一定要相同。
      二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
      1.如果参数个数不同,就不管它的参数类型了!
      2.如果参数个数相同,那么参数的类型或者参数的顺序必须不同。
      三.方法的返回类型、修饰符可以相同,也可不同。
     
    30.
    关于以下application,说法正确是什么?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Test {
        static int x=10;
        static {x+=5;}
        public static void main(String[] args) //4
            {
            System.out.println("x="+x);
        }
        static{x/=3;};
    }//9

    正确答案: B   你的答案: 空 (错误)

    4行与9行不能通过编译,因为缺少方法名和返回类型
    编译通过,执行结果是:x=5
    编译通过,执行结果是:x=3
    9行不能通过编译,因为只能有一个静态初始化器
     test类加载的时候首先进行静态成员初始化,之后进行静态代码块初始化,x=10,x=10+5,x=15/3
     
    这道题主要考察类记载时候的初始化问题,执行这个类的 main方法,会导致类进行加载,而类加载的属性如下
     1、虚拟机在首次加载Java类时,会对静态初始化块、静态成员变量、静态方法进行一次初始化。我们不要去纠结这里的顺序,一般来说我们只需要知道,静态方法一般在最后。
     2、只有在调用new方法时才会创建类的实例
     3、类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法;再执行本类继承的子类的初始化块,最后是子类的构造方法
     4、类实例销毁时候,首先销毁子类部分,再销毁父类部分
     
     
    100.

    选a,c,d,only public & abstract are permitted

    你既然定义了interface(接口),那肯定是要其它的类去实现它的, 不然你定义它干吗,所以不能用protected去修饰, 而要用public去修饰。

    110.switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型。String类型是java7开始支持。 

  • 相关阅读:
    linux php5.6 安装Redis扩展
    linux php7.2安装扩展memcached
    极简的switch控件
    整理了最近百年的藏历数据,做了个公历藏历映射的小工具
    我是怎么让全国最大的儿童失踪预警平台流量掉底的
    jq的getScript函数不支持chaset?override掉!
    大家好像都比较少关心webcrypto,试试写个简单的sha1/sha256/sha384/sha512实现看看
    惊喜:opera换webkit内核后完美支持SDCH压缩协议
    TCPIP协议实践:wireshark抓包分析之链路层与网络层
    使用unity3d和tensorflow实现基于姿态估计的体感游戏
  • 原文地址:https://www.cnblogs.com/panxuejun/p/5942449.html
Copyright © 2011-2022 走看看