当前位置: 首页 > news >正文

MySQL 面试题及详细解答(二)

#### 21. Federated 表是什么?

**回答**:
`Federated` 表是一种特殊的 MySQL 表类型,它允许你从一个 MySQL 服务器访问另一个 MySQL 服务器上的表。这种表不会在本地存储数据,而是通过网络访问远程数据库来进行数据操作。这对于分布式数据库系统或跨服务器查询非常有用。

#### 22. 如果一个表有一列定义为 TIMESTAMP,将发生什么?

**回答**:
如果表中的列定义为 `TIMESTAMP`,则该列会自动存储当前的时间戳(当前时间)。当插入新记录时,`TIMESTAMP` 列会自动填充当前时间。如果有更新操作,`TIMESTAMP` 列会在每次更新时自动更新为当前时间,除非使用 `DEFAULT` 或 `ON UPDATE` 进行特定配置。

#### 23. 列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况?

**回答**:
如果 `AUTO_INCREMENT` 列达到了最大值(例如,对于 `INT` 类型,最大值为 2147483647),MySQL 会停止自动增量并发生错误。为了防止这种情况,可以使用更大的整数类型(如 `BIGINT`),或者手动调整 `AUTO_INCREMENT` 值。

#### 24. 怎样才能找出最后一次插入时分配了哪个自动增量?

**回答**:
可以通过 `LAST_INSERT_ID()` 函数获取最后一次插入的 `AUTO_INCREMENT` 值。例如:
```sql
SELECT LAST_INSERT_ID();
```
该函数返回当前连接中最后一次插入的自增值。

#### 25. 你怎么看到为表格定义的所有索引?

**回答**:
可以使用 `SHOW INDEX FROM` 命令查看一个表上定义的所有索引。例如:
```sql
SHOW INDEX FROM table_name;
```
此命令将返回表上所有索引的详细信息。

#### 26. LIKE 声明中的 `%` 和 `_` 是什么意思?

**回答**:
- **`%`**:匹配零个或多个字符。例如,`'a%'` 可以匹配 `a`, `abc`, `a123` 等。
- **`_`**:匹配单个字符。例如,`'a_'` 可以匹配 `ab`, `a1`, `a2` 等。

#### 27. 如何在 Unix 和 MySQL 时间戳之间进行转换?

**回答**:
在 Unix 时间戳和 MySQL 的 `DATETIME` 或 `TIMESTAMP` 类型之间进行转换,可以使用 `FROM_UNIXTIME()` 和 `UNIX_TIMESTAMP()` 函数:
- 将 Unix 时间戳转换为 MySQL 时间:
```sql
SELECT FROM_UNIXTIME(1632968400);
```
- 将 MySQL 时间转换为 Unix 时间戳:
```sql
SELECT UNIX_TIMESTAMP('2025-09-24 12:00:00');
```

#### 28. 列对比运算符是什么?

**回答**:
列对比运算符用于比较列的值,常见的对比运算符有:
- `=`(等于)
- `!=` 或 `<>`(不等于)
- `>`(大于)
- `<`(小于)
- `>=`(大于或等于)
- `<=`(小于或等于)

#### 29. 我们如何得到受查询影响的行数?

**回答**:
可以使用 `ROW_COUNT()` 函数来获取受最近执行的查询影响的行数。对于 `INSERT`、`UPDATE`、`DELETE` 等查询都可以使用该函数。例如:
```sql
SELECT ROW_COUNT();
```

#### 30. MySQL 查询是否区分大小写?

**回答**:
MySQL 默认在 Linux 系统上对表名区分大小写,因为文件系统是区分大小写的。而在 Windows 系统上,表名默认不区分大小写。列名和别名默认不区分大小写,除非通过更改字符集或使用 `BINARY` 进行显式比较。

#### 31. LIKE 和 REGEXP 操作有什么区别?

**回答**:
- **LIKE**:用于进行简单的模式匹配,支持 `%` 和 `_` 通配符。
- **REGEXP**:用于进行更复杂的正则表达式匹配,支持更丰富的匹配模式,功能更强大。

