文章目录
-
- 1.数据库三范式是什么?
- 2.有哪些数据库优化方面的经验?
- 3.请简述常用的索引有哪些种类?
- 4.以及在 mysql 数据库中索引的工作机制是什么?
- 5.MySQL 的基础操作命令:
- 6.mysql 的复制原理以及流程。
- 7.mysql 支持的复制类型?
- 8.mysql 中 myisam 与 innodb 的区别?
- 9.mysql 中 varchar 与 char 的区别以及 varchar(50)中的 50 代表的涵义?
- 10.MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区 别?
- 11.表中有大字段 X(例如:text 类型),且字段 X 不会经常更新,以读为 为主,将该字段拆成子表好处是什么?
- 12.MySQL 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现) 的?
- 13.若一张表中只有一个字段 VARCHAR(N)类型,utf8 编码,则 N 最大值 为多少(精确到数量级即可)?
- 14. [SELECT *] 和[SELECT 全部字段]的 2 种写法有何优缺点?
- 15.HAVNG 子句 和 WHERE 的异同点?
- 16.MySQL 当记录不存在时 insert,当记录存在时 update,语句怎么写?
- 17. 一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ?
- 18. Mysql 的技术特点是什么?
- 19. Heap 表是什么?
- 20. Mysql 服务器默认端口是什么?
- 21. 与 Oracle 相比,Mysql 有什么优势?
- 22. 如何区分 FLOAT 和 DOUBLE?
- 23. 区分 CHAR_LENGTH 和 LENGTH?
- 24. 请简洁描述 Mysql 中 InnoDB 支持的四种事务
- 25. 在 Mysql 中 ENUM 的用法是什么?
- 26. 如何定义 REGEXP?
- 27. CHAR 和 VARCHAR 的区别?
- 28. 列的字符串类型可以是什么?
- 29. 如何获取当前的 Mysql 版本?
- 30. Mysql 中使用什么存储引擎?
- 31. Mysql 驱动程序是什么?
- 32. TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数
- 33. 主键和候选键有什么区别?
- 34. 如何使用 Unix shell 登录 Mysql?
- 35. myisamchk 是用来做什么的?
- 36. 如何控制 HEAP 表的最大尺寸?
- 37. MyISAM Static 和 MyISAM Dynamic 有什么区别?
- 38. federated 表是什么?
- 39. 如果一个表有一列定义为 TIMESTAMP,将发生什 么?
- 40. 列设置为 AUTO INCREMENT 时,如果在表中达到 最大值,会发生什么情况?
- 41. 怎样才能找出最后一次插入时分配了哪个自动 增量?
- 42. 你怎么看到为表格定义的所有索引?
- 43. LIKE 声明中的%和_是什么意思?
- 44. 如何在 Unix 和 Mysql 时间戳之间进行转换?
- 45. 列对比运算符是什么?
- 46. 我们如何得到受查询影响的行数?
- 47. Mysql 查询是否区分大小写?
- 48. LIKE 和 REGEXP 操作有什么区别?
- 49. BLOB 和 TEXT 有什么区别?
- 50. mysql_fetch_array 和 mysql_fetch_object
- 51. 我们如何在 mysql 中运行批处理模式?
- 52. MyISAM 表格将在哪里存储,并且还提供其存储格式?
- 53. Mysql 中有哪些不同的表格?
- 54. ISAM 是什么?
- 55. InnoDB 是什么?
- 56. Mysql 如何优化 DISTINCT?
- 57. 如何输入字符为十六进制数字?
- 58. 如何显示前 50 行?
- 59. 可以使用多少列创建索引?
- 60. NOW()和 CURRENT_DATE()有什么区别?
- 61. 什么样的对象可以使用 CREATE 语句创建?
- 62. Mysql 表中允许有多少个 TRIGGERS?
- 63. 什么是非标准字符串类型?
- 64. 什么是通用 SQL 函数?
- 65. 解释访问控制列表
- 66. Mysql 支持事务吗?
- 67. Mysql 里记录货币用什么字段类型好
- 68. Mysql 数据表在什么情况下容易损坏?
- 69. Mysql 有关权限的表都有哪几个?
- 70. Mysql 中有哪几种锁?
|
这里推荐一篇 MySQL 性能优化的干货:
MySQL 性能优化的 21 个最佳实践
|
1.数据库三范式是什么?
- 第一范式(1NF):字段具有原子性,不可再分。(所有关系型数据库系
统都满足第一范式数据库表中的字段都是单一属性的,不可再分) - 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足
第二范式(2NF)必须先满足第一范式(1NF)。要求数据库表中的每
个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储
各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。 - 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三
范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关
键字信息。 >所以第三范式具有如下特征: >>1. 每一列只有一个
值 >>2. 每一行都能区分。 >>3. 每一个表都不包含其他表已经包含
的非主关键字信息。
2.有哪些数据库优化方面的经验?
- 用 PreparedStatement, 一般来说比 Statement 性能高:一个 sql
发给服务器去执行,涉及步骤:语法检查、语义分析, 编译,缓存。 - 有外键约束会影响插入和删除性能,如果程序能够保证数据的完整性,
那在设计数据库时就去掉外键。 - 表中允许适当冗余,譬如,主题帖的回复数量和最后回复时间等
- UNION ALL 要比 UNION 快很多,所以,如果可以确认合并的两个结
果集中不包含重复数据且不需要排序时的话,那么就使用 UNION
ALL。 >>UNION 和 UNION ALL 关键字都是将两个结果集合并为一
个,但这两者从使用和效率上来说都有所不同。 >1. 对重复结果的处
理:UNION 在进行表链接后会筛选掉重复的记录,Union All 不会去除
重复记录。 >2. 对排序的处理:Union 将会按照字段的顺序进行排
序;UNION ALL 只是简单的将两个结果合并后就返回。
3.请简述常用的索引有哪些种类?
- 普通索引: 即针对数据库表创建索引
- 唯一索引: 与普通索引类似,不同的就是:MySQL 数据库索引列的值
必须唯一,但允许有空值 - 主键索引: 它是一种特殊的唯一索引,不允许有空值。一般是在建表的
时候同时创建主键索引 - 组合索引: 为了进一步榨取 MySQL 的效率,就要考虑建立组合索引。
即将数据库表中的多个字段联合起来作为一个组合索引。
4.以及在 mysql 数据库中索引的工作机制是什么?
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更
新数据库表中数据。索引的实现通常使用 B 树及其变种 B+树
5.MySQL 的基础操作命令:
- MySQL 是否处于运行状态:Debian 上运行命令 service mysql
status,在 RedHat 上运行命令 service mysqld status - 开启或停止 MySQL 服务 :运行命令 service mysqld start 开启服
务;运行命令 service mysqld stop 停止服务 - Shell 登入 MySQL: 运行命令 mysql -u root -p
- 列出所有数据库:运行命令 show databases;
- 切换到某个数据库并在上面工作:运行命令 use databasename; 进入
名为 databasename 的数据库 - 列出某个数据库内所有表: show tables;
- 获取表内所有 Field 对象的名称和类型 :describe table_name;
6.mysql 的复制原理以及流程。
Mysql 内建的复制功能是构建大型,高性能应用程序的基础。将 Mysql 的数据
分布到多个系统上去,这种分布的机制,是通过将 Mysql 的某一台主机的数据
复制到其它主机(slaves)上,并重新执行一遍来实现的。 * 复制过程中一
个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将
更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志
可以记录发送到从服务器的更新。 当一个从服务器连接主服务器时,它通知主
服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生
的任何更新,然后封锁并等待主服务器通知新的更新。 过程如下 1. 主服务器
把更新记录到二进制日志文件中。 2. 从服务器把主服务器的二进制日志拷贝
到自己的中继日志(replay log)中。 3. 从服务器重做中继日志中的时间,
把更新应用到自己的数据库上。
7.mysql 支持的复制类型?
- 基于语句的复制: 在主服务器上执行的 SQL 语句,在从服务器上执行
同样的语句。MySQL 默认采用基于语句的复制,效率比较高。 一旦发
现没法精确复制时,会自动选着基于行的复制。 - 基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执
行一遍. 从 mysql5.0 开始支持 - 混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法
精确的复制时,就会采用基于行的复制。
8.mysql 中 myisam 与 innodb 的区别?
- 事务支持 > MyISAM:强调的是性能,每次查询具有原子性,其执行数
度比 InnoDB 类型更快,但是不提供事务支持。 > InnoDB:提供事
务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚
(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全
(transaction-safe (ACID compliant))型表。 - InnoDB 支持行级锁,而 MyISAM 支持表级锁. >> 用户在操作
myisam 表时,select,update,delete,insert 语句都会给表自动
加锁,如果加锁以后的表满足 insert 并发的情况下,可以在表的尾部插
入新的数据。 - InnoDB 支持 MVCC, 而 MyISAM 不支持
- InnoDB 支持外键,而 MyISAM 不支持
- 表主键 > MyISAM:允许没有任何索引和主键的表存在,索引都是保
存行的地址。 > InnoDB:如果没有设定主键或者非空唯一索引,就会
自动生成一个 6 字节的主键(用户不可见),数据是主索引的一部分,附
加索引保存的是主索引的值。 - InnoDB 不支持全文索引,而 MyISAM 支持。
- 可移植性、备份及恢复 > MyISAM:数据是以文件的形式存储,所以
在跨平台的数据转移中会很方便。在备份和恢复时可单独针对某个表进
行操作。 > InnoDB:免费的方案可以是拷贝数据文件、备份
binlog,或者用 mysqldump,在数据量达到几十 G 的时候就相对痛
苦了 - 存储结构 > MyISAM:每个 MyISAM 在磁盘上存储成三个文件。第一
个文件的名字以表的名字开始,扩展名指出文件类型。.frm 文件存储表
定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名
是.MYI (MYIndex)。 > InnoDB:所有的表都保存在同一个数据文件
中(也可能是多个文件,或者是独立的表空间文件),InnoDB 表的大
小只受限于操作系统文件的大小,一般为 2GB。
9.mysql 中 varchar 与 char 的区别以及 varchar(50)中的 50 代表的涵义?
- varchar 与 char 的区别: char 是一种固定长度的类型,varchar 则是
一种可变长度的类型. - varchar(50)中 50 的涵义 : 最多存放 50 个字节
- int(20&#