MySQL 从入门到实战:全方位指南(附 Java 操作示例)

MySQL 入门全方位指南(附Java操作示例)

MySQL 作为最流行的关系型数据库之一,广泛应用于各类应用开发中。本文将从安装开始,逐步讲解 MySQL 的核心知识点与操作技巧,并通过 Java 示例展示客户端交互,帮助你快速掌握 MySQL 实战技能。

一、MySQL 安装

1.1 Windows 安装

  • 下载 MySQL 社区版 安装包
  • 运行安装程序,选择「Server only」模式
  • 配置 root 密码,建议复杂度适中
  • 安装完成后,通过「MySQL Command Line Client」验证

1.2 Linux 安装(以 CentOS 为例)

# 安装
yum install mysql-server
# 启动服务
systemctl start mysqld
# 查看初始密码
grep 'temporary password' /var/log/mysqld.log
# 登录并修改密码
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';

验证安装:

mysql -V  # 输出版本信息即成功

1.3 DBMS

数据库管理软件,推荐 DBeaver

二、MySQL 常用命令

连接数据库:

mysql -u 用户名 -p  # 回车后输入密码

数据库操作:

CREATE DATABASE demo;  # 创建数据库
SHOW DATABASES;        # 查看所有数据库
USE demo;              # 切换到 demo 数据库
DROP DATABASE demo;    # 删除数据库(谨慎操作)

表操作:

CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age INT,create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);  # 创建表SHOW TABLES;           # 查看当前库所有表
DESC users;            # 查看表结构
DROP TABLE users;      # 删除表(谨慎操作)

三、MySQL 基本操作

3.1 插入数据(INSERT)

INSERT INTO users (name, age) VALUES 
('张三', 25),
('李四', 30);  # 批量插入

3.2 删除数据(DELETE)

DELETE FROM users WHERE id = 1;  # 按条件删除(无WHERE则删除全表!)

3.3 修改数据(UPDATE)

UPDATE users SET age = 26 WHERE name = '张三';  # 按条件更新

3.4 查询数据(SELECT)

SELECT * FROM users;  # 查询全表
SELECT name, age FROM users WHERE age > 28;  # 查询指定字段+条件

四、MySQL 关键字与函数

常用关键字

  • SELECT:查询数据
  • INSERT:插入数据
  • UPDATE:更新数据
  • DELETE:删除数据
  • WHERE:过滤条件
  • GROUP BY:分组
  • JOIN:连接表
  • LIMIT:限制结果数量

常用函数

  1. 聚合函数
SELECT COUNT(*) FROM users;  # 总记录数
SELECT AVG(age) FROM users;  # 平均年龄
SELECT SUM(age) FROM users;  # 年龄总和
  1. 字符串函数
SELECT CONCAT(name, '_', age) FROM users;  # 拼接字符串
SELECT LENGTH(name) FROM users;  # 字符串长度
  1. 日期函数
SELECT NOW();  # 当前时间
SELECT DATE(create_time) FROM users;  # 提取日期部分

五、MySQL 查询语法进阶

5.1 条件查询

# 多条件(AND/OR)
SELECT * FROM users WHERE age > 25 AND name LIKE '张%';
# 范围查询
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
# 枚举查询
SELECT * FROM users WHERE name IN ('张三', '李四');

5.2 聚合与分组查询

# 按年龄分组统计人数
SELECT age, COUNT(*) AS count FROM users GROUP BY age;
# 分组后过滤(HAVING)
SELECT age, COUNT(*) AS count 
FROM users 
GROUP BY age 
HAVING count > 1;  # 只保留人数>1的年龄组

5.3 连接查询

假设有 orders 表(订单):

CREATE TABLE orders (id INT PRIMARY KEY AUTO_INCREMENT,user_id INT,amount DECIMAL(10,2),FOREIGN KEY (user_id) REFERENCES users(id)
);
  • 内连接(只保留匹配的记录):
SELECT u.name, o.amount 
FROM users u
INNER JOIN orders o 
ON u.id = o.user_id;
  • 左连接(保留左表所有记录):
SELECT u.name, o.amount 
FROM users u
LEFT JOIN orders o 
ON u.id = o.user_id;  # 无订单的用户也会显示(amount为NULL)

5.4 子查询

# 查有订单的用户
SELECT * FROM users 
WHERE id IN (SELECT user_id FROM orders);

