zoukankan      html  css  js  c++  java
  • 面试汇总-待整理

    唯一索引、主键索引区别?

    唯一索引
    唯一索引不允许两行具有相同的索引值。
    如果该字段被设置为允许NULL值,则插入该字段的值可以包含多个NULL值。但此例外情况不适用于使用Berkley DB(BDB)引擎的数据表。
    如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存。

    主键索引
    主键索引是唯一索引的特殊类型。
    数据库表通常有一列或列组合,其值用来唯一标识表中的每一行。该列称为表的主键。
    在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。

    它们的一些比较:
    (1)对于主健/unique constraint , oracle/sql server/mysql等都会自动建立唯一索引;
    (2)主键不一定只包含一个字段,所以如果你在主键的其中一个字段建唯一索引还是必要的;
    (3)主健可作外健,唯一索引不可;
    (4)主健不可为空,唯一索引可;
    (5)主健也可是多个字段的组合;
    (6)主键与唯一索引不同的是:
    a.有not null属性;
    b.每个表只能有一个。

    普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
    主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。主键分为复合主键和联合主键。复合主键就是指该主键含有一个以上的字段组成 。
    例如;

    create table test  (     
        name varchar(19),    
        id number,     
        value varchar(10),    
        primary key (id,name)  )
    

    UNIQUE 唯一索引。 不允许有重复。
    FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。

    explain sql

    mysql> explain select * from servers;
    +----+-------------+---------+------+---------------+------+---------+------+------+-------+
    | id | select_type | table   | type | possible_keys | key  | key_len | ref  | rows | Extra |
    +----+-------------+---------+------+---------------+------+---------+------+------+-------+
    |  1 | SIMPLE      | servers | ALL  | NULL          | NULL | NULL    | NULL |    1 | NULL  |
    +----+-------------+---------+------+---------------+------+---------+------+------+-------+
    1 row in set (0.03 sec)
    

    possible_keys
    指出MySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用

    Key
    key列显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。

    rows
    表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数

    explain 详解

    PreparedStatement

     // 连接数据库
                connection = JDBCTools.getConnection();
               // 使用占位符的SQl语句
                String sql = "insert into customers(name,birth)"
                       + "values(?,?)";
                // 使用preparedStatement的setXxx方法设置每一个位置上的值
                preparedStatement = connection.prepareStatement(sql);
                // 设置name字段
                preparedStatement.setString(1, "ATGUIGU");
               // 设置birth字段
                preparedStatement.setDate(2,
                       new Date(new java.util.Date().getTime()));
               // 执行更新操作
                preparedStatement.executeUpdate();
    
  • 相关阅读:
    C#语法相比其它语言比较独特的地方
    Git源码管理工具使用
    2018年第九届蓝桥杯题目(C/C++B组)汇总
    Unity插件系列之二维码
    在本机使用虚拟机安装一个linux系统,并搭建ftp服务器
    用UE4蓝图制作FPS_零基础学虚幻4第二季
    【坦克大战】Unity3D多人在线游戏(泰课的坦克大战--旋转的螺丝钉)
    Drag(拖拽)和Move(移动)两个脚本
    解决:Word在试图打开文件时遇到错误
    2018年的一些记录,共勉
  • 原文地址:https://www.cnblogs.com/xiaobingzi/p/10759375.html
Copyright © 2011-2022 走看看