MySQL简介与安装

MySQL作为最流行的开源关系型数据库,以其易用性、高性能和可靠性成为初学者入门的首选。想象一下数据库就像电子化的文件柜,而MySQL就是管理这个文件柜的系统。它使用结构化查询语言(SQL)进行数据操作,支持从个人博客到企业级应用的各类场景。

安装MySQL(以Windows为例)

官网下载MySQL Installer

选择"Developer Default"安装类型

配置root用户密码(建议使用强密码)

设置Windows服务名(默认MySQL80)

执行Apply Configuration完成安装

验证安装:命令行输入 mysql -V 显示版本号即成功。

连接MySQL服务器

三种常用方式:

命令行连接

mysql -u root -p # 输入密码后进入交互界面

MySQL Workbench图形工具

新建连接,填写主机名(127.0.0.1)、端口(3306)、用户名/密码

编程语言连接(Python示例)

import mysql.connector

db = mysql.connector.connect(

host="localhost",

user="root",

password="your_password"

)

print("连接成功!" if db.is_connected() else "失败")

数据库核心操作

1. 数据库管理

-- 创建数据库

CREATE DATABASE school_db;

-- 查看所有数据库

SHOW DATABASES;

-- 选择当前操作的数据库

USE school_db;

-- 删除数据库(谨慎操作!)

DROP DATABASE test_db;

2. 数据表操作

-- 创建学生表

CREATE TABLE students (

id INT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(50) NOT NULL,

age TINYINT CHECK(age>0),

gender ENUM('M','F') DEFAULT 'M',

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);

-- 查看表结构

DESCRIBE students;

-- 修改表(添加邮箱字段)

ALTER TABLE students ADD COLUMN email VARCHAR(100);

-- 删除表

DROP TABLE temp_table;

3. 数据增删改查(CRUD)

-- 插入数据

INSERT INTO students (name, age, gender)

VALUES ('张三', 18, 'M'), ('李四', 17, 'F');

-- 查询数据

SELECT * FROM students WHERE age > 16 ORDER BY created_at DESC;

-- 更新数据

UPDATE students SET age = 19 WHERE name = '张三';

-- 删除数据

DELETE FROM students WHERE id = 2;

进阶操作技巧

1. 条件查询与聚合

-- 统计男女学生平均年龄

SELECT gender, AVG(age) AS avg_age

FROM students

GROUP BY gender

HAVING avg_age > 17;

2. 表关联查询

-- 创建成绩表

CREATE TABLE scores (

student_id INT,

course VARCHAR(20),

score DECIMAL(5,2),

FOREIGN KEY (student_id) REFERENCES students(id)

);

-- 联表查询学生成绩

SELECT s.name, c.course, c.score

FROM students s

JOIN scores c ON s.id = c.student_id;

3. 数据备份与恢复

# 命令行备份

mysqldump -u root -p school_db > school_backup.sql

# 恢复数据

mysql -u root -p school_db < school_backup.sql

安全操作规范

权限控制原则 -- 创建专用用户并授权

CREATE USER 'web_user'@'localhost' IDENTIFIED BY 'StrongPass123!';

GRANT SELECT, INSERT ON school_db.* TO 'web_user'@'localhost';

防SQL注入措施

永远不要拼接SQL语句

使用参数化查询(Python示例)

cursor.execute("SELECT * FROM users WHERE username = %s", (user_input,))

定期备份策略

生产环境建议每日全量备份+每小时增量备份

性能优化入门

优化方向

具体操作示例

效果

索引优化

CREATE INDEX idx_name ON students(name);

加速WHERE查询

查询语句优化

避免SELECT * 只取必要字段

减少网络传输

数据类型优化

用TINYINT代替INT存储0-100数值

节省60%存储空间

分区表

按年份分区日志表

提升大表查询效率

-- 执行计划分析(检测慢查询)

EXPLAIN SELECT * FROM students WHERE age BETWEEN 15 AND 20;

常见错误排查

连接拒绝错误(ERROR 1045)

检查用户名/密码

确认用户主机权限 SELECT host, user FROM mysql.user;

表不存在(ERROR 1146)

确认USE选择了正确数据库

表名是否拼写错误(MySQL区分大小写)

外键约束失败(ERROR 1452)

检查关联表是否存在对应主键值

学习路线建议

基础阶段:掌握本文所有操作

进阶阶段:

事务处理(ACID特性)

存储过程与触发器

主从复制配置

高级应用:

查询性能优化

分库分表方案

云数据库运维

实践提示:在本地安装MySQL后,尝试构建一个简单的博客数据库,包含用户表、文章表和评论表,并实现基础CRUD功能。每完成一个功能立即备份数据,养成良好操作习惯。