精品,架構師總結,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.pswp.cn/diannao/82211.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82211.shtml
英文地址,請注明出處:http://en.pswp.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) {…