1. Mysql是干啥的,有什么作用?

MySQL 是一种开源的关系型数据库管理系统(RDBMS),主要用于存储、管理和检索数据。它基于结构化查询语言(SQL)来操作数据,广泛应用于网站开发、企业系统、数据分析等领域。

MySQL 的主要作用包括:

  1. 数据存储:将结构化的数据以表格的形式存储在数据库中。

  2. 数据管理:提供增删改查(CRUD)功能,支持对数据进行高效的操作和管理。

  3. 数据安全:通过用户权限管理机制,确保只有授权用户才能访问或修改数据。

  4. 数据一致性:支持事务处理,确保多个操作要么全部成功,要么全部失败,保持数据的完整性。

  5. 多用户支持:允许多个用户同时访问数据库,并通过锁机制保证并发访问的安全性。

  6. 跨平台支持:可以在多种操作系统上运行,如 Windows、Linux 和 macOS。

MySQL 的典型应用场景:

  • 网站后台数据库:用于存储用户信息、文章内容、订单记录等。

  • 企业内部系统:如人力资源管理系统(HRMS)、客户关系管理系统(CRM)等。

  • 数据分析:结合其他工具进行报表生成和业务智能分析。

  • 日志记录:存储应用程序的日志信息以便后续审计和排查问题。

总之,MySQL 是一个强大而灵活的数据库解决方案,适用于需要可靠、高性能数据处理的各种应用需求。


2. Mysql有哪些常用版本,LTS版本是什么意思,为什么推荐使用LTS版本

MySQL 的常用版本主要包括以下几类:

1. 社区版(Community Edition)

这是 MySQL 官方提供的免费开源版本,适用于大多数用户。它包括最新的功能和改进,但没有官方的技术支持。

  • 优点:免费、更新频繁、包含最新特性。

  • 缺点:无官方技术支持,适合技术能力强的团队或开发环境。

2. 企业版(Enterprise Edition)

这是 MySQL 的商业版本,提供官方的技术支持和服务。适用于对稳定性、安全性和技术支持有较高要求的企业级应用。

  • 优点:官方技术支持、安全性高、适合生产环境。

  • 缺点:需要付费,适合预算充足的企业。

3. 长期支持版本(LTS, Long-Term Support)

LTS 是一种特殊类型的版本,官方承诺提供长期的支持和维护。通常只修复关键的安全漏洞和严重 bug,不会引入新功能。

  • 优点

    • 稳定性强:经过充分测试,适合生产环境。

    • 安全性高:官方会持续提供安全补丁。

    • 维护周期长:通常支持几年时间,减少频繁升级的压力。

  • 适用场景:企业级生产环境,尤其是对系统稳定性要求极高的场景。

4. GA 版本(General Availability)

这是正式发布的稳定版本,适合用于生产环境。与 LTS 不同的是,GA 版本可能不会提供长期支持。


为什么推荐使用 LTS 版本?

  1. 长期支持
    LTS 版本的维护周期较长,官方会持续发布安全更新和重要 bug 修复,确保系统在较长时间内保持稳定和安全。

  2. 降低升级频率
    非 LTS 版本可能每隔几个月就会有新的版本发布,频繁升级可能会带来兼容性问题。而 LTS 版本可以长期使用,减少升级带来的风险和工作量。

  3. 适合生产环境
    对于企业级应用来说,系统的稳定性和可维护性至关重要。LTS 版本经过更严格的测试,更适合部署在生产环境中。

  4. 安全性保障
    官方会为 LTS 版本提供持续的安全更新,帮助你抵御潜在的安全威胁。


3. 有哪些可以替代MySQL的服务

数据库

类型

是否开源

主要优点

适用场景

PostgreSQL

关系型

功能强大、可扩展性强

复杂查询、企业级应用

MariaDB

关系型

兼容 MySQL、性能优化

替代 MySQL、Web 应用

SQLite

嵌入式

轻量、无需服务

移动端、小型工具

MongoDB

文档型

灵活、易扩展

非结构化数据、大数据分析

Redis

键值型

高速缓存、支持多种数据结构

缓存、队列、实时统计

Cassandra

宽列型

高吞吐、强扩展

日志系统、时间序列数据

Amazon RDS

关系型

托管服务、自动化运维

企业生产环境

阿里云 PolarDB

关系型

高性能、兼容 MySQL

中国用户、云原生应用


4. 任意方法安装LTS版本的Mysql

Ubuntu使用apt安装


5. mysql的配置文件在哪里,其默认端口是多少。

/etc/mysql/mysql.conf.d/mysqld.cnf

