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
英文地址,請注明出處:http://en.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;《“十四五”節水型社會建設規劃》明確要求推進二次供…