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功能。每完成一个功能立即备份数据,养成良好操作习惯。