当前位置: 首页 > news >正文

MySQL数据库零基础入门教程:从安装配置到数据查询全掌握

MySQL数据库零基础入门教程:从安装配置到数据查询全掌握

引言

MySQL 是最流行的开源关系型数据库,广泛应用于互联网、电子商务和数据分析领域。本教程面向零基础读者,涵盖环境搭建、核心操作、表设计与查询、性能优化、备份恢复和实战案例,助你快速掌握 MySQL 核心技能。


目录

  1. 环境准备
  2. 安装与配置
  3. 基础操作
  4. 表结构设计
  5. 核心查询语句
  6. 进阶与事务
  7. 索引与性能优化
  8. 备份与恢复
  9. 常用工具
  10. 实战示例
  11. 总结与延伸

1. 环境准备

  • 系统:Windows 10/11、Ubuntu 18.04+、CentOS 7+
  • 硬件:CPU ≥2核,内存 ≥2GB,硬盘 ≥1GB 空间
  • 网络:建议稳定网络,方便下载和远程访问

基本概念:数据库、表、行/列、主键/外键、索引、SQL


2. 安装与配置

2.1 Windows

  1. 前往官方(dev.mysql.com)下载社区版 MSI 安装包。

  2. 选择 Developer DefaultServer only

  3. 配置向导:

    • Server Type:Standalone,端口 3306
    • Authentication:Use Strong Password Encryption
    • Accounts:设置 root 密码,可添加只读/写用户
    • Windows Service:开机自启
  4. 验证:mysql -u root -p

2.2 Ubuntu

sudo apt update
tudo apt install mysql-server
sudo mysql_secure_installation
sudo systemctl enable --now mysql

2.3 核心配置

  • 文件:/etc/mysql/my.cnfmy.ini

  • 建议:

    • bind-address=127.0.0.1(仅本地)或 0.0.0.0(允许远程)
    • innodb_buffer_pool_size=物理内存70%
    • max_connections=300
    • 开启 slow_query_log

2.4 安全加固

-- 禁用匿名,删除测试库
sudo mysql_secure_installation
-- 创建应用用户
CREATE USER 'app'@'%' IDENTIFIED BY 'StrongP@ssw0rd';
GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'app'@'%';
FLUSH PRIVILEGES;

3. 基础操作

3.1 服务管理

  • Windows: net start mysql / net stop mysql
  • Linux: sudo systemctl start mysql / stop mysql

3.2 登录与退出

mysql -u 用户名 -p
exit;

3.3 数据库与表

-- 创建/删除数据库
CREATE DATABASE mydb CHARSET utf8mb4;
DROP DATABASE mydb;
USE mydb;-- 创建/删除表
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,email VARCHAR(100) UNIQUE,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
DROP TABLE users;

4. 表结构设计

  1. 数据类型:INT, BIGINT, DECIMAL, VARCHAR, TEXT, DATE, DATETIME, BOOLEAN
  2. 主键&外键:保证数据唯一性和关联完整性
  3. 索引策略:BTREE、HASH、覆盖索引,用于加速查询
  4. 范式:1NF(原子性)、2NF(无部分依赖)、3NF(无传递依赖)

示例:用户表 & 订单表

CREATE TABLE users (id INT PK AUTO_INCREMENT, name VARCHAR(50));
CREATE TABLE orders (id INT PK AUTO_INCREMENT, user_id INT,amount DECIMAL(10,2),FOREIGN KEY (user_id) REFERENCES users(id)
);

5. 核心查询语句

CRUD

INSERT INTO users (name,email) VALUES ('张三','zhang@example.com');
SELECT * FROM users;
UPDATE users SET email='zhangsan@example.com' WHERE id=1;
DELETE FROM users WHERE id=1;

筛选&排序

SELECT * FROM users WHERE name LIKE '张%' ORDER BY created_at DESC LIMIT 10;

聚合&分组

SELECT user_id, COUNT(*) cnt FROM orders GROUP BY user_id HAVING cnt>5;

多表关联

SELECT u.name, o.amount
FROM users u
JOIN orders o ON u.id=o.user_id;

视图

CREATE VIEW vip_orders AS SELECT * FROM orders WHERE amount>1000;

6. 进阶与事务

窗口函数

SELECT user_id, amount,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY amount DESC) rn
FROM orders;

存储过程

DELIMITER $$
CREATE PROCEDURE add_user(IN n VARCHAR(50), IN e VARCHAR(100))
BEGININSERT INTO users(name,email) VALUES(n,e);
END$$
DELIMITER ;

事务

START TRANSACTION;
UPDATE accounts SET balance=balance-100 WHERE id=1;
UPDATE accounts SET balance=balance+100 WHERE id=2;
COMMIT;

执行计划&慢查询

  • EXPLAIN SELECT ... 查看查询路径
  • 分析 slow_query_log

7. 索引与性能优化

  • 合理建索引:避免过多、选择性高的列
  • 拆分大表:垂直/水平分表
  • 参数调优:innodb_buffer_pool_size、连接池设置

8. 备份与恢复

mysqldump

mysqldump -u root -p mydb > mydb.sql
mysql -u root -p mydb < mydb.sql

XtraBackup

xtrabackup --backup --target-dir=/data/backup

提示:定期全备 + 增量,恢复前停止服务


9. 常用工具

  • 可视化:MySQL Workbench、Navicat
  • 驱动:Connector/J、Connector/Python
  • ORM:SQLAlchemy、Hibernate

10. 实战示例:简易博客

  1. 表设计
CREATE TABLE posts (id INT PK AUTO_INCREMENT, title VARCHAR(100), content TEXT, created DATETIME);
CREATE TABLE comments (id INT PK AUTO_INCREMENT, post_id INT, author VARCHAR(50), text TEXT);
  1. 典型操作:分页查询、全文索引搜索

相关文章:

  • MySQL增删改查基础教程:熟练掌握DML语句操作【MySQL系列】
  • 58、【OS】【Nuttx】编码规范解读(六)
  • java每日精进 5.26【本地缓存】
  • Java----自动装箱和自动拆包 与 泛型
  • 基数排序---Java版本
  • springboot上传文件
  • 浏览器指纹科普 | 语言 vs 界面语言,区别是什么?
  • 解锁集成电路制造新建项目的防震黑科技-江苏泊苏系统集成有限公司
  • 纯彩天气隐私政策
  • java高级 -动态代理
  • unix的定时任务和quartz和spring schedule的cron表达式区别
  • 信息论基础理论与应用全面指南
  • 前端配置nginx代理
  • 原生js实现数据响应方法2.0
  • 深度学习入门(十三):加深网络
  • Linux Docker 安装oracle19c数据库教程
  • 【算法提升】牛牛冲钻五 最长无重复子数组 重排字符串 one_day
  • 热点数据的统计到应用
  • 【Sqoop基础】Sqoop定位:关系型数据库与Hadoop生态间的高效数据桥梁
  • RabbitMQ 集群与高可用方案设计(三)
  • 成都哪里做网站/正规接单赚佣金的平台
  • 旅游网站设计源代码/微信怎么引流营销呢
  • 衡阳房产网/seo营销方案
  • 做外贸网站案例/seo技术教程网
  • 郓城网站建设公司/大侠seo外链自动群发工具
  • 自己做的网站会被黑吗/重庆seo整站优化