例如:
```sql
SELECT * FROM users WHERE name LIKE 'A%';   -- 匹配以 A 开头的所有名字
SELECT * FROM users WHERE name REGEXP '^A';  -- 匹配以 A 开头的所有名字,支持更多复杂模式
```

#### 32. BLOB 和 TEXT 有什么区别?

**回答**:
- **BLOB**(Binary Large Object)用于存储二进制数据(如图像、视频等)。
- **TEXT** 用于存储大量文本数据(如文章、评论等)。

BLOB 数据类型不能进行字符集转换,而 TEXT 数据类型会根据字符集进行转换。

#### 33. MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?

**回答**:
- **`mysql_fetch_array()`**:返回一个包含查询结果的关联数组、索引数组或两者的数组。
- **`mysql_fetch_object()`**:返回一个包含查询结果的对象,每一列作为对象的属性。

例如:
```php
$row = mysql_fetch_array($result);  // $row['column_name']
$row = mysql_fetch_object($result); // $row->column_name
```

#### 34. 我们如何在 MySQL 中运行批处理模式?

**回答**:
批处理模式通常用于执行多个 SQL 查询。可以使用 `mysql` 命令行客户端中的 `-e` 选项来执行批处理命令。例如:
```bash
mysql -u username -p -e "USE db_name; SELECT * FROM table_name;"
```
还可以将多条 SQL 语句写入脚本文件并使用 `source` 命令执行:
```bash
mysql -u username -p < script.sql
```

#### 35. MyISAM 表格将在哪里存储,并且还提供其存储格式?

**回答**:
MyISAM 表格存储在数据库目录下,每个表通常会有三个文件:
- `.frm`:存储表结构。
- `.MYD`:存储数据。
- `.MYI`:存储索引。

这些文件存储在数据库的文件系统中。

#### 36. MySQL 中有哪些不同的表格?

**回答**:
MySQL 支持多种类型的表格(存储引擎),常见的包括:
- **InnoDB**:支持事务、外键和行级锁。
- **MyISAM**:不支持事务,适用于读操作较多的场景。
- **MEMORY**:数据存储在内存中,适用于临时数据存储。
- **CSV**:将表存储为 CSV 文件。
- **FEDERATED**:用于连接远程数据库的表。
- **ARCHIVE**:适用于存储大量数据的归档表。

http://www.dtcms.com/a/411024.html

相关文章:

  • 「Java EE开发指南」用MyEclipse开发的EJB开发工具(一)
  • 四川微信网站建设天津市规划局官方网站建设项目
  • 移动服务器建设的电影网站云服务器网站解析
  • Java 反射与 MyBatis:ORM 框架的 “灵魂基石”
  • 网站主机教程wordpress 文章点赞插件
  • 网站图片展示形式中国最好的网站建设有哪些
  • 拉取postgresql 18.0 docker镜像并运行容器
  • java 动态代理
  • 24届-Java开发面经-华为od
  • 开源BI系统
  • article.2034672470
  • 洞头网站建设高端品牌女装特价网
  • 天津建设网站需要的费用宜宾住房与城乡建设部网站
  • 【译】Visual Studio 中针对 .NET MAUI 的 XAML 实时预览功能的增强
  • MySQL DML 与 DQL 基础语法详解:增删改查入门实战
  • 如何把AutoDL实例里的文件备份到Github仓库?
  • 化妆品网站制作兰州h5设计
  • 论批评与自我批评
  • 建网站公司浩森宇特深圳网站建设 华信科
  • Android 13 完整实现 USB 网卡支持与网络优先级配置(USB>WiFi>4G)
  • 加强网站建设的措施莱芜中医院网站
  • 衡水企业网站设计网站上怎么做推广
  • 狄利克雷卷积
  • 沈阳 教育 公司 网站建设种子搜索网站怎么做的
  • 矩阵置零--leetcode
  • 删除iCloud中的照片但保留iPhone上的照片的两种方法
  • 巴中市住房和城乡建设局官方网站广告牌子设计图片
  • 找学校的网站塔城网站seo
  • oracle linux 10 +pg18 源码安装要点
  • 如何快速排查服务器宕机故障