MySQL是当下最流行的关系型数据库管理系统之一,无论是个人项目还是大型业务系统,掌握基本的数据库使用流程都是开发者的基础技能。使用MySQL通常需要依次完成连接服务、创建数据库、选择数据库、创建数据表以及操作数据这几个环节,下面将按照实际操作顺序逐步说明。

连接MySQL服务是使用数据库的第一步
MySQL安装完成之后,默认以后台服务的形式运行。要在这样的服务上执行SQL语句,首先必须通过客户端与服务器建立连接。在众多客户端中,MySQL自带的命令行工具是最稳妥的选择,它不需要安装额外软件,也基本不依赖图形界面,特别适合在服务器环境或本地开发环境中使用。
打开终端或命令提示符,输入下面的连接命令并回车:
mysql -u root -p
命令中-u用于指定登录用户名,root是MySQL默认的管理员账号;-p表示本次连接需要验证密码。执行命令后,终端会提示输入密码,输入过程中不会显示任何字符,这是正常的安全机制,确认无误后回车即可进入MySQL交互式命令行。在mysql>提示符下可以输入SQL语句,也可以通过exit命令随时退出连接。
连接成功是数据库操作的先决条件,后续所有建库、建表和数据处理工作都必须在这个连接会话中完成。如果连接失败,需要优先检查MySQL服务是否启动、用户名密码是否正确,以及端口是否被占用。
查看并创建目标数据库
连接成功后,第一步通常不是立刻创建新库,而是先查看当前MySQL服务中已经存在哪些数据库,避免重复创建或误操作已有数据。执行以下SQL语句即可获得全部数据库列表:
SHOW DATABASES;
返回结果中会包含系统预设的information_schema、mysql等数据库,它们是MySQL运行所必需的基础库,一般不要随意修改。除此以外,列表中出现的便是用户此前创建的业务数据库。查看清楚之后,如果目标库不存在,就可以使用CREATE DATABASE语句创建新库。
创建数据库时,字符集和排序规则的选择至关重要。尤其是需要存储中文内容时,直接使用默认设置容易在后续写入数据时出现乱码。下面的语句在创建数据库的同时指定了字符集与排序规则:
CREATE DATABASE IF NOT EXISTS test_db DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
IF NOT EXISTS的作用是先检查同名数据库是否存在,只有不存在时才执行创建,避免重复执行时抛出错误。utf8mb4是MySQL中较为完整的UTF-8编码实现,支持中文、日文以及表情符号等多种字符;utf8mb4_general_ci中的ci表示大小写不敏感,适合作为通用排序规则。推荐在实际开发中沿用这一组配置。
数据库创建完成后,还需要主动将其设为当前操作库,否则后续的建表语句会因为没有指定数据库而报错。选择数据库使用USE语句:
USE test_db;
执行成功后终端会显示Database changed提示,表示当前会话的默认数据库已经切换为test_db,此后的建表和增删改查操作都会作用于这个数据库。
数据表的设计与创建
数据库本身只是存储数据的容器,真正承载数据的是数据库中的数据表。一个数据库中通常可以包含多张表,每张表由若干字段组成,字段类型和约束决定了数据的存储方式。因此,在创建表之前需要先梳理业务需要保存哪些信息,并想清楚每个字段的类型、长度和是否允许为空。
下面以一张用户表为例,包含用户ID、用户名、年龄三个字段,完整建表语句如下:
CREATE TABLE IF NOT EXISTS user (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
username VARCHAR(50) NOT NULL COMMENT '用户名',
age INT DEFAULT 0 COMMENT '年龄'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
这条语句涉及几个重要的知识点。INT表示整数类型,VARCHAR(50)表示最长不超过50个字符的变长字符串;PRIMARY KEY用于定义主键,主键的值必须唯一且不能为空;AUTO_INCREMENT表示该字段由数据库自动生成递增数字,通常配合主键使用,省去了手工维护ID的麻烦;NOT NULL约束保证插入数据时用户名不能为空;DEFAULT 0则为年龄字段设置了默认值,插入数据时如未提供年龄,会自动填入0。
语句末尾的ENGINE=InnoDB指定了存储引擎。InnoDB是MySQL的默认存储引擎,支持事务、行级锁和外键,适合大部分业务场景。DEFAULT CHARSET=utf8mb4与建库时的字符集保持一致,避免表和数据库字符集不一致导致乱码。COMMENT用来为表或字段添加说明文字,方便后续开发者理解表结构,是良好的工程习惯。
掌握数据的基本增删改查
表创建完成之后,就可以对表内的数据进行操作了。日常工作中最常用的四类操作是插入、查询、更新和删除,统称为增删改查。下面分别介绍这四类操作的典型写法。
插入数据
向用户表中插入数据使用INSERT INTO语句。可以一次插入一条记录,也可以在一条语句中同时插入多行数据,后者在批量导入时能够明显减少与数据库的交互次数。例如:
INSERT INTO user (username, age) VALUES ('张三', 25);
INSERT INTO user (username, age) VALUES ('李四', 28), ('王五', 22);
第一条语句插入张三;第二条语句通过逗号分隔的多组值,同时插入李四和王五。在这两条语句中都没有指定id字段,因为主键设置了AUTO_INCREMENT,数据库会自动为每条记录分配递增的ID。
查询数据
查询语句是日常使用频率最高的SQL语句。SELECT * FROM user可以查看当前表中的全部记录;如果需要筛选满足条件的部分记录,则结合WHERE子句实现。以下查询会返回所有用户,随后再过滤出年龄大于23岁的用户:
-- 查询所有用户 SELECT * FROM user; -- 查询年龄大于23的用户 SELECT * FROM user WHERE age > 23;
在命令行中逐条执行后,MySQL会以表格形式展示查询结果,字段名显示在表头,每一行对应一条记录。使用WHERE条件时,需要注意比较运算符的准确性,例如大于号在SQL语句中写作>。
更新数据
当记录内容发生变化时,可以使用UPDATE语句修改字段值。更新时务必带上WHERE条件,明确要修改哪一行;否则MySQL会将整张表的所有记录都更新为同一值,这种误操作带来的后果通常非常严重。下面的语句将张三的年龄修改为26岁:
-- 将张三的年龄更新为26 UPDATE user SET age = 26 WHERE username = '张三';
执行完成后可以再次使用SELECT语句确认修改结果。建议在任何UPDATE执行前,先用同样的WHERE条件执行一次查询,确认目标数据正确后再进行更新。
删除数据
删除数据使用DELETE FROM语句,与更新操作同理,删除时也必须指定WHERE条件。如果省略WHERE,会清空整张表的数据。以下语句删除用户名为王五的记录:
-- 删除王五的数据 DELETE FROM user WHERE username = '王五';
删除操作不可逆,执行前应当备份重要数据。在测试环境中验证删除条件无误后,再对正式数据执行操作,可以有效规避误删风险。
删除数据库的必要检查与执行
当数据库不再需要时,可以将其从MySQL服务中移除。删除数据库使用DROP DATABASE语句:
DROP DATABASE IF EXISTS test_db;
IF EXISTS用于容错处理,当目标数据库不存在时MySQL不会报错,而是直接而是直接执行成功,不再输出额外的错误信息。执行后可以使用SHOW DATABASES语句确认目标数据库已从列表中消失:
SHOW DATABASES;
需要注意,DROP DATABASE会连同数据库内的所有表和数据一并删除,且无法恢复。即使IF EXISTS可以避免不存在的报错,也不意味着操作本身是安全的。在执行删除数据库之前,务必确认名称拼写无误,并检查是否有其他业务依赖该数据库。建议将数据库导出为SQL文件保存后再执行删除,以便后期恢复。
至此,我们已了解MySQL中的核心基础操作。从连接服务、创建数据库和表,到插入、查询、更新、删除数据,再到删除表与删库,这些技能构成了操作MySQL最常用的骨架。整个过程下来,可以感受到SQL语句的共性:动词开头,目标对象紧随其后,条件通过WHERE限定。凡是修改或删除操作,第一时间自问是否带上了准确的WHERE条件,是避免灾难性操作的关键习惯。
数据库的掌握离不开实践。在本地环境中创建一个测试库,反复执行建表、改数据、加索引、删表等命令,体会每条语句对数据结构的影响。同时,多注意命令行工具提示的报错信息,它们往往精确地指出了语法错误位置或约束冲突原因。随着练习的深入,再逐步接触外键、事务、视图、存储过程等高级特性,对MySQL的理解会更加系统化。
本篇文章以命令行方式走完了MySQL从创建到删除的全过程。通过动手输入每一条语句,读者应当能够直观理解SQL的执行逻辑与表结构管理方式。日常开发中,尽量使用正规的数据库管理工具进行可视化操作,但底层命令依然值得牢记,因为这是排查问题、编写自动化脚本的基础。无论未来使用哪种数据库,这部分通用思维都会带来长远的帮助。