精品,架构师总结,MySQL 5.7 查询入门详解

文章目录

  • MySQL 5.7 查询入门详解
    • 一、数据库与表基础操作
      • 1.1 连接数据库
      • 1.2 创建数据库
      • 1.3 使用数据库
      • 1.4 创建数据表
      • 1.5 表结构查看
    • 二、SELECT基础查询
      • 2.1 全列查询
      • 2.2 指定列查询
      • 2.3 别名使用
      • 2.4 去重查询
      • 2.5 表达式计算
    • 三、WHERE条件查询
      • 3.1 比较运算符
      • 3.2 逻辑运算符
      • 3.3 范围查询
      • 3.4 模糊查询
    • 四、JOIN关联查询
      • 4.1 内连接
      • 4.2 左连接
      • 4.3 自连接
    • 五、聚合函数与分组
      • 5.1 聚合函数
      • 5.2 GROUP BY分组
      • 5.3 HAVING过滤分组
    • 六、子查询与高级用法
      • 6.1 标量子查询
      • 6.2 IN子查询
      • 6.3 EXISTS子查询
    • 七、索引与性能优化
      • 7.1 创建索引
      • 7.2 EXPLAIN分析
      • 7.3 优化建议
    • 八、实用技巧与注意事项
      • 8.1 分页查询
      • 8.2 排序规则
      • 8.3 时间区间查询
    • 九、常见问题解决
      • 9.1 中文乱码处理
      • 9.2 密码重置
    • 十、实战案例:订单管理系统
    • 总结

MySQL 5.7 查询入门详解

一、数据库与表基础操作

1.1 连接数据库

mysql -u 用户名 -p
-- 输入密码后进入MySQL命令行

1.2 创建数据库

CREATE DATABASE IF NOT EXISTS test_db 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

1.3 使用数据库

USE test_db;

1.4 创建数据表

CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age TINYINT UNSIGNED,gender ENUM('男','女','其他'),create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

1.5 表结构查看

DESCRIBE students; -- 查看表结构
SHOW CREATE TABLE students; -- 查看完整建表语句

二、SELECT基础查询

2.1 全列查询

SELECT * FROM students;

2.2 指定列查询

SELECT name, age FROM students;

2.3 别名使用

SELECT name AS 学生姓名,age + 5 AS 预测年龄
FROM students;

2.4 去重查询

SELECT DISTINCT gender FROM students;

2.5 表达式计算

SELECT name,age,age * 0.8 AS discount_age
FROM students;

三、WHERE条件查询

3.1 比较运算符

-- 查询年龄大于18岁的学生
SELECT * FROM students 
WHERE age > 18;-- 查询性别为女的记录
SELECT * FROM students 
WHERE gender = '女';

3.2 逻辑运算符

-- AND运算(同时满足)
SELECT * FROM students 
WHERE age > 18 AND gender = '男';-- OR运算(满足其一)
SELECT * FROM students 
WHERE age < 18 OR gender = '女';-- NOT运算(取反)
SELECT * FROM students 
WHERE NOT (age > 20);

3.3 范围查询

-- BETWEEN...AND(闭区间)
SELECT * FROM students 
WHERE age BETWEEN 18 AND 25;-- IN运算符
SELECT * FROM students 
WHERE gender IN ('男','女');

3.4 模糊查询

-- LIKE通配符
SELECT * FROM students 
WHERE name LIKE '张%'; -- 以张开头SELECT * FROM students 
WHERE name LIKE '%小'; -- 以小结尾SELECT * FROM students 
WHERE name LIKE '_小%'; -- 第二个字是小

四、JOIN关联查询

4.1 内连接

-- 学生表与成绩表关联
SELECT s.name, sc.score 
FROM students s
INNER JOIN scores sc 
ON s.id = sc.student_id;

4.2 左连接

-- 包含没有成绩的学生
SELECT s.name, sc.score 
FROM students s
LEFT JOIN scores sc 
ON s.id = sc.student_id;