5.5 组合查询(UNION)

# 合并两个查询结果(去重)
SELECT name FROM users WHERE age < 25
UNION
SELECT name FROM users WHERE age > 30;

六、MySQL 约束

约束用于保证数据完整性:

  • 主键(PRIMARY KEY):唯一标识记录(非空+唯一)
  • 外键(FOREIGN KEY):关联其他表的主键,保证数据一致性
  • 唯一(UNIQUE):字段值唯一(可空)
  • 非空(NOT NULL):字段不可为空
  • 默认值(DEFAULT):未赋值时使用默认值

示例:

CREATE TABLE products (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100) NOT NULL,code VARCHAR(20) UNIQUE,  # 产品编码唯一price DECIMAL(10,2) DEFAULT 0.00  # 默认价格0
);

七、MySQL 存储引擎

存储引擎决定表的存储方式,常用两种:

  • InnoDB(默认):支持事务、外键、行级锁,适合写操作多的场景
  • MyISAM:不支持事务,查询速度快,适合读多写少的场景

查看/修改存储引擎:

SHOW TABLE STATUS LIKE 'users';  # 查看表引擎
ALTER TABLE users ENGINE = MyISAM;  # 修改引擎

八、MySQL 高级特性

8.1 事务(ACID特性)

BEGIN;  # 开始事务
UPDATE users SET age = 26 WHERE id = 1;
INSERT INTO orders (user_id, amount) VALUES (1, 100);
COMMIT;  # 提交事务(成功则生效)
# ROLLBACK;  # 回滚(失败则撤销)

8.2 索引(加速查询)

CREATE INDEX idx_age ON users(age);  # 为age字段创建索引
DROP INDEX idx_age ON users;  # 删除索引

注意:索引会减慢写操作(插入/更新/删除),需合理设计。

8.3 视图(虚拟表)

CREATE VIEW user_orders AS
SELECT u.name, o.amount FROM users u
JOIN orders o ON u.id = o.user_id;SELECT * FROM user_orders;  # 使用视图

8.4 触发器(自动执行的操作)

# 插入订单后自动更新用户订单数
CREATE TRIGGER update_order_count
AFTER INSERT ON orders
FOR EACH ROW
UPDATE users SET order_count = order_count + 1 
WHERE id = NEW.user_id;

九、库表设计原则

遵循三范式设计,避免冗余:

  1. 每个字段不可再分
  2. 非主键字段需完全依赖主键
  3. 非主键字段不依赖其他非主键字段

示例:电商场景核心表设计

  • users(用户):id, name, phone
  • orders(订单):id, user_id, create_time, total
  • order_items(订单项):id, order_id, product_id, quantity, price
  • products(商品):id, name, price, stock

十、Java 操作 MySQL(JDBC)

10.1 依赖配置(Maven)

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version>
</dependency>

10.2 示例代码

import java.sql.*;public class MySQLDemo {// 连接信息private static final String URL = "jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC";private static final String USER = "root";private static final String PASSWORD = "root123";public static void main(String[] args) {Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {// 1. 加载驱动(MySQL 8.0+ 可省略)Class.forName("com.mysql.cj.jdbc.Driver");// 2. 建立连接conn = DriverManager.getConnection(URL, USER, PASSWORD);// 3. 执行查询String sql = "SELECT id, name, age FROM users WHERE age > ?";pstmt = conn.prepareStatement(sql);pstmt.setInt(1, 25);  // 设置参数rs = pstmt.executeQuery();// 4. 处理结果while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");int age = rs.getInt("age");System.out.println("ID: " + id + ", 姓名: " + name + ", 年龄: " + age);}// 5. 执行插入(示例)String insertSql = "INSERT INTO users (name, age) VALUES (?, ?)";pstmt = conn.prepareStatement(insertSql);pstmt.setString(1, "王五");pstmt.setInt(2, 28);int rows = pstmt.executeUpdate();System.out.println("插入了 " + rows + " 行数据");} catch (Exception e) {e.printStackTrace();} finally {// 6. 关闭资源(后开先关)try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); }try { if (pstmt != null) pstmt.close(); } catch (SQLException e) { e.printStackTrace(); }try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); }}}
}

注意:实际开发中推荐使用 MyBatis、JPA 等框架简化 JDBC 操作。

总结

