MySQL 入门指南:从零开始掌握数据库核心与 SQL 实战

MYSQL详解(持续更新) 去重语句: select distinct 列名 from 表名 字符类型转数值类型语句: select to_number('000123') from dual; 插入语句: insert into 表名 (字段) values (字段值) 新增表字段: alter table 表名 add (字段名 integer default 0 not null); 删除表字段: alter........................................ 阅读详情

1. 什么是数据库?

数据库(Database)是一个有组织的数据集合,用于存储、管理和检索信息。你可以把它想象成一个数字化的文件柜,但比文件柜更强大、更智能。

为什么需要数据库?

  • 持久化存储:数据不会因为程序关闭而丢失。
  • 高效管理:可以快速地对大量数据进行增、删、改、查。
  • 数据共享与安全:多用户可安全地访问同一份数据,并设置不同的权限。
  • 保证数据一致性:通过事务等机制,确保数据的准确和可靠。

MySQL 是其中最流行、最经典的关系型数据库管理系统(RDBMS)之一,以其开源、高性能、可靠和易用著称。

2. 核心概念:表、行、列

理解 MySQL,首先要掌握几个核心概念:

  • 数据库 (Database):一个容器,里面可以存放多张表。例如,一个“电商系统”数据库。
  • 表 (Table):数据库中存储数据的结构化对象,由行和列组成。例如,“用户表”、“订单表”。
  • 列 (Column):也称为字段,定义了表中数据的类型和属性。例如,用户表中的“姓名”、“年龄”、“邮箱”。
  • 行 (Row):也称为记录,是表中的一条具体数据。例如,一个具体的用户信息。
  • 主键 (Primary Key):表中一列或几列的组合,其值能唯一标识表中的每一行。例如,用户ID。

一个简单的用户表示例:

用户ID (主键)姓名年龄邮箱
1张三25zhangsan@email.com
2李四30lisi@email.com

3. SQL:与数据库沟通的语言

SQL(Structured Query Language)是用于管理和操作关系型数据库的标准语言。你通过 SQL 语句告诉数据库要做什么。

四大基础操作(CRUD):

  1. 创建 (Create) - INSERT

    -- 向用户表插入一条新记录
    INSERT INTO users (name, age, email) VALUES ('王五', 28, 'wangwu@email.com');
    
  2. 读取 (Read) - SELECT

    -- 查询所有用户的姓名和邮箱
    SELECT name, email FROM users;
    -- 查询年龄大于25岁的用户
    SELECT * FROM users WHERE age > 25;
    
  3. 更新 (Update) - UPDATE

    -- 将张三的年龄更新为26岁
    UPDATE users SET age = 26 WHERE name = '张三';
    
  4. 删除 (Delete) - DELETE

    -- 删除邮箱为 lisi@email.com 的用户
    DELETE FROM users WHERE email = 'lisi@email.com';
    

3.1 SQL 错误处理示例

在实际操作中,你可能会遇到各种 SQL 错误。了解常见的错误信息及其解决方法,能帮你快速定位问题。

常见错误类型及处理:

  1. 语法错误:通常是由于 SQL 语句书写错误,如缺少括号、引号不匹配、关键字拼写错误等。

    -- 错误示例:缺少 VALUES 关键字
    INSERT INTO users (name, age) ('测试', 20);
    -- 错误信息:You have an error in your SQL syntax...
    -- 正确写法:
    INSERT INTO users (name, age) VALUES ('测试', 20);
    
  2. 约束违反错误:试图插入或更新数据时,违反了表的约束(如主键重复、唯一键冲突、非空字段为空等)。

    -- 假设 email 字段有 UNIQUE 约束
    -- 错误示例:插入重复邮箱
    INSERT INTO users (name, email) VALUES ('小李', 'xiaoming@test.com');
    -- 错误信息:Duplicate entry 'xiaoming@test.com' for key 'users.email'
    -- 处理方法:检查邮箱是否已存在,或使用 INSERT IGNORE / ON DUPLICATE KEY UPDATE
    
  3. 数据类型不匹配:插入的数据类型与列定义不匹配。

    -- 错误示例:向 INT 类型的 age 列插入字符串
    INSERT INTO users (name, age) VALUES ('小王', '二十五');
    -- 错误信息:Incorrect integer value: '二十五' for column 'age'
    -- 正确写法:确保插入的值是整数
    INSERT INTO users (name, age) VALUES ('小王', 25);
    
  4. 表或列不存在:引用了不存在的数据库对象。

    -- 错误示例:查询不存在的列
    SELECT phone FROM users;
    -- 错误信息:Unknown column 'phone' in 'field list'
    -- 处理方法:检查表结构,使用 `DESC users;` 查看所有列名。
    

