MySQL数据库安装
查询防火墙状态
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
基于YUM方式部署MYSQL8.0,操作的方法和指令如下:
yum install mysql-server mysql -y
开机启动MYSQL服务&启动MYSQL服务;
systemctl enable mysqld.service
systemctl restart mysqld.service
进入mysql数据库并设置用户和密码;
mysql #进入mysql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'aaaAAA111.'; #设置用户密码
创建用户&授权jfedu用户访问;
create user jfedu@'%' identified by 'aaaAAA111.';#创建用户jfedu和密码
grant all on *.* to jfedu@'%';#授权jfedu用户访问
授权 root 用户远程登录
CREATE USER 'root'@'192.168.154.1' IDENTIFIED BY 'aaaAAA111.';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.154.1' WITH GRANT OPTION;
打开SQLyog软件新建连接
连接成功
MySQL 数据库实训手册
第一部分:MySQL 基础操作
1.1 数据库基本操作
-- 查看所有数据库
SHOW DATABASES;
-- 创建数据库
CREATE DATABASE mydatabase;
-- 使用数据库
USE mydatabase;
-- 删除数据库
DROP DATABASE mydatabase;
1.2 数据表操作
-- 创建表
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 查看表结构
DESC students;
-- 修改表结构
ALTER TABLE students ADD COLUMN phone VARCHAR(15);
ALTER TABLE students MODIFY COLUMN age TINYINT;
-- 删除表
DROP TABLE students;
第二部分:数据操作语言 (DML)
2.1 插入数据
-- 插入单条数据
INSERT INTO students (name, age, email)
VALUES ('张三', 20, 'zhangsan@email.com');
-- 插入多条数据
INSERT INTO students (name, age, email) VALUES
('李四', 22, 'lisi@email.com'),
('王五', 21, 'wangwu@email.com'),
('赵六', 23, 'zhaoliu@email.com');
2.2 查询数据
-- 基本查询
SELECT * FROM students;
-- 条件查询
SELECT name, age FROM students WHERE age > 21;
-- 排序查询
SELECT * FROM students ORDER BY age DESC;
-- 限制查询结果
SELECT * FROM students LIMIT 2;
2.3 更新数据
-- 更新单条记录
UPDATE students SET age = 24 WHERE name = '李四';
-- 更新多条记录
UPDATE students SET age = age + 1 WHERE age < 22;
2.4 删除数据
-- 删除特定记录
DELETE FROM students WHERE id = 3;
-- 清空表(慎用!)
DELETE FROM students;
第三部分:高级查询技巧
3.1 聚合函数
-- 统计函数
SELECT COUNT(*) as total_students FROM students; -- 统计学生总人数
SELECT AVG(age) as average_age FROM students; -- 计算学生的平均年龄
SELECT MAX(age) as max_age, MIN(age) as min_age FROM students; -- 找出学生中的最大和最小年龄
SELECT SUM(age) as total_age FROM students; -- 计算所有学生年龄的总和
3.2 分组查询
-- 按年龄分组统计
SELECT age, COUNT(*) as count FROM students GROUP BY age HAVING count > 1;
3.3 多表连接查询
-- 创建第二个表
CREATE TABLE courses (
course_id INT PRIMARY KEY AUTO_INCREMENT,
course_name VARCHAR(100),
student_id INT,
FOREIGN KEY (student_id) REFERENCES students(id) -- 这里就是定义外键
);
-- 内连接查询
SELECT s.name, c.course_name
FROM students s
INNER JOIN courses c ON s.id = c.student_id;
-- 左连接查询
SELECT s.name, c.course_name
FROM students s
LEFT JOIN courses c ON s.id = c.student_id;
第四部分:SQLyog 实用功能
4.1 使用查询编辑器
· 在 SQLyog 的查询标签页中编写 SQL 语句
· 使用 Ctrl+Enter 执行当前查询
· 使用 F9 执行选中的 SQL 语句
· 利用 Smart AutoComplete 功能快速编写代码
4.2 对象资源管理器操作
· 右键点击数据库/表进行管理操作
· 使用表数据查看和编辑功能
· 利用导入/导出工具进行数据迁移
4.3 查询优化技巧
-- 使用 EXPLAIN 分析查询性能
EXPLAIN SELECT * FROM students WHERE age > 20;
-- 创建索引提高查询效率
CREATE INDEX idx_age ON students(age);
CREATE INDEX idx_name_age ON students(name, age);
-- 查看students表上的所有索引
SHOW INDEX FROM students;
第五部分:实战练习
练习 1:学生管理系统
-- 创建完整的学校管理系统
CREATE DATABASE school_management;
USE school_management;
-- 创建学生表
CREATE TABLE students (
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_name VARCHAR(50) NOT NULL,
gender ENUM('男','女'),
birth_date DATE,
class_id INT
);
-- 创建班级表
CREATE TABLE classes (
class_id INT PRIMARY KEY AUTO_INCREMENT,
class_name VARCHAR(50),
teacher VARCHAR(50)
);
练习 2:电商数据库设计
-- 设计简单的电商数据库
CREATE DATABASE ecommerce;
USE ecommerce;