本文涵盖了 MySQL 从安装到高级特性的核心知识点,从基础的增删改查,到复杂的查询优化、事务管理,再到 Java 客户端操作,形成了完整的知识体系。实践中需注意数据一致性(通过约束和事务)、查询性能(通过索引和合理设计),并结合框架提高开发效率。

掌握这些内容,你将能应对大部分 MySQL 开发场景,后续可深入学习分库分表、性能调优等高级主题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92264.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从低空感知迈向智能协同网络:构建智能空域的“视频基础设施”

✳️ 引言&#xff1a;低空经济起飞&#xff0c;智能视觉链路成刚需基建 随着政策逐步开放与技术加速成熟&#xff0c;低空经济正从概念走向全面起飞。从载人 eVTOL 到物流无人机&#xff0c;从空中巡检机器人到城市立体交通调度平台&#xff0c;低空场景正在成为继地面交通和…

Node.js- express的基本使用

Express 核心概念​ Express是基于Node.js的轻量级Web框架&#xff0c;封装了HTTP服务、路由管理、中间件等核心功能&#xff0c;简化了Web应用和API开发 核心优势​​ 中间件架构&#xff1a;支持模块化请求处理流程路由系统&#xff1a;直观的URL到处理函数的映射高性能&…

计算机网络:网络号和网络地址的区别

在计算机网络中&#xff0c;“网络号”和“网络地址”是两个密切相关但含义不同的概念&#xff0c;主要用于IP地址的划分和网络标识。以下从定义、作用、关联与区别等方面详细说明&#xff1a; 1. 网络号&#xff08;Network Number&#xff09;定义&#xff1a;网络号是IP地址…

【iOS】3GShare仿写

【iOS】3GShare仿写 文章目录【iOS】3GShare仿写登陆注册界面主页搜索文章活动我的总结登陆注册界面 这个界面的ui东西不多&#xff0c;主要就是几个输入框及对输入内容的一些判断 登陆界面 //这里设置了一个初始密码并储存到NSUserDefaults中 NSUserDefaults *defaults [N…

从案例学习cuda编程——线程模型和显存模型

1. cuda介绍CUDA&#xff08;Compute Unified Device Architecture&#xff0c;统一计算设备架构&#xff09;是NVIDIA推出的一种并行计算平台和编程模型。它允许开发者利用NVIDIA GPU的强大计算能力来加速计算密集型任务。CUDA通过提供一套专门的API和编程接口&#xff0c;使得…

进阶向:YOLOv11模型轻量化

YOLOv11模型轻量化详解:从理论到实践 引言 YOLO(You Only Look Once)系列模型因其高效的实时检测能力而广受欢迎。YOLOv11作为该系列的最新演进版本,在精度和速度上均有显著提升。然而,原始模型对计算资源的需求较高,难以在边缘设备或移动端部署。轻量化技术通过减少模…

2025-08 安卓开发面试拷打记录(面试题)

想跑路了&#xff0c;开始学八股&#xff0c;几个主动找的大厂试了下水&#xff0c;后续看情况更新。楼主一年经验&#xff0c;学的c被骗来干安卓&#xff0c;双非本科。2025-07-31 小鹏汇天 安卓开发一面synchronizedhandler视图刷新binderjvm垃圾回收内存泄漏排查glide缓…

风丘助力混合动力汽车工况测试:精准采集整车信号解决方案

一、背景 混合动力汽车是介于纯电动汽车与燃油汽车两者之间的一种新能源汽车。它既包含纯电动汽车无污染、启动快的优势&#xff0c;又拥有燃油车续航便捷、不受电池容量限制的特点。在当前环境下&#xff0c;混合动力汽车比纯电动汽车更符合目前的市场需求。 然而&#xff…

​​MCU程序的存储方式与存储区域大小要求​

程序的段的存储方式与存储区域大小要求 程序的存储和运行涉及 ROM&#xff08;Flash/非易失性存储器&#xff09; 和 RAM&#xff08;易失性存储器&#xff09; 的分配&#xff0c;不同段在存储和运行时具有不同的特性。以下是详细的分类和计算方式&#xff1a;1. 程序文件的存…

Lesson 31 Success story

Lesson 31 Success story 词汇 retire v.退休,退役[运动]去睡觉 构成:re-表示重复 tire v.感到累一tried a.累的 tyre n.轮胎 用法:retire from 单位 从…退休(过去时) 例句:他从学校退休了。 He retired from our school. retire例句: 1.他越来越老了&#xff0c;他即將退休。…