调试建议:

  • 仔细阅读 MySQL 返回的错误信息,它通常会指出错误的大致位置和原因。
  • 将复杂的 SQL 语句拆分成简单的部分,逐步测试。
  • 使用 SHOW WARNINGS; 命令查看执行后的警告信息。

3.2 SQL 优化实战示例

编写高效的 SQL 语句能显著提升应用性能。以下是一些常见的优化场景和技巧。

1. 避免使用 SELECT *
总是只查询需要的列,减少网络传输和数据库处理的数据量。

-- 不推荐
SELECT * FROM orders;

-- 推荐
SELECT order_id, customer_name, order_date FROM orders;

2. 为查询条件添加索引
对 WHERE、JOIN、ORDER BY 子句中频繁使用的列创建索引。

-- 假设经常按 user_id 和 create_time 查询订单
CREATE INDEX idx_user_time ON orders(user_id, create_time);

-- 使用 EXPLAIN 分析查询计划,确认索引是否生效
EXPLAIN SELECT * FROM orders WHERE user_id = 100 AND create_time > '2024-01-01';

EXPLAIN 结果中的 type 为 ref 或 range,key 显示使用了索引,说明优化有效。

3. 使用 JOIN 替代子查询(在多数情况下)
子查询可能导致多次全表扫描,而 JOIN 通常更高效。

-- 不推荐:使用子查询
SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 1000);

-- 推荐:使用 JOIN
SELECT DISTINCT u.name
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.amount > 1000;

4. 合理使用 LIMIT
当只需要部分结果时,使用 LIMIT 限制返回行数。

-- 只获取最新的10条订单
SELECT * FROM orders ORDER BY create_time DESC LIMIT 10;

5. 注意 LIKE 查询的性能
前导通配符(如 %keyword)会导致索引失效,尽量使用后导通配符(如 keyword%)。

-- 索引可能失效(全表扫描)
SELECT * FROM products WHERE name LIKE '%手机%';

-- 索引有效(如果 name 有索引)
SELECT * FROM products WHERE name LIKE '苹果%';

优化原则总结:

  • 测量,不要猜测:使用 EXPLAIN 分析慢查询。
  • 索引是双刃剑:索引能加速查询,但会降低写入速度并占用存储空间。
  • 批量操作:尽量使用 INSERT INTO ... VALUES (...), (...), ... 进行批量插入,减少网络往返。

4. 动手实践:安装与第一个查询

步骤 1:安装 MySQL
访问 MySQL 官网 下载适合你操作系统的安装包,按照向导完成安装。安装过程中会提示你设置 root 用户的密码,请务必牢记。

安装问题排查:

  • 连接被拒绝 (Access denied):检查用户名和密码是否正确,以及 root 用户是否允许从当前主机连接。
  • 服务无法启动:检查端口 3306 是否被占用,或查看 MySQL 错误日志(通常位于数据目录下的 .err 文件)。
  • 命令行找不到 mysql 命令:需要将 MySQL 的 bin 目录添加到系统的环境变量 PATH 中。
  • 忘记 root 密码:可以参考官方文档,使用 --skip-grant-tables 模式启动服务进行密码重置。
    步骤 2:连接数据库
    安装完成后,你可以通过命令行或图形化工具(如 MySQL Workbench)连接。

常见错误排查流程图:
遇到问题时,可参考以下流程图快速定位方向:

渲染错误: Mermaid 渲染失败: Parse error on line 7: ... E -->|否| G[“查看错误日志(.err文件)”] D --> -----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'PS'
# 在命令行中连接(-u 后接用户名,-p 表示需要密码)
mysql -u root -p

步骤 3:创建你的第一个数据库和表

-- 1. 创建一个名为 `my_first_db` 的数据库
CREATE DATABASE my_first_db;
-- 使用这个数据库
USE my_first_db;

-- 2. 创建一张用户表
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY, -- 自增主键
    name VARCHAR(50) NOT NULL,         -- 变长字符串,非空
    age INT,                           -- 整数
    email VARCHAR(100) UNIQUE          -- 变长字符串,唯一约束
);