4.3 自连接

-- 查询学生及其导师信息
SELECT s.name AS 学生,t.name AS 导师
FROM students s
JOIN students t 
ON s.teacher_id = t.id;

五、聚合函数与分组

5.1 聚合函数

-- 统计总人数
SELECT COUNT(*) AS total FROM students;-- 计算平均年龄
SELECT AVG(age) AS avg_age FROM students;-- 最大最小值
SELECT MAX(age), MIN(age) FROM students;-- 求和
SELECT SUM(age) FROM students;

5.2 GROUP BY分组

-- 按性别分组统计
SELECT gender,COUNT(*) AS count,AVG(age) AS avg_age
FROM students 
GROUP BY gender;

5.3 HAVING过滤分组

-- 查询平均年龄大于20的分组
SELECT gender,AVG(age) AS avg_age
FROM students 
GROUP BY gender 
HAVING avg_age > 20;

六、子查询与高级用法

6.1 标量子查询

-- 查询比平均年龄大的学生
SELECT * FROM students 
WHERE age > (SELECT AVG(age) FROM students);

6.2 IN子查询

-- 查询有成绩的学生
SELECT * FROM students 
WHERE id IN (SELECT DISTINCT student_id FROM scores);

6.3 EXISTS子查询

-- 查询存在成绩的学生
SELECT * FROM students s 
WHERE EXISTS (SELECT 1 FROM scores sc WHERE sc.student_id = s.id
);

七、索引与性能优化

7.1 创建索引

-- 普通索引
CREATE INDEX idx_name ON students(name);-- 唯一索引
CREATE UNIQUE INDEX idx_email ON users(email);-- 组合索引
CREATE INDEX idx_age_gender ON students(age, gender);

7.2 EXPLAIN分析

EXPLAIN SELECT * FROM students WHERE age > 18;

7.3 优化建议

  1. 优先使用覆盖索引
  2. 避免在索引列上使用函数
  3. 控制单表数据量(建议<500万行)
  4. 定期执行OPTIMIZE TABLE整理碎片

八、实用技巧与注意事项

8.1 分页查询

-- 每页10条,查询第3页
SELECT * FROM students 
LIMIT 20, 10; -- (页码-1)*每页数量

8.2 排序规则

-- 多列排序
SELECT * FROM students 
ORDER BY age DESC, name ASC;-- 修改默认排序规则
ALTER TABLE students MODIFY name VARCHAR(50) COLLATE utf8mb4_unicode_520_ci;

8.3 时间区间查询

-- 查询最近一个月的数据
SELECT * FROM orders 
WHERE create_time >= DATE_SUB(NOW(), INTERVAL 1 MONTH);

九、常见问题解决

9.1 中文乱码处理

-- 修改连接字符集
SET NAMES utf8mb4;-- 修改配置文件(my.cnf)
[client]
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

9.2 密码重置

# 5.7版本密码重置
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;

十、实战案例:订单管理系统

-- 创建订单表
CREATE TABLE orders (order_id INT PRIMARY KEY AUTO_INCREMENT,user_id INT NOT NULL,total_amount DECIMAL(10,2),order_status ENUM('待支付','已支付','已发货','已完成'),created_at DATETIME DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (user_id) REFERENCES users(id)
);-- 统计月度销售额
SELECT DATE_FORMAT(created_at, '%Y-%m') AS month,SUM(total_amount) AS total_sales
FROM orders 
GROUP BY month 
ORDER BY month DESC;

总结

  1. 基础操作:掌握CRUD基本语法
  2. 查询核心:灵活运用WHERE、JOIN、聚合函数
  3. 性能关键:合理使用索引和EXPLAIN分析
  4. 实战重点:理解事务、锁机制、字符集设置

建议通过实际项目练习,逐步掌握复杂查询、存储过程、视图等高级功能。可通过MySQL官方文档(5.7版本)深入学习特定语法细节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/82211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P48-56 应用游戏标签

