一张表,里面有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个字节
看完以上关于工作中经常用到的mysql基础知识,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。
分享标题:总结工作中经常用到的mysql基础知识
文章位置:http://cqwzjz.cn/article/pspgds.html