-- 3. 插入一些数据
INSERT INTO users (name, age, email) VALUES
('小明', 22, 'xiaoming@test.com'),
('小红', 24, 'xiaohong@test.com');

-- 4. 查询数据
SELECT * FROM users;

运行最后一条 SELECT 语句,你将看到刚才插入的两条记录。恭喜你,完成了第一次数据库操作!

5. 下一步学习建议

掌握了这些基础后,你可以按照以下路径继续深入,逐步构建完整的 MySQL 知识体系:

第一阶段:巩固基础

  • 熟练使用 SELECT:深入学习 WHERE、ORDER BY、LIMIT、GROUP BY、HAVING 等子句,进行复杂的数据过滤、排序和分组统计。
  • 掌握多表操作:理解一对一、一对多、多对多关系,重点练习 INNER JOIN、LEFT JOIN 等连接查询,这是实际业务中最常用的技能。
  • 深入理解约束:实践使用 PRIMARY KEY、FOREIGN KEY、UNIQUE、NOT NULL、CHECK 约束,确保数据的完整性和业务规则。

第二阶段:提升性能与可靠性

  • 索引优化:学习如何为常用查询条件创建索引(CREATE INDEX),并使用 EXPLAIN 命令分析查询执行计划,理解索引如何加速查询。

  • 事务管理:掌握 BEGIN、COMMIT、ROLLBACK 语句,理解事务的 ACID 特性(原子性、一致性、隔离性、持久性),保证复杂操作的数据一致性。

  • 备份与恢复:学习使用 mysqldump 工具进行数据库备份和恢复,这是 DBA 和开发者的必备技能。

  • 事务隔离级别详解:事务隔离级别定义了事务之间的可见性规则,解决并发操作可能引发的脏读、不可重复读、幻读等问题。MySQL 默认的隔离级别是 REPEATABLE READ。

    • READ UNCOMMITTED:最低级别,可能读取到其他事务未提交的数据(脏读)。
    • READ COMMITTED:只能读取到其他事务已提交的数据,解决了脏读,但可能出现不可重复读(同一事务内两次读取同一数据结果不同)。
    • REPEATABLE READ(MySQL 默认):保证在同一事务中多次读取同一数据的结果一致,解决了不可重复读,但仍可能出现幻读(同一事务内两次查询返回的行数不同)。
    • SERIALIZABLE:最高级别,完全串行化执行,解决了所有并发问题,但性能开销最大。
      你可以通过 SET TRANSACTION ISOLATION LEVEL ...; 设置当前会话的隔离级别,或通过 SELECT @@transaction_isolation; 查看当前级别。
      第三阶段:探索进阶特性
  • 存储过程与函数:了解如何将常用的业务逻辑封装在数据库端,提高执行效率和安全性。

  • 视图:学习创建虚拟表(视图)来简化复杂查询,实现数据访问控制。

  • 触发器:了解如何在数据插入、更新、删除时自动执行特定操作。

学习资源推荐:

MySQL 的世界广阔而有趣,从这些基础出发,保持动手实践,你一定能一步步构建起强大的数据管理能力!

MySQL数据库基本操作详解(数据库概述、基本操作、增删改查等) 初学数据库必备!超全!MySQL数据库基本操作详解(数据库概述、基本操作、增删改查等) 阅读详情

相关推荐

MySQL数据库(超详细万字长文,建议收藏)

这篇文章是对MySQL数据库知识的一个汇总,包括MySQL数据库的基础知识、SQL语句的知识、三大范式、数据库的数据类型、数据库与数据表的基本操作、数据表约束、基础查询和高级查询等等。

sunset_bo的博客 4840

MySQL基础语法使用教程

MySQL 使用方法简单教程 目录 MySQL 使用方法简单教程 1 1、启动MySQL服务器 1 2、进入mysql交互操作界面 1 3、退出MySQL操作界面 1 4、第一条命令 1 5、多行语句 2 6、使用SHOW语句找出在服务器上当前存在什么数据库: 2 7、创建一个数据库abccs 2 8、选择你所创建的数据库 3 9、 创建一个数据库表 3 10、显示表的结构: 3 11、查询所有数据: 4 12、修正错误记录: 4 14、 多表操作 5 1、查看第一个表mytable的内容: 5 2、创建第