2025年8月4日私鱼创作平台v1.0.4公测版更新发布-完成大部分功能包含关注创作者以及发布作品及合集功能优雅草科技

2025年8月4日私鱼创作平台v1.0.4公测版更新发布-完成大部分功能包含关注创作者以及发布作品及合集功能优雅草科技 鲸鱼小说分销系统介绍 优雅草私鱼创作系统——产品介绍 系统概述 优雅草私鱼创作系统&#xff08;简称“私鱼”&#xff09;是一款专注于私域流量运营的垂直化…

鹧鸪云:光伏电站的“智慧中枢”,精准调控逆变器

光伏电站如星辰散落于大地&#xff0c;那些默默工作的逆变器便是每一处光芒的关键心脏。然而&#xff0c;分布广袤、设备众多&#xff0c;传统运维如盲人摸象&#xff0c;效率低下&#xff0c;故障难寻&#xff0c;白白流失宝贵电能。鹧鸪云光伏运维软件应时而生&#xff0c;它…

java中Reflection反射(一)

目录 一、概述 二、class类&#xff1a; 1、获取类的字节码文件&#xff1a; &#xff08;1&#xff09;方式一&#xff1a;直接通过一个class的静态变量class获取 &#xff08;2&#xff09;方式二&#xff1a;如果知道一个class的完整类名&#xff0c;可以通过静态方法Cl…

CVE-2021-1879

一、漏洞原理 CVE-2021-1879 是 IBM WebSphere Application Server 中存在的一个 路径遍历&#xff08;Path Traversal&#xff09; 漏洞&#xff0c;其核心原理为&#xff1a; ①WebSphere 在处理某些文件操作请求&#xff08;如下载、上传或配置文件读取&#xff09;时&#…

二进制签名查找器(Aho-Corasick 自动机):设计思路与实现原理(C/C++代码实现)

在逆向工程、恶意软件分析和二进制文件解析领域&#xff0c;快速准确地识别特定字节模式&#xff08;即“签名”&#xff09;是一项核心任务。本文将围绕一款基于PE-bear工具的二进制签名查找器&#xff0c;深入解析其设计思路、实现原理及相关技术背景&#xff0c;揭示其如何高…

後端開發技術教學(二) 條件指令、循環結構、定義函數

書接上回&#xff1a;後端開發技術教學(一) [附2025最新可用 phpstudy2018下載鏈接] -CSDN博客 必要資源&#xff1a; trae中文版下載網址: TRAE - The Real AI Engineer phpStudy 2018 : phpStudy - Windows 一键部署 PHP 开发环境 小皮出品 目录 一、條件指令 1.1 if() …

状压DP-基本框架

状压DP-基本框架一、状压DP的核心思想与适用场景1.1 问题特征1.2 核心思想1.3 与传统DP的对比二、位运算基础&#xff1a;状压DP的语法三、状压DP的基本框架3.1 步骤拆解3.2 通用代码模板四、经典案例详解4.1 旅行商问题&#xff08;TSP&#xff09;问题描述状压DP设计代码实现…

Web 端 AI 图像生成技术的应用与创新:虚拟背景与创意图像合成

随着 Stable Diffusion、Midjourney 等生成式 AI 模型的爆发,Web 端图像生成技术从“实验室demo”走向“工业化应用”。其中,虚拟背景替换(如视频会议的动态背景生成)和创意图像合成(如用户上传素材与 AI 生成元素的融合)成为最具代表性的场景,它们通过“文本描述→AI 生…

应急响应知识总结

应急响应 Windows系统 查账号 1、查看服务器是否有弱口令&#xff0c;远程管理端口是否对公网开放。 检查方法&#xff1a;据实际情况咨询相关服务器管理员。 2、查看服务器是否存在可疑账号、新增账号。 检查方法&#xff1a;打开 cmd 窗口&#xff0c;输入 lusrmgr.msc …

智慧水务赋能二次供水管理精细化转型:物联网驱动的全链路解决方案

随着我国城镇化率激增&#xff0c;高层建筑占比上升&#xff0c;二次供水系统已成为保障城市供水安全的核心环节。然而&#xff0c;传统管理模式面临设备老化、运维粗放、监管缺失等矛盾&#xff0c;在此背景下&#xff0c;《“十四五”节水型社会建设规划》明确要求推进二次供…