数据库问题总结

数据库问题总结

  1. 一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ?

1) 如果表的类型是MyISAM,那么是18。

因为MyISAM表会把自增主键的最大ID记录到数据文件里,重启MYSQL自增主键的最大ID也不会丢失。

  1. 如果表的类型是InnoDB,那么是15。
    InnoDB表只是把自增主键的最大ID记录到内存中,所以数据库或者是对进行OPTIMIZE操作,都
    会导致最大ID丢失。
  1. Heap表是什么?

Heap表存在于内存中,用于临时高速存储。

  • BLOB或TEXT字段是不允许的
  • 只能使用比较运算符=,<,>,=>,= <
  • HEAP表不支持AUTO_INCREMENT
  • 索引不可为NULL
  1. 如何区分FLOAT和DOUBLE?

FLOAT:浮点数以8位精度存储在FLOAT中,并且有四个字节

DOUBLE:精度为18位,有8个字节。

  1. BLOB和TEXT有什么区别?

BLOB是一个二进制对象,可以容纳可变数量的数据。有四种类型的BLOB -

  • TINYBLOB
  • BLOB
  • MEDIUMBLOB和
  • LONGBLOB

它们只能在所能容纳价值的最大长度上有所不同。

TEXT是一个不区分大小写的BLOB。四种TEXT类型

  • TINYTEXT
  • TEXT
  • MEDIUMTEXT和
  • LONGTEXT

它们对应于四种BLOB类型,并具有相同的最大长度和存储要求。

BLOB和TEXT类型之间的唯一区别在于对BLOB值进行排序和比较时区分大小写,对TEXT值不区分大小写。

  1. 可以使用多少列创建索引?

任何标准表最多可以创建16个索引列。

  1. NOW() 和 CURRENT_DATA()有什么区别?

NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。

CURRENT_DATA() 仅显示当前年份,月份和日期。

  1. 什么是通用SQL函数?
  • CONCAT(A,B) 连接两个字符串值以创建单个字符串输出,通常用于将两个或多个字段合并为一个字段。

  • FORMATE(X,D) 格式化数字X到 D有效数字 FORMATE(423423234.655344,2)输出结果 423423234.66

  • CURRDATA(),CURRTIME() 返回当前日期或时间

  • NOW() 将当前日期和时间作为一个值返回

  • MONTH(),DAY(),YEAR(),WEEK(),WEEKDAY() 从日期值中提取给定数据。

  • HOUR(),MINUTE(),SECOND() 从时间值中提取给定数据。

  • DATEDIFF(A,B) 确定两个日期之间的差异(天数,A-B),通常用于计算年龄

  • SUBTIMES(A,B) 确定两个时间的差值(A-B,)

    SELECT SUBTIME(‘1997-12-31 23:59:59.999999’, ‘1 1:1:1.000002’);

    1997-12-30 22:58:58.999997

  • FROMDAYS(INT) 将整数天数转换为日期值

    1. mysql里记录货币用什么字段类型好?

    NUMERIC和DECIMAL类型被Mysql实现为同样的类型,这在SQL92标准允许。他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数据。当声明一个类是这些类型之一时,精度和规模的能被(并且通常是)指定;点击这里有一套最全阿里面试题总结。

    例如:

    salary DECIMAL(9,2)

    在这个例子中,9(precision)代表将被用于存储值的总的小数位数,而2(scale)代表将被用于存储小数点后的位数。

    因此,在这种情况下,能被存储在salary列中的值的范围是从-9999999.99到9999999.99。在ANSI/ISO SQL92中,句法DECIMAL§等价于DECIMAL(p,0)。

    同样,句法DECIMAL等价于DECIMAL(p,0),这里实现被允许决定值p。Mysql当前不支持DECIMAL/NUMERIC数据类型的这些变种形式的任一种。

    这一般说来不是一个严重的问题,因为这些类型的主要益处得自于明显地控制精度和规模的能力。

    DECIMAL和NUMERIC值作为字符串存储,而不是作为二进制浮点数,以便保存那些值的小数精度。

    一个字符用于值的每一位、小数点(如果scale>0)和“-”符号(对于负值)。如果scale是0,DECIMAL和NUMERIC值不包含小数点或小数部分。

    DECIMAL和NUMERIC值得最大的范围与DOUBLE一样,但是对于一个给定的DECIMAL或NUMERIC列,实际的范围可由制由给定列的precision或scale限制。

    当这样的列赋给了小数点后面的位超过指定scale所允许的位的值,该值根据scale四舍五入。

    当一个DECIMAL或NUMERIC列被赋给了其大小超过指定(或缺省的)precision和scale隐含的范围的值,Mysql存储表示那个范围的相应的端点值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值