这一段课主要是把每种道具的游戏Tag进行了整理与应用 AuraAbilitySystemComponentBase.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "AbilitySystemComponent.h"…

【AWS+Wordpress】将本地 WordPress 网站部署到AWS

前言 自学笔记&#xff0c;解决问题为主&#xff0c;亲测有效&#xff0c;欢迎补充。 本地开发机&#xff1a;macOS&#xff08;Sequoia 15.0.1&#xff09; 服务器&#xff1a;AWS EC2&#xff08;Amazon Linux 2023&#xff09; 目标&#xff1a;从本地迁移 WordPress 到云…

从零开始:用PyTorch构建CIFAR-10图像分类模型达到接近1的准确率

为了增强代码可读性&#xff0c;代码均使用Chatgpt给每一行代码都加入了注释&#xff0c;方便大家在本文代码的基础上进行改进优化。 本文是搭建了一个稍微优化了一下的模型&#xff0c;训练200个epoch&#xff0c;准确率达到了99.74%&#xff0c;简单完成了一下CIFAR-10数据集…

C++复习类与对象基础

类的成员函数为什么需要在类外定义 1.1 代码组织与可读性​ ​类内定义​&#xff1a;适合 ​短小简单的函数​&#xff08;如 getter/setter&#xff09;&#xff0c;能直观体现类的接口设计。 ​类外定义​&#xff1a;当函数体较复杂时&#xff0c;将实现移到类外&#xf…

【计算机网络】Cookie、Session、Token之间有什么区别?

大家在日常使用浏览器时可能会遇到&#xff1a;是否清理Cookie&#xff1f;这个问题。 那么什么是Cookie呢&#xff1f;与此相关的还有Session、Token这些。这两个又是什么呢&#xff1f; 本文将对这三个进行讲解区分&#xff0c;如果对小伙伴有帮助的话&#xff0c;也请点赞、…

Python 3.x 内置装饰器 (4) - @dataclass

dataclass 是Python 3.7 引入的一个装饰器&#xff0c;用来简化创建数据类&#xff08;主要存储数据的类&#xff09;的过程。它会自动为类生成一些常用的方法&#xff0c;比如&#xff1a; __init__: 对象的初始化 __repr__: 定义类的官方字符串表示。 __eq__: 定义两个对象…

第一次被AI指点出文章的问题

二十年&#xff0c;几乎从未收到过这种程度的反馈。大部分意见都是有效的批评。 1.前言 关于链家左晖的一篇评论稿 这篇文章有什么问题吗&#xff1f;所有方面都可以谈&#xff0c;包括叙述&#xff0c;用词&#xff0c;重复&#xff0c;真实性&#xff0c;偏见&#xff0c;…

var、let、const三者之间的区别和使用

var、let、const 都是用于声明变量的关键字&#xff0c;可以通过作用域、可变性、变量提升几个方面进行区分&#xff1b; 1&#xff0c;作用域 1&#xff09;var的属于函数作用域&#xff0c;只能在函数内使用。若在函数外部声明变量&#xff0c;会变为全局变量&#xff1b; …

Consumer Group的作用是什么?Rebalance的触发条件有哪些? (实现消费者负载均衡;消费者加入/离开、订阅Topic变化等)

好的&#xff0c;我现在需要回答用户关于Kafka Consumer Group和Rebalance的问题。首先&#xff0c;用户问的是Consumer Group的作用以及Rebalance的触发条件。根据之前的对话历史&#xff0c;用户已经了解了Kafka的基本组件、消息保留策略、顺序性保证等&#xff0c;现在的问题…

出一期Source Insigned的使用教程

1. 创建新项目 打开 Source Insight&#xff0c;点击菜单栏的 Project > New Project。在弹出的窗口中&#xff0c;输入项目名称&#xff08;建议与项目内容相关&#xff0c;便于识别&#xff09;。指定项目数据文件的存储路径&#xff08;即 Source Insight 配置文件保存的…

