mysql常见面试题
[SELECT *] 和[SELECT 全部字段]的 2 种写法有何优缺点? 1. 前者要解析数据字典,后者不需要 2. 结果输出顺序,前者与建表列顺序相同,后者按指定字段顺序。 3. 表字段改名,前者不需要修改,后者需要改 4. 后者可以建立索引进行优化,前者无法优化 5. 后者的可读性比前者要高所以, 尽量使用后者来查询 若一张表中只有一个字段 VARCHAR(N)类型,utf8 编码,则 N 最大值为多少? 由于 utf8 的每个字符最多占用 3 个字节。而 MySQL 定义行的长度不能超过65535(text和blob不计算在内), 因此 N 的最大值计算方法为:(65535-1-2)/3。 减去 1 的原因是实际存储从第二个字节开始,减去 2 的原因是因为要在列表长度存储实际的字符长度(长度大于256用两个字节存储),除以 3 是因为 utf8 限制:每个字符最多占用 3 个字节。 MySQL 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)的? InnoDB 行锁是通过给索引上的索引项加锁来实现的,这一点 MySQL 与Oracle 不同,后者是通过在数据块中对相应数据行加锁来实现的。 InnoDB 这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB 才使用行级锁,否则,InnoDB 将使用表锁 mysql 中 myisam 与 innodb