小宝的博客 7056

MySQL数据库从入门到实战:核心概念、SQL语法与性能优化指南

数据库作为数据持久化存储与管理的核心技术,其核心原理在于通过结构化方式组织数据,支持高效的增删改查操作。关系型数据库基于表结构,通过SQL语言实现数据定义与操作,具备ACID事务特性,保障数据一致性。在Web开发、企业应用等场景中,数据库的性能与可靠性直接影响系统表现。MySQL作为最流行的开源关系型数据库,以其卓越的性能和丰富的生态,成为开发者的首选。本文围绕MySQL的安装配置、核心概念、SQL语法及性能优化等关键环节,通过实战案例解析,帮助读者掌握数据库设计与查询优化技巧,并涵盖索引、事务等进阶知识,

weixin_30443075的博客 463

数据库MySQL详解

全网最详细MySQL教程,2023持续更新中

卓越无关环境,保持空杯心态——靡不有初,鲜克有终 20万+

【MySQL】MySQL 基础入门指南

了解了数据模型后,接下来我们就学习SQL语句,通过SQL语句对数据库、表、数据进行增删改查操作。英文:Structured Query Language,简称 SQL结构化查询语言,一门操作关系型数据库的编程语言定义操作所有关系型数据库的统一标准对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为“方言”Navicat for MySQL 是管理和开发 MySQL 或 MariaDB 的理想解决方案。

qq_40205510的博客 995

UE5游戏逆向实战:用FModel提取.pak文件中的3D模型(附Dumper-7避坑指南)

本文详细介绍了如何使用FModel工具从UE5游戏的.pak文件中提取3D模型,并提供了Dumper-7的避坑指南。内容涵盖FModel工具链配置、UE5特有的unversioned properties问题解决方案、Dumper-7实战流程以及模型后处理技巧,帮助开发者高效获取游戏资产。

weixin_30872499的博客 424

MySQL新手指南:从零开始掌握数据库核心技能

本文提供了MySQL数据库的快速入门指南,涵盖核心概念、安装配置、基础操作到进阶技巧。主要内容包括:数据库基本术语解析,Windows/macOS/Linux系统安装方法,CRUD基础操作,SQL查询进阶技巧(条件筛选、排序分组、多表关联),以及图形化工具推荐和数据库设计最佳实践。同时提供了30天学习路线、常见错误解决方案和性能优化黄金法则。适合新手从零开始系统学习MySQL,强调实践操作和渐进式学习,并推荐了官方文档等学习资源。通过本指南,读者可以掌握MySQL的基础操作和核心技能,开启数据库学习之旅。

IT913913的博客 1605

AI赋能运筹优化:从参数生成到智能求解的工程实践

运筹学通过线性规划、整数规划等数学模型,为供应链、物流、生产排程等复杂决策问题寻找最优解,其核心价值在于提升资源利用效率与决策科学性。传统方法依赖精确的输入参数与专家经验,面临数据不准、建模门槛高、求解调优难等挑战。人工智能技术的引入,正从原理层面重塑这一流程:通过深度学习模型生成更贴合现实的动态参数(如需求分布、行驶时间),利用自然语言处理降低建模门槛,并借助强化学习对求解器进行智能参数调优。这种AI与运筹学的融合,在工程实践中显著提升了优化系统的自适应能力与求解效率,使其在应对实时交通、柔性生产调度等动

weixin_26913055的博客 595

MySQL入门指南:从零开始掌握MySQL数据库

MySQL是一种关系型数据库管理系统,基于SQL(Structured Query Language,结构化查询语言)运行。它允许用户通过SQL语句创建、管理和操作数据库,存储和检索数据。MySQL是一个功能强大且灵活的关系型数据库管理系统,广泛应用于各种场景。通过本文的介绍,你已经掌握了MySQL的基本概念、安装方法、操作命令和优化技巧。希望你能够通过实践不断提升自己的技能,并在数据库管理的道路上越走越远。记住,学习数据库管理是一个循序渐进的过程,多实践、多探索,你将逐渐成为MySQL的高手。

qq_64012470的博客 1368

YOLOv12改进策略【注意力机制篇】| 2024 PPA 并行补丁感知注意模块,提高小目标关注度(二次改进A2C2f)

