MySQL 基础学习:数据类型与操作数据库和数据表
在这篇博客中,我们将深入学习 MySQL 的基础操作,重点关注数据库和数据表的操作,以及 MySQL 中常见的数据类型。希望本文能帮助你更好地理解和掌握 MySQL 的基本用法。
一、操作数据库
在 MySQL 中,数据库是数据存储的逻辑集合,以下是常见的数据库操作:
1. 创建数据库
create database 数据库名 charset utf8;
通过以上命令,我们可以创建一个新的数据库,并指定其字符集为 UTF-8。字符集设置在国际化场景中尤为重要。
2. 查看所有数据库
show databases;
该命令会列出当前 MySQL 服务器中的所有数据库。
3. 选择数据库
use 数据库名;
选择一个数据库后,所有后续的表操作都会基于该数据库。
4. 删除数据库
drop database 数据库名;
注意:这是一个危险的操作,会永久删除数据库及其所有数据,在执行前必须确保有备份!
执行删除数据库的建议:
- 确认操作权限。
- 必要时进行多次确认。
- 生产环境中建议执行前找他人复核。
二、操作数据表
数据表是数据库中的核心单元,用于存储结构化数据。以下是常见的数据表操作:
1. 查看数据库中的所有表
show tables;
该命令可以列出当前数据库中的所有表。
2. 创建数据表
create table 表名 (
列名 类型 [约束],
...
);
例如:
create table users (
id int primary key auto_increment,
name varchar(50) not null,
email varchar(100) unique
);
这段代码创建了一个名为 users
的表,其中包含:
id
: 整型主键,自动递增。name
: 长度为 50 的字符串,不能为空。email
: 长度为 100 的唯一字符串。
3. 查看数据表结构
desc 表名;
该命令可以查看表的详细信息(列名、类型、约束等)。
4. 删除数据表
drop table 表名;
注意:删除表时会丢失所有数据,需谨慎操作。
执行删除表的建议:
- 确保操作必要性。
- 执行前备份数据。
三、什么时候操作数据库,什么时候操作数据表
操作数据库和数据表的选择主要取决于具体需求:
操作数据库的场景
- 初始设置: 当你启动一个新项目时,需要为项目创建一个独立的数据库以隔离数据。
- 环境隔离: 不同的开发环境(如开发、测试、生产)需要单独的数据库。
- 数据归档或迁移: 如果需要将一整个项目的数据归档或迁移到另一台服务器,可以操作整个数据库。
- 多租户系统: 在多租户系统中,每个租户可能会有一个独立的数据库。
操作数据表的场景
- 功能扩展: 为现有项目添加新功能时,需要创建新的表来存储相关数据。
- 结构优化: 如果发现表结构不合理,需要调整表(如增加或删除列)。
- 数据清理: 如果某张表的数据已经过期或无用,可以选择删除该表以节约存储空间。
- 特定查询优化: 创建中间表或临时表以提升复杂查询的性能。
简而言之,操作数据库通常是全局性、项目级别的改动,而操作数据表更偏向于模块化、功能性的小范围调整。
四、MySQL 常见数据类型
在 MySQL 中,每个列都必须有一个数据类型,用于定义该列可以存储的数据格式。以下是常见的数据类型:
1. 数值类型
- TINYINT: 1字节,范围 -128 到 127。
- SMALLINT: 2字节,范围 -32,768 到 32,767。
- INT: 4字节,范围 -21亿 到 21亿,常用的整型。
- BIGINT: 8字节,适合存储更大范围的整数。
- DECIMAL(M,D): 精确小数,适用于金融场景。
2. 浮点类型
- FLOAT: 4字节,用于存储单精度浮点数。
- DOUBLE: 8字节,用于存储双精度浮点数。
3. 字符串类型
- CHAR(SIZE): 固定长度字符串。
- VARCHAR(SIZE): 可变长度字符串,最大长度 65535 字节,推荐使用。
- TEXT: 存储大段文本。
4. 时间类型
- DATETIME: 存储日期和时间,8字节。
- TIMESTAMP: 存储时间戳,4字节。
数据类型选择建议
- 整型 : 根据数值范围选择
INT
或BIGINT
。 - 小数 : 金融场景优先选择
DECIMAL
,而非FLOAT
或DOUBLE
。 - 字符串 : 通常优先选择
VARCHAR
,仅在长度固定时选择CHAR
。
五、操作注意事项
- 备份优先:任何涉及删除或修改操作时,务必先备份数据。
- 权限管理:避免普通用户直接操作数据库的结构。
- 审慎执行:多次确认命令后再执行。
通过对数据库和数据表的操作,以及对常见数据类型的理解,你可以更高效地使用 MySQL 存储和管理数据。如果你有任何问题或想法,欢迎留言讨论!