面
试
中
经
常被
问
到的 MySQL
题
目,本文
总结
了面
试
中的
经
典
问题
。
1.主
键
(primary key)和候
选键
(candidate key)有什么区别?
候
选键
- 候
选键
可以是任何列或可以作
为
数据
库
中唯一
键
的列
组
合。一
张
表中可以有多个候
选键
。每个候
选键
都可以作
为
主
键
。
主
键
- 主
键
是唯一
标识记录
的列或列
组
合。只有一个候
选键
可以是主
键
。
2. NOW() 和 CURRENT_DATE() 有什么区别?
NOW () 命令用于以小
时
、分
钟
和秒
显
示当前年、月、日。
CURRENT_DATE()
仅显
示当前年、月和日期。
3. MySQL 表中允
许
多少个触
发
器?
以下是 MySQL 表中允
许
的触
发
器。
插入前
插入后
更新前
更新后
删
除前
删
除后
4.我
们
可以
为
索引
创
建多少列?
16
5. 如何将数据从一
张
表复制到另一
张
表?
NSERT INTO table2 (id,uid,changed,status,assign_status) SELECT id,uid,now(),'Pending','Assigned'
FROM table1
6.如何在不复制数据的情况下复制表?
CREATE TABLE users_bck SELECT * FROM users WHERE 1=0;
7.什么是 MySQL?
MySQL 是一个免
费
提供的开源关系数据
库
管理系
统
(RDBMS),它使用
结
构化
查询语
言 (SQL)。
SQL 是用于在数据
库
中添加、
访问
和管理内容的最流行的
语
言。它以其快速
处
理、久
经
考
验
的可靠性、易
用性和使用灵活性而著称。MySQL 是几乎每个开源 PHP
应
用程序的重要
组
成部分。基于 PHP 和 MySQL
的脚本的好例子是 WordPress、Joomla、Magento 和 Drupal。
8.列出MySQL的特点?
关系数据
库
管理系
统
(RDBMS):MySQL 是一个关系数据
库
管理系
统
。
易于使用:MySQL 易于使用。您只需掌握 SQL 的基本知
识
。只需几个
简单
的 SQL
语
句,您就可
以构建 MySQL 并与之交互。
它是安全的:MySQL 包含一个可靠的数据安全
层
,可以保
护
敏感数据免受入侵者的侵害。密
码
在
MySQL 中是加密的。
它是可
扩
展的:MySQL 可以
处
理几乎任何数量的数据,多达 5000 万行或更多。默
认
文件大小限
制
约为
4 GB。但是,您可以将此数字增加到 8 TB 数据的理
论
限制。
在
许
多操作系
统
上兼容:MySQL 兼容在
许
多操作系
统
上运行。
允
许
回滚:MySQL 允
许
事
务
回滚、提交和崩
溃
恢复。
高性能:由于其独特的存
储
引擎架构,MySQL 更快、更可靠、更便宜。
高灵活性:MySQL 支持大量的嵌入式
应
用程序,
这
使得 MySQL 非常灵活。
高生
产
力:MySQL 使用触
发
器、存
储过
程和
视图
,允
许
开
发
人
员
提供更高的生
产
力。
9. transaction 和 ACID 属性是什么意思?
事
务
是工作的
逻辑单
元,
应该执
行所有步
骤
或不
执
行任何步
骤
。ACID 是原子性、一致性、隔离性和持久性
的
缩
写,它
们
是任何事
务
的属性。
10. 什么是堆表?
堆是没有聚集索引的表。可以在存
储为
堆的表上
创
建一个或多个非聚集索引。数据存
储
在堆中而不指定
顺
序。通常数据最初是按照行插入表中的
顺
序存
储
的,但是数据
库
引擎可以在堆中移
动
数据以有效地存
储
行;因此无法
预测
数据
顺
序。要保
证
从堆返回的行的
顺
序,您必
须
使用 ORDER BY 子句。要指定行的存
储
顺
序,
请
在表上
创
建聚集索引,使表不是堆。
11. 聚集表与堆表
堆表
数据不按任何特定
顺
序存
储
具体数据不能快速
检
索,除非也有非聚集索引
数据
页
未
链
接,因此
顺
序
访问
需要回溯到索引分配映射 (IAM)
页
由于没有聚集索引,因此不需要
额
外的
时间
来
维护
索引
由于没有聚集索引,所以不需要
额
外的空
间
来存
储
聚集索引
树
这
些表在 sys.indexes 目
录视图
中的
index_id
值为
0
集群表
数据按照聚集索引
键
的
顺
序存
储
如果
查询
使用索引列,可以根据聚集索引
键
快速
检
索数据