本文记录的是利用改进检测精度,详细说明了优化原因,注意事项等。原论文在红外小目标检测任务中,小目标在多次下采样操作中容易丢失关键信息。通过替代编码器和解码器基本组件中的传统卷积操作,更好地保留小目标的重要信息。HCF-Net: Hierarchical Context Fusion Network for Infrared Small Object Detection采用多分支特征提取策略,通过不同分支提取不同尺度和层次的特征。利用局部、全局和串行卷积分支,对输入特征张量进行处理。通过控制 patch si

Limiiiing的博客 1888

【QGIS】软件下载安装及GIS4WRF插件使用

【QGIS】软件下载安装及GIS4WRF插件使用

WW、forever的博客 1800

Chinook Database完全指南:从零开始的数据库教学神器

Chinook Database是一款功能强大的示例数据库,支持SQL Server、Oracle、MySQL、PostgreSQL、SQLite和DB2等多种数据库系统,是数据库学习与实践的理想选择。无论是数据库新手入门,还是开发人员测试ORM工具,它都能提供全面且贴近实际的数据库环境。 ## 📚 为什么选择Chinook Database作为学习工具? Chinook Database作

gitblog_00957的博客 1006

手把手教你学Simulink--基于Simulink的微电网用DC-DC变换器仿真建模

微电网概述微电网:包括可再生能源发电设备、储能系统和负载,可以独立于大电网运行,也可以并网运行。重要性提高能源可靠性:通过本地化供电减少对外部电网的依赖。促进可再生能源利用:支持高效整合多种可再生能源。挑战多源管理:不同类型的能源产生方式各异,需设计灵活的电源管理系统。能量转换效率:需要高效的能量转换装置来确保能源的有效利用。通过上述步骤,我们简要介绍了如何基于Simulink进行微电网中DC-DC变换器的仿真建模。

MHD0815的博客 162

数据库入门:从零开始掌握核心概念

存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点:文件的安全性问题文件不利于数据查询和管理文件不利于存储海量的数据文件在程序中控制不方便磁盘内存为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。2.主流数据库SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。Oracle甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。MySQL。

2301_79420799的博客 1024

把 Claude Code 接进 ABAP 世界,vibing-steampunk 到底能做什么

《Vibing Steampunk:AI Agent 与 ABAP 开发的工程化桥梁》摘要 Vibing Steampunk(vsp)是一个连接 AI Agent 与 SAP ABAP 开发环境的开源工具,通过 Model Context Protocol(MCP)将 ABAP 开发能力标准化。它解决了传统 ABAP 开发中 AI 辅助工具的局限性,使 Claude Code 等 AI 编程助手能够直接访问 ADT API,实现代码读写、调试、测试等完整开发流程。该工具采用 Go 语言开发,提供 147 个

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1935

让 Claude Code 接管 SAP 事务流, 用 Python 和 SAP GUI Scripting 做一个真正能干活的 AI Agent

摘要:SAP系统自动化面临的核心瓶颈在于繁琐的GUI操作而非分析能力不足。通过整合Claude AI、Python和SAP GUI Scripting技术,可构建能直接操作SAP界面的智能代理。该方案利用SAP官方提供的脚本接口,实现事务码执行、界面导航、数据提取等自动化操作,特别适用于DMLT过账引擎等复杂错误分析场景。相比传统SQL导出方案,这种GUI级自动化能处理树控件、ALV表格等复杂界面元素,且无需额外API开发,直接在现有SAP GUI会话上工作,在保持原有权限体系的同时显著提升效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 324

MySQL入门指南:从零掌握数据库核心操作

本文介绍了MySQL关系型数据库的核心概念和基本操作指南。主要内容包括:MySQL基础术语(数据库、表、列、行等);环境搭建步骤(Windows/Linux安装配置);常用SQL命令(数据库/表操作、CRUD增删改查);实用工具(MySQL Workbench等可视化客户端)和学习技巧(索引、备份、事务等)。文章提供了详细的SQL语法示例和注意事项,适合数据库初学者快速掌握MySQL的基本使用。

sdnkd的博客 1922

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MySQL从入门到精通(第一篇):数据库基础与SQL入门实战

数据库(DB):存储和管理数据的仓库,通过结构化方式组织数据(如表、字段)。数据库管理系统(DBMS):管理数据库的软件,如MySQL、Oracle、SQL Server等。

Leaton的博客 1981

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

快速上手Go数据库操作:使用database/sql包连接数据库的5个步骤

