MySQL面试题(二)

时间:2022-10-06 13:56:59

11、列对比运算符是什么?

在SELECT 语句 的列比较中使用= ,<> ,<= ,< ,> = ,> ,<< ,>> ,<=>,AND,&nbs***bsp;或 LIKE 运算符。

12、  BLOB 和 TEXT 有什么区别?

BLOB 是一个二进制对象, 可以容纳可变数量的数据。 TEXT 是 一 个 不 区 分 大 小 写 的BLOB。

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

13、MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?

以下是MySQL_fetch_array 和MySQL_fetch_object 的区别:

MySQL_fetch_array()   –  将结 果行 作为 关联 数组 或来 自数 据库 的常 规数 组返 回 。

MySQL_fetch_object  –  从数 据库 返回 结果 行作 为对 象。

14、  MyISAM 表格将在哪里存储,并且还提供其存储格式?

每个MyISAM 表格以三种格式存储在磁盘上:

·  “ .frm ” 文件 存储 表定 义

· 数据 文件 具有  “ .MYD”  (MYData)  扩 展名

索引文件具有 “ .MYI”  (MYIndex)  扩 展名

15、  MySQL 如何优化 DISTINCT?

DISTINCT 在所有列上转换为GROUP BY, 并与ORDER BY 子句结合使用。

SELECT DISTINCT t1 .a FROM t1,t2 where t1 .a=t2 .a;

16、如何显示前 50 行?

在MySQL 中, 使用以下代码查询显示前50 行:

SELECT*FROM LIMIT 0,50;

17、可以使用多少列创建索引?

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

18、  NOW  ()和 CURRENT_DATE  ()有什么区别?

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

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

19、什么是非标准字符串类型?

1 、  TINYTEXT

2 、 TEXT

3 、   MEDIUMTEXT

4 、   LONGTEXT

20、什么是通用 SQL 函数?

1 、CONCAT(A, B)  –  连 接 两 个 字 符 串 值 以 创 建 单 个 字 符 串 输 出 。通 常 用 于 将 两 个 或 多个字段合并为一个字段。

2 、 FORMAT(X, D) -  格式化数字X 到 D 有 效 数 字 。

3 、 CURRDATE(), CURRTIME() -  返 回 当 前日期或时间。

4 、 NOW  ()    –  将 当 前 日 期 和 时 间 作 为 一 个 值 返 回 。

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

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

7 、 DATEDIFF  ( A ,   B )    –  确 定 两 个 日 期 之 间 的 差 异 ,  通 常 用 于 计 算 年 龄

8 、 SUBTIMES  ( A , B )    –  确 定 两 次 之 间 的 差 异 。

9 、 FROMDAYS  ( INT )    –  将 整 数 天 数 转 换 为 日 期 值 。

21、  MySQL 支持事务吗?

在缺省模式下,MySQL 是 autocommit 模式的,所有的数据库更新操作都会即时 提交, 所以在缺省情况下,  MySQL 是不支持事务的。

但是如果你的MySQL 表类型是使用InnoDB Tables  或 BDB tables 的话, 你的 MySQL 就可以使用事务处理,使 用 SET

AUTOCOMMIT=0 就可以使MySQL 允许在非autocommit 模式, 在非 autocommit 模式下 ,你必须使用COMMIT 来提交你的更改,或者用ROLLBACK来回滚你的更改。

22、  MySQL 里记录货币用什么字段类型好

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

例 如:

salary DECIMAL(9,2)

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

因此 , 在这种情况下, 能被存储在salary 列 中 的 值 的 范 围 是 从 -9999999 .99 到 9999999.99。

23、  MySQL 有关权限的表都有哪几个?

MySQL 服务 器通过权限表来控制用户对数据库的访问, 权限表存放在MySQL 数 据库里,由MySQL_ install_db 脚本初始化。这些权限表分别user,db,table_ priv, columns_ priv 和host。

24、列的字符串类型可以是什么?

字符串类型是:

1 、 SET

2 、  BLOB

3 、  ENUM

4 、  CHAR

5 、  TEXT

25、MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

1、  设计良好的数据库结构, 允许部分数据冗余, 尽量避免join 查 询 ,  提 高 效 率 。

2 、  选择合适的表字段数据类型和存储引擎, 适当的添加索引。

3 、  MySQL 库 主 从 读 写 分 离 。

4 、  找规律分表, 减少单表中的数据量提高查询速度。

5、  添加缓存机制,  比如memcached ,   apc 等 。

6 、  不经常改动的页面, 生成静态页面。

7、  书写高效率的SQL。  比如 SELECT *FROM TABEL  改为 SELECT field_ 1, field_ 2,field_ 3 FROM TABLE .

26、锁的优化策略

1、读写分离

2、分段加锁

3、 减 少 锁 持 有 的 时 间

4、多个线程尽量以相同的顺序去获取资源

不能将锁的粒度过于细化, 不然可能会出现线程的加锁和释放次数过多, 反而效 率 不如一次加一把大锁。