java中与MySQL相关知识_mysql 基础知识总结

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

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

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

(2)如果表的类型是InnoDB,那么是15

InnoDB表只是把自增主键的最大ID记录到内存中,所以重启数据库或者是对表进行OPTIMIZE操作,都会导致最大ID丢失

(3) 如果不重启的话 两个引擎都是从18开始

(4)如果用truncate 两个引擎都是从1开始

2. 字符串数据类型enum与set

(1)enum

单选字符串数据类型,适合存储表单界面中的“单选值”。

设定enum的时候,需要给定“固定的几个选项”;存储的时候就只存储其中的一个值。

设定enum的格式:

enum("选项1","选项2","选项3",...);

实际上,enum的选项都会对应一个数字,依次是1,2,3,4,5...,最多有65535个选项

使用的时候,可以使用选项的字符串格式,也可以使用对应的数字。

(2)set

多选字符串数据类型,适合存储表单界面的“多选值”。

设定set的时候,同样需要给定“固定的几个选项”;存储的时候,可以存储其中的若干个值。

设定set的格式:

set("选项1","选项2","选项3",...)

同样的,set的每个选项值也对应一个数字,依次是1,2,4,8,16...,最多有64个选项

使用的时候,可以使用set选项的字符串本身(多个选项用逗号分隔),也可以使用多个选项的数字之和(比如:1+2+4=7)

3.mysql log

错误日志:记录出错信息,也记录一些警告信息或者正确的信息。

查询日志:记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行。

慢查询日志:设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中。

二进制日志:记录对数据库执行更改的所有操作。

redo日志:记录已提交的修改后的数据,用于数据库突然断电,重启后可以通过redolog来恢复断电前的数据

undo日志:记录事务修改前的数据,用于事务回退,可以通过undolog恢复事务之前的数据

4、MySQL中myisam与innodb的区别

1>.InnoDB支持事物,而MyISAM不支持事物

2>.InnoDB支持行级锁,而MyISAM支持表级锁

3>.InnoDB支持MVCC, 而MyISAM不支持

4>.InnoDB支持外键,而MyISAM不支持

5>.InnoDB不支持全文索引,而MyISAM支持。

(2)、innodb引擎的4大特性

插入缓冲(insert buffer),二次写(double write),自适应哈希索引(ahi),预读(read ahead)

(3)、2者selectcount(*)哪个更快,为什么

myisam更快,因为myisam内部维护了一个计数器,可以直接调取。

5、多对多关系的理解

比如有两个表A、B, 多对多是指A表中的某一条数据有可能对应B表中的多条数据,而且还有一些条数据可能对应B表中的一条数据。(不是指A表中的多条数据对应着B表中的多条数据)

所以这里需要个中间表C,C中至少有两列,每列上都创建外键并分别引用A和B。C表中的这两列为联合主键,防止重复。

6.char(n)和varchar(n)这里的n是n个字符,不是字节(mysql5以上)

7.int(n) n是显示的位数,不是长度,不管n为多少,int的长度只能是4个字节

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值