你是否正在学习Go语言,想要快速掌握数据库操作技巧?Go语言的database/sql包提供了简洁而强大的数据库访问接口,让你能够轻松连接和操作各种SQL数据库。在本篇**Go数据库操作指南**中,我将为你详细介绍使用database/sql包连接数据库的5个关键步骤,帮助你快速上手Go数据库编程。 ## 🚀 为什么选择Go的database/sql包? Go的database/sql包是一

gitblog_00426的博客 728

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MySQL 入门指南:从零开始掌握数据库基本操作

本文提供了MySQL数据库操作的完整指南,涵盖数据库连接、创建与管理,以及表操作和数据增删改查(CRUD)。主要内容包括:1)通过命令行或图形工具连接MySQL;2)使用CREATE/SHOW/DROP管理数据库;3)创建表并定义字段类型和约束;4)执行数据插入、查询、更新和删除操作。文章采用SQL语句示例讲解,强调WHERE子句在更新和删除时的重要性,避免全表操作。适合开发者快速掌握MySQL基础操作,为进阶学习奠定基础。

z209472953z的博客 1119

从零开始:小白SQL入门指南

从零开始:小白SQL入门指南 在当今数字化时代,数据的重要性不言而喻。无论是企业决策、数据分析还是应用程序开发,SQL(结构化查询语言)作为数据库管理的核心工具,成为了每个程序员和数据工作者必备的技能之一。然而,对于初学者来说,SQL的学习曲线可能显得陡峭且充满挑战。本文将为SQL小白提供一份详尽的入门指南,并介绍如何借助智能化工具如InsCode AI IDE,让学习过程变得更加轻松愉快。 最新...

inscode_022的博客 926

Django 静态资源加载与 Ajax 局部刷新实战:从学科投票项目理解前后端异步交互

本文围绕 [Python-100-Days](https://link.gitcode.com/i/eafab686d25739f7c4e544b61c67662b) 教程中 Django 系列(Day46-60)的投票项目,完整讲解两个核心实战主题:一是如何在 Django 开发阶段正确配置并加载 CSS、JavaScript 与图片等静态资源;二是如何借助 Ajax 技术在不刷新整个页面的前提

gitblog_00795的博客 1082

从零开始学习MySQL数据库管理与SQL查询实战指南

在深入学习之前,我们首先需要理解数据库的基本概念。数据库是一个有组织的数据集合,可以有效地存储、管理和检索信息。关系型数据库则使用表格(由行和列组成)来存储数据,并通过SQL(结构化查询语言)进行管理。MySQL正是这样一种关系型数据库,以其高性能、高可靠性和易用性而广受赞誉。

sinian18601的博客 350

MySQL 从入门到实战:概念、安装、模型与 SQL 规范

本文系统介绍了MySQL从入门到实战的核心知识,包括基础概念、安装配置、数据模型和SQL规范四大部分。重点讲解了DB、DBMS与RDBMS的区别,MySQL的优势特性,以及Windows/Linux环境下的安装避坑指南。详细解析了关系型数据库的表结构设计和主外键关联原理,并分类说明DDL、DML、DQL、DCL四种SQL语句的语法规范与使用场景。通过"概念+实战+避坑"的方式,帮助开发者快速建立完整的MySQL知识框架,避免常见错误。

m0_60277481的博客 1046

MySQL数据库入门实战:从零搭建到SQL核心语法与项目应用

数据库是存储和管理结构化数据的核心系统,其核心原理在于通过表、行、列的关系模型组织信息,并利用SQL语言进行高效操作。作为关系型数据库的代表,MySQL凭借其开源免费、性能优异和生态丰富的特点,在Web开发、数据分析和后端系统中具有极高的技术价值。在实际应用场景中,从环境安装配置、数据表设计到复杂查询优化,都是开发者必须掌握的基础技能。本文聚焦于MySQL的实战入门,通过学生选课系统案例,详细解析DDL、DML、DQL等核心SQL语法,并涵盖事务处理、外键约束及常见错误排查,帮助初学者系统构建数据库操作能力

weixin_32288959的博客 360
上一篇: Claude Code 离线安装方案揭秘:从零到一构建企业级私有化 AI 编程助手
下一篇: DeepseekHarness:一站式 AI 应用开发与部署框架
system_error_x
博客等级 码龄3年 17粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值