A. Row GCD(gcd的基本性质)

Problem - 1458A - Codeforces 思路&#xff1a; 首先得知道gcd的两个基本性质&#xff1a; (1) gcd(a,b)gcd(a,|b-a|) (2) gcd(a,b,c)gcd(a,gcd(b,c)) 结合题目所给的a1bj&#xff0c;a2bj...... anbj 根据第一条性质得到&#xff1a; gcd(a1bj&#xff0c;a2bj)gcd(…

ES6入门---第三单元 模块三:async、await

async function fn(){ //表示异步&#xff1a;这个函数里面有异步任务 let result await xxx //表示后面结果需要等待 } 读取文件里数据实例&#xff1a; const fs require(fs);//简单封装 fs封装成一个promise const readFile function (fileName){return…

如何在 C# 和 .NET 中打印 DataGrid

DataGrid 是 .NET 架构中一个功能极其丰富的组件&#xff0c;或许也是最复杂的组件之一。写这篇文章是为了回答“我到底该如何打印 DataGrid 及其内容”这个问题。最初即兴的建议是使用我的屏幕截图文章来截取表单&#xff0c;但这当然无法解决打印 DataGrid 中虚拟显示的无数行…

C语言 指针(5)

目录 1.冒泡排序 2.二级指针 3.指针数组 4.指针数组模拟二级数组 1.冒泡排序 1.1 基本概念 冒泡排序&#xff08;Bubble Sort&#xff09; 是一种简单的排序算法&#xff0c;它重复地遍历要排序的数列&#xff0c;一次比较两个元 素&#xff0c;如果它们的顺序错误就把它…

15前端项目----用户信息/导航守卫

登录/注册 持久存储用户信息问题 退出登录导航守卫解决问题 持久存储用户信息 本地存储&#xff1a;&#xff08;在actions中请求成功时&#xff09; 添加localStorage.setItem(token,result.data.token);获取存储&#xff1a;&#xff08;在user仓库中&#xff0c;state中tok…

RSS 2025|斯坦福提出「统一视频行动模型UVA」:实现机器人高精度动作推理

导读 在机器人领域&#xff0c;让机器人像人类一样理解视觉信息并做出精准行动&#xff0c;一直是科研人员努力的方向。今天&#xff0c;我们要探讨的统一视频行动模型&#xff08;Unified Video Action Model&#xff0c;UVA&#xff09;&#xff0c;就像给机器人装上了一个“…

基于论文的大模型应用:基于SmartETL的arXiv论文数据接入与预处理(四)

上一篇介绍了基于SmartETL框架实现arxiv采集处理的基本流程&#xff0c;通过少量的组件定制开发&#xff0c;配合yaml流程配置&#xff0c;实现了复杂的arxiv采集处理。 由于其业务流程复杂&#xff0c;在实际应用中还存在一些不足需要优化。 5. 基于Kafka的任务解耦设计 5.…

Fiori学习专题三十五:Device Adaptation

由于在类似于手机的小面板上显示时&#xff0c;我们为了留出更多空间展示数据&#xff0c;可以将一些控件折叠。 1.修改HelloPanel.view.xml&#xff0c;加入expandable“{device>/system/phone}” expanded"{ !${device>/system/phone} <mvc:ViewcontrollerNam…

【记录】HunyuanVideo 文生视频工作流

HunyuanVideo 文生视频工作流指南 概述 本指南详细介绍如何在ComfyUI中使用腾讯混元HunyuanVideo模型进行文本到视频生成的全流程操作&#xff0c;包含环境配置、模型安装和工作流使用说明。 参考&#xff1a;https://comfyui-wiki.com/zh/install/install-comfyui/install-c…

统一返回JsonResult踩坑

定义了一个统一返回类&#xff0c;但是没有给Data 导致没有get/set方法&#xff0c;请求一直报错 public class JsonResult<T> {private int code;private String message;private T data;public JsonResult() {}public JsonResult(int code, String message, T data) {…