默认端口在3360


6. 连接到Mysql,并查看mysql的版本

Mysql登录使用

mysql -u root -p

然后通过命令查看

SELECT VERSION();


7. Mysql中什么是库、表、字段,对比excel,库、表、字段相当于什么

MySQL 概念

英文名

对应 Excel 概念

示例说明

数据库

Database

Excel 文件(Workbook)

company_dbcompany_db.xlsx

Table

工作表(Sheet)

employees → Sheet1

字段

Column/Field

列标题(Header)

name, age → A1, B1

记录

Row/Record

数据行(Data Row)

张三、李四 等数据行


8. 什么是字符集,myslq的默认字符集是什么,应该使用什么字符集

字符集 是一组字符与它们对应的编码规则集合。它决定了数据库可以存储哪些字符,比如英文、数字、中文、表情符号等。

在 MySQL 中,字符集决定了以下内容的处理方式:

  • 数据库中存储的文本数据

  • 表中的字段(如 VARCHAR, TEXT

  • 客户端与服务器之间的通信

MySQL 支持多种字符集,常见的有:

字符集

特点描述

latin1

默认字符集(MySQL 5.x),仅支持西欧字符(不支持中文)

utf8

支持 Unicode,但最多只支持 3 字节,无法完整支持某些 emoji 表情

utf8mb4

完全支持 Unicode,包括中文、日文、韩文、emoji 等 4 字节字符

5.x默认为latin1字符集,而8.0+则是uft8

推荐使用:utf8mb4 + utf8mb4_unicode_ci

原因如下:

优点

描述

兼容性好

支持中文、日语、韩语、emoji 表情等所有 Unicode 字符

未来趋势

成为现代 Web 和移动端应用的标准字符集

避免乱码

避免 utf8 不能保存某些表情的问题

排序规则建议

使用 utf8mb4_unicode_ci 而不是 utf8mb4_0900_ci,因为前者更符合多语言排序习惯


9. 指定字符集utf8mb4来创建一个库

CREATE DATABASE test_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;


10. 设置root账号, 允许其远程登录

设置Root账号权限

ALTER USER 'root'@'localhost' IDENTIFIED BY '*******';
CREATE USER 'root'@'%' IDENTIFIED BY '******';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

更改Mysql配置文件

/etc/mysql/mysql.conf.d/mysqld.cnf 中的

bind-address = 127.0.0.1改为bind-address = 0.0.0.0


11. 安装DBeaver(或其他工具)远程连接到上面的Mysql


12. Mysql有哪些常用字段类型,其占用的存储是多少字节

1. 数值类型

类型

存储大小

描述

TINYINT

1 字节

范围:-128 ~ 127(有符号)或 0~255(无符号)

SMALLINT

2 字节

范围:-32,768 ~ 32,767(有符号)

MEDIUMINT

3 字节

范围:-8,388,608 ~ 8,388,607

INT / INTEGER

4 字节

范围:-2,147,483,648 ~ 2,147,483,647

BIGINT

8 字节

范围:-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

FLOAT

4 字节

单精度浮点数

DOUBLE

8 字节

双精度浮点数

DECIMAL(M,D)

可变长度

精确数值,用于货币等需要高精度的场景

2. 日期与时间类型

类型

存储大小

描述

DATE

3 字节

日期格式:YYYY-MM-DD

TIME

3~5 字节

时间格式:HH:MM:SS(可带毫秒)

DATETIME

5~8 字节

日期+时间(范围大,支持到 9999 年)

TIMESTAMP

4~7 字节

时间戳(UTC 时间,范围较小)

YEAR

1 字节

年份(1901~2155)

3. 字符串类型

类型

存储大小

描述

CHAR(N)

N 字节(固定长度)

最大 255 字符

VARCHAR(N)

实际内容长度 + 1~2 字节(动态长度)

最大 65535 字符

TEXT

L + 2 字节(L 为实际长度)

最大 65,535 字符(约 64KB)

MEDIUMTEXT

L + 3 字节

最大 16MB

LONGTEXT

L + 4 字节

最大 4GB

BLOB

同 TEXT,但用于二进制数据

4. 二进制类型

类型

存储大小

描述

BIT(M)

1~8 字节(取决于 M)

位字段(最多 64 位)

BINARY(N)

N 字节(固定长度)

存储二进制字符串

VARBINARY(N)

实际内容长度 + 1~2 字节

可变长度二进制字符串


5. 枚举和集合类型

类型

存储大小

描述

ENUM('value1', 'value2', ...)

1 或 2 字节(最多 65535 个值)

枚举类型,只能选一个

SET('value1', 'value2', ...)

1、2、3、4 或 8 字节

集合类型,可以选多个

6. JSON 类型(MySQL 5.7+)

类型

存储大小

描述

JSON

可变长度

存储结构化 JSON 数据,自动验证格式


13. 什么是自增字段,什么是主键,什么是唯一键,什么是联合主键

1. 自增字段(AUTO_INCREMENT)

定义:

自增字段是一个可以自动递增的整数类型字段,通常用于生成唯一的行标识符。

特点:

  • 只能是整数类型(如 INT, BIGINT

  • 每次插入新记录时,如果不指定值,系统会自动分配一个比当前最大值大 1 的值

  • 通常与主键结合使用

2. 主键(PRIMARY KEY)

定义:

主键是表中每条记录的唯一标识,用于确保数据完整性,并且每个表只能有一个主键。

特点:

  • 值必须唯一且非空(NOT NULL

  • 一个表只能有一个主键(但可以是多个字段组成的联合主键)

  • 通常设置为自增字段

3. 唯一键(UNIQUE KEY)

定义:

唯一键用于保证某列或多列组合中的值在整个表中是唯一的,但允许有 NULL 值(不同数据库处理方式略有不同)。

特点:

  • 可以为多个字段创建唯一约束

  • 允许 NULL 值(但只允许一个 NULL,具体取决于数据库实现)

  • 一个表可以有多个唯一键

4. 联合主键(Composite Primary Key)

定义:

联合主键是指由两个或多个字段共同组成的主键,这些字段的组合值在整个表中必须唯一。

特点:

  • 多个字段一起构成主键

  • 所有字段都不能为空

  • 更适合业务逻辑中有自然唯一性的情况(如订单号 + 商品号)


14. 创建一个表,字段有id,姓名、生日、性别。

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    birthday DATE,
    gender ENUM('男', '女')
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


15. 如何对表进行增删改查,命令是什么?

1. 增:添加数据(INSERT)

用于向表中插入新记录。

语法:

INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);

2. 删:删除数据(DELETE)

用于从表中删除记录。

语法:

DELETE FROM 表名 WHERE 条件;

3. 改:更新数据(UPDATE)

用于修改表中的已有记录。

语法:

UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2 WHERE 条件;

4. 查:查询数据(SELECT)

用于从表中查询记录。

语法:

SELECT 字段列表 FROM 表名 [WHERE 条件];

注:如果不加where则会对所有表进行操作。


16. where在SQL语句中有什么作用,有人会在where后添加1=1或者1=0的筛选条件,有什么作用

1、在 SQL 查询中,WHERE 子句用于 筛选符合条件的数据行,它决定了查询结果集中只包含满足指定条件的记录。

2、为什么有人会在 WHERE 后加 1=1 或 1=0:

这是 SQL 编程中的一个技巧,常用于动态拼接 SQL 语句或调试。

1. WHERE 1=1

作用:

始终为真,表示不进行任何过滤,相当于没有 WHERE 条件。

当你需要动态拼接 SQL 语句时,方便后续添加 AND condition 而不用判断是否已有 WHERE。

2. WHERE 1=0

作用:

始终为假,表示不返回任何记录。

使用场景:

  • 调试 SQL 结构时测试语法是否正确但不想真正执行查询;

  • 获取表结构而不获取数据;

  • 构建模板时预留位置,后期替换真实条件。


17. 执行删除内容时忘记添加筛选条件会怎么样?如何防止这一操作

场景

错误操作后果

预防措施

MySQL DELETE 无 WHERE

删除全表数据

使用事务、先 SELECT 再 DELETE

MySQL UPDATE 无 WHERE

修改全表数据

设置 safe-updates 模式


18. 往此表中插入3条数据,修改每条数据的一些内容,通过查询语句获取全部数据,最后删除前两条数据

插入数据:

INSERT INTO users (name, birthday, gender) VALUES
('张三', '1990-05-20', '男'),
('李四', '1985-10-15', '女'),
('王五', '1992-03-10', '男');

修改数据:

UPDATE users SET birthday = '1991-01-01' WHERE name = '张三';
UPDATE users SET name = '李思思' WHERE name = '李四';
UPDATE users SET gender = '女' WHERE name = '王五';

删除数据:

DELETE FROM users WHERE id IN (
    SELECT id FROM (
        SELECT id FROM users ORDER BY id LIMIT 2
    ) AS tmp
);

以他人的幸福为幸福,以他人的享乐为享乐。