当前位置: 首页 > news >正文

MySQL核心命令详解与实战,一文掌握MySQL使用

文章目录

    • 文章简介
    • 演示库表
    • 创建数据库表
    • 选择数据库
    • 删除数据库
    • 创建表
    • 删除表
    • 向表中插入数据
    • 更新数据
    • 删除数据
    • 查询数据
    • WHERE 操作符
    • 聚合函数
    • LIKE 子句
    • 分组 GROUP BY + HAVING
    • ORDER BY(排序) 语句
    • LIMIT 操作符 分页查询
    • 多表查询-联合查询 UNION 操作符
    • 多表查询-连接的使用-JOIN
    • 语句编写和底层执行顺序

文章简介

本文主要介绍了MySQL核心命令的介绍和使用方法。

演示库表

mmall_learning库表结构。
在这里插入图片描述
部分命令中涉及的其他库表,均为简单说明,可不必在意具体表结构。

创建数据库表

CREATE DATABASE 数据库名;

CREATE DATABASE mmall_learning;

列出 MySQL 数据库管理系统的数据库列表。

SHOW DATABASES;

结果如下:
在这里插入图片描述

选择数据库

USE 数据库名;

USE mmall_learning;

显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
SHOW TABLES:
在这里插入图片描述
显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。

SHOW COLUMNS FROM 数据表;

例如:展示购物车的数据表结构

SHOW COLUMNS FROM mmall_cart;

结果如下:
在这里插入图片描述

删除数据库

1.直接删除数据库,不检查是否存在

DROP DATABASE 数据库;

2.删除数据库,如果存在的话

DROP DATABASE IF EXISTS 数据库;

创建表

CREATE TABLE table_name (column1 datatype,column2 datatype,...
);

示例:

CREATE TABLE `mmall_cart` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_id` int(11) NOT NULL,`product_id` int(11) DEFAULT NULL COMMENT '商品id',`quantity` int(11) DEFAULT NULL COMMENT '数量',`checked` int(11) DEFAULT NULL COMMENT '是否选择,1=已勾选,0=未勾选',`create_time` datetime DEFAULT NULL COMMENT '创建时间',`update_time` datetime DEFAULT NULL COMMENT '更新时间',PRIMARY KEY (`id`),KEY `user_id_index` (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=146 DEFAULT CHARSET=utf8;

解释:
~如果你不想字段为空可以设置字段的属性为 NOT NULL,如上实例中的 id 与 user_id 字段,在操作数据库时如果输入该字段的数据为空,就会报错。
~AUTO_INCREMENT 定义列为自增的属性,一般用于主键,数值会自动加 1。
~PRIMARY KEY 关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号 , 分隔。
~ENGINE 设置存储引擎,CHARSET 设置编码。
~UNIQUE KEY 唯一约束,是指所有记录中字段的值不能重复出现。例如,为 user_id 字段加上唯一性约束后,每条记录的 user_id 值都是唯一的,不能出现重复的情况。

删除表

1.删除表,如果存在的话

DROP TABLE IF EXISTS 数据表;

2.直接删除表,不检查是否存在

DROP TABLE 数据表;

向表中插入数据

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

table_name 是你要插入数据的表的名称。
column1, column2, column3, … 是表中的列名。
value1, value2, value3, … 是要插入的具体数值。

示例:
向以下表mmall_cart中再插入一行数据
在这里插入图片描述

INSERT INTO `mmall_cart` VALUES ('126', '21', '26', '1', '1', '2017-04-13 21:27:06', '2017-04-13 21:27:06');

在这里插入图片描述

更新数据

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

示例:
在这里插入图片描述
将上表中的user_id/product_id均改为20

UPDATE mmall_cart SET user_id = '20', product_id = '20' WHERE id = 126;

结果如下:
在这里插入图片描述

删除数据

DELETE FROM table_name
WHERE condition;

在这里插入图片描述
删除id为127的数据

DELETE FROM mmall_cart WHERE id = 127;

结果为:
在这里插入图片描述

查询数据

SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];

简单示例:

-- 选择所有列的所有行
SELECT * FROM users;-- 选择特定列的所有行
SELECT username, email FROM users;-- 添加 WHERE 子句,选择满足条件的行
SELECT * FROM users WHERE is_active = TRUE;-- 添加 ORDER BY 子句,按照某列的升序排序
SELECT * FROM users ORDER BY birthdate;-- 添加 ORDER BY 子句,按照某列的降序排序
SELECT * FROM users ORDER BY birthdate DESC;-- 添加 LIMIT 子句,限制返回的行数
SELECT * FROM users LIMIT 10;-- 使用 AND 运算符和通配符
SELECT * FROM users WHERE username LIKE 'j%' AND is_active = TRUE;-- 使用 OR 运算符
SELECT * FROM users WHERE is_active = TRUE OR birthdate < '1990-01-01';-- 使用 IN 子句
SELECT * FROM users WHERE birthdate IN ('1990-01-01', '1992-03-15', '1993-05-03');

WHERE 操作符

有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。WHERE 子句用于在 MySQL 中过滤查询结果,只返回满足特定条件的行。
示例:

SELECT * FROM users WHERE username = 'test';

常搭配的逻辑符号有

说明符号
不等于<>, !=
等于=
大于>
小于<
大于等于>=
小于等于<=

聚合函数

语法:

SELECT 聚合函数(字段列表) FROM 表名;

示例表:
在这里插入图片描述
COUNT计数,结果为4

SELECT COUNT(quantity) FROM mmall_cart;

MAX求最大值,结果为9

SELECT MAX(quantity) FROM mmall_cart;

MIN求最小值,结果为1

SELECT MIN(quantity) FROM mmall_cart;

AVG求平均值,结果为4.25

SELECT AVG(quantity) FROM mmall_cart;

SUM求和,结果为17

SELECT SUM(quantity) FROM mmall_cart;

LIKE 子句

LIKE 子句是在 MySQL 中用于在 WHERE 子句中进行模糊匹配的关键字。
示例:

SELECT * FROM customers WHERE last_name LIKE 'S%';

以上 SQL 语句将选择所有姓氏以 ‘S’ 开头的客户。

分组 GROUP BY + HAVING

GROUP BY 语句根据一个或多个列对结果集进行分组。一般配合聚合函数和HAVING使用。
WHERE和HAVING的区别是HAVING可以对分组后的数据进行过滤。

语法:

SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];

示例:
查询年龄小于45的员工,并根据工作地址分组,获取同一地址员工数量大于等于3的工作地址

SELECT workaddress, COUNT(*) FROM emp WHERE age < 45 GROUP BY workaddress HAVING COUNT(*) >= 3;

ORDER BY(排序) 语句

ORDER BY(排序) 语句可以按照一个或多个列的值进行升序(ASC)或降序(DESC)排序。
语法:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;

示例:

SELECT * FROM mmall_cart ORDER BY user_id;

数据就会按给定字段排序,结果如下:
在这里插入图片描述

LIMIT 操作符 分页查询

语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数

在这里插入图片描述
示例:
查询第一页员工数据,每页展示十条记录

SELECT * FROM emp LIMIT 10;

多表查询-联合查询 UNION 操作符

UNION:连接数据集关键字,可以将两个查询结果集拼接为一个,会过滤掉相同的记录
UNION ALL:连接数据集关键字,可以将两个查询结果集拼接为一个,不会过滤掉相同的记录
注意:对于联合查询的多张表列数必须保持一致,字段类型也需要保持一致。
作用简单描述就是:表A有a/b两列20条数据,表B有a/b两列30条数据,通过UNION ALL以后可以得到a/b两列50条数据。使用UNION后,会获得不重复的a/b两列数据

语法:

SELECT 字段列表 FROM 表A ...
UNION [ALL]
SELECT 字段列表 FROM 表B ...;

示例,查询 product_id>15,quantity<5的数据
在这里插入图片描述

SELECT * FROM mmall_cart WHERE product_id > 18
UNION
SELECT * FROM mmall_cart WHERE quantity > 6;

查询结果为
在这里插入图片描述
说明,第一条SELECT可以查询出后两条数据,第二条SELECT语句可以查询出第二条数据,拼一起后即为原表后三条数据。

多表查询-连接的使用-JOIN

JOIN用于联合多表查询,其中:
INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。


在这里插入图片描述


以下 以员工表emp,部门表dept为例来简单说明。每个部门有对应的多个员工,属于1对N。

内连接

语法:

SELECT column1, column2, ...
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;

内连接分为隐式和显示连接。对于显示内连接,inner可以省略。


在这里插入图片描述


左连接和右连接
语法:

SELECT column1, column2, ...
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;
SELECT column1, column2, ...
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;

在这里插入图片描述


自连接
自连接是表与自身表相连接


在这里插入图片描述


语句编写和底层执行顺序

语句编写顺序
在这里插入图片描述
示例:

SELECT DISTINCT column1, column2
FROM table1
JOIN table2 ON table1.id = table2.foreign_id
WHERE column1 > 100
GROUP BY column1
HAVING COUNT(*) > 1
ORDER BY column1 DESC
LIMIT 10;

MySQL语句底层的执行顺序如下:

1. FROM子句:选择数据来源的表或视图。
2. ON子句:连接条件(如果有的话,例如在JOIN操作中)。
3. JOIN子句:如果有的话,执行连接操作。
4. WHERE子句:过滤条件,只返回符合条件的记录。
5. GROUP BY子句:分组统计的字段。
6. HAVING子句:分组后的过滤条件。
7. SELECT子句:选取特定的列。
8. DISTINCT子句:去除重复数据。
9. ORDER BY子句:结果集的排序顺序。
10. LIMIT子句:限制结果集的数量。

相关文章:

MySQL核心命令详解与实战,一文掌握MySQL使用

文章目录 文章简介演示库表创建数据库表选择数据库删除数据库创建表删除表向表中插入数据更新数据删除数据查询数据WHERE 操作符聚合函数LIKE 子句分组 GROUP BY HAVINGORDER BY(排序) 语句LIMIT 操作符 分页查询多表查询-联合查询 UNION 操作符多表查询-连接的使用-JOIN语句编…...

基于Springboot + MySQL + Vue 大学新生宿舍管理系统 (含源码)

目录 &#x1f4da; 前言 &#x1f4d1;摘要 &#x1f4d1;操作流程 &#x1f4da; 系统架构设计 &#x1f4da; 数据库设计 &#x1f4ac; 管理员信息属性 &#x1f4ac; 学生信息实体属性 &#x1f4ac; 宿舍安排信息实体属性 &#x1f4ac; 卫生检查信息实体属性 &…...

vulnhub pWnOS v2.0通关

知识点总结&#xff1a; 1.通过模块来寻找漏洞 2.msf查找漏洞 3.通过网站源代码&#xff0c;查看模块信息 环境准备 攻击机&#xff1a;kali2023 靶机&#xff1a;pWnOS v2.0 安装地址&#xff1a;pWnOS: 2.0 (Pre-Release) ~ VulnHub 在安装网址中看到&#xff0c;该靶…...

leetcode热题100.数据流的中位数

作者&#xff1a;晓宜 &#x1f308;&#x1f308;&#x1f308; 个人简介&#xff1a;互联网大厂Java准入职&#xff0c;阿里云专家博主&#xff0c;csdn后端优质创作者&#xff0c;算法爱好者 ❤️❤️❤️ 你的关注是我前进的动力&#x1f60a; Problem: 295. 数据流的中位数…...

C 从函数返回指针

我们已经了解了 C 语言中如何从函数返回数组&#xff0c;类似地&#xff0c;C 允许您从函数返回指针。为了做到这点&#xff0c;您必须声明一个返回指针的函数&#xff0c;如下所示&#xff1a; int * myFunction() { . . . }另外&#xff0c;C 语言不支持在调用函数时返回局部…...

(文章复现)考虑分布式电源不确定性的配电网鲁棒动态重构

参考文献&#xff1a; [1]徐俊俊,吴在军,周力,等.考虑分布式电源不确定性的配电网鲁棒动态重构[J].中国电机工程学报,2018,38(16):4715-47254976. 1.摘要 间歇性分布式电源并网使得配电网网络重构过程需要考虑更多的不确定因素。在利用仿射数对分布式电源出力的不确定性进行合…...

蓝桥杯第八届c++大学B组详解

目录 1.购物单 2.等差素数列 3.承压计算 4.方格分割 5.日期问题 6.包子凑数 7.全球变暖 8.k倍区间 1.购物单 题目解析&#xff1a;就是将折扣字符串转化为数字&#xff0c;进行相加求和。 #include<iostream> #include<string> #include<cmath> usin…...

小于n的最大数 Leetcode 902 Numbers At Most N Given Digit Set

这两个问题的本质就是一个棵树&#xff0c;然后根据n对树做剪枝。难点在于剪的时候边界条件有些坑&#xff0c;get_lower_largest_digit_dic是这两个题目的共同点 题目一&#xff1a; 小于n的最大数 算法题目&#xff1a;小于n的最大数 问题描述&#xff1a;给一个数组nums[5…...

Leetcode刷题-数组(二分法、双指针法、窗口滑动)

数组 1、二分法 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 需要注意区间的问题。首先在最外面的循环判断条件是left<right。那就说明我们区间规定的范围就是【left,right】 属于是左闭右闭&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&…...

STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (b)

继续上篇博文&#xff1a;STM32学习和实践笔记&#xff08;4&#xff09;: 分析和理解GPIO_InitTypeDef GPIO_InitStructure (a)-CSDN博客 往下写&#xff0c; 为什么&#xff1a;当GPIO_InitStructure.GPIO_PinGPIO_Pin_0 ; 时&#xff0c;其实就是将对应的该引脚的寄存器地…...

数据仓库——事实表

数据仓库基础笔记思维导图已经整理完毕&#xff0c;完整连接为&#xff1a; 数据仓库基础知识笔记思维导图 事实表 事务事实表 事务事实表用于跟踪事件&#xff0c;通过存储事实和与之关联的维度细节&#xff0c;允许单独或聚集地研究行为。粒度稀疏性包含可加事实 无事实的…...

人工智能常用的编程语言有哪些?

人工智能常用的编程语言包括Python、Java、C、R、Lisp和Prolog等。具体选择取决于项目需求、技术背景和性能要求。 Python是AI领域的明星语言&#xff0c;由于其简洁易懂的语法、丰富的库支持以及庞大的社区资源&#xff0c;适用于机器学习、深度学习和自然语言处理等领域。 …...

【Leetcode每日一题】模拟 - 提莫攻击(难度⭐)(45)

1. 题目解析 题目链接&#xff1a;495. 提莫攻击 2.算法原理 一、分情况讨论 要计算中毒的总时长&#xff0c;我们需要考虑时间点之间的差值&#xff0c;并根据这些差值来确定中毒的实际持续时间。 情况一&#xff1a;差值大于等于中毒时间 假设你的角色在时间点A中毒&#…...

OPPO云VPC网络实践

1 OPPO 云网络现状 随着OPPO业务的快速发展&#xff0c;OPPO云规模增长迅速。大规模虚拟实例的弹性伸缩、低延时需求对网络提出了诸多挑战。原有基于VLAN搭建的私有网络无法解决这些问题&#xff0c;给网络运维和业务的快速上线带来了挑战。 梳理存在的主要问题如下&#xf…...

力扣(数组)找到所有数组中消失的数字

给你一个含 n 个整数的数组 nums &#xff0c;其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字&#xff0c;并以数组的形式返回结果。 示例 1&#xff1a; 输入&#xff1a;nums [4,3,2,7,8,2,3,1] 输出&#xff1a;[5,6]示例 2&am…...

每日面经分享(Spring Boot: part3 Service层)

SpringBoot Service层的作用 a. 封装业务逻辑&#xff1a;Service层负责封装应用程序的业务逻辑。Service层是控制器&#xff08;Controller&#xff09;和数据访问对象&#xff08;DAO&#xff09;之间的中间层&#xff0c;负责处理业务规则和业务流程。通过将业务逻辑封装在S…...

k8s的pod访问service的方式

背景 在k8s中容器访问某个service服务时有两种方式&#xff0c;一种是把每个要访问的service的ip注入到客户端pod的环境变量中&#xff0c;另一种是客户端pod先通过DNS服务器查找对应service的ip地址&#xff0c;然后在通过这个service ip地址访问对应的service服务 pod客户端…...

shell脚本发布docker-nginx vue2 项目示例

docker、git、node.js安装略过。 使git pull或者git push不需要输入密码操作方法 nginx安装在docker容器里面&#xff0c;参见&#xff1a;https://blog.csdn.net/HSJ0170/article/details/128631155 姊妹篇&#xff08;宿主机nginx&#xff0c;非docker-nginx&#xff09;&am…...

【THM】Nmap Basic Port Scans(基本端口扫描)-初级渗透测试

介绍 本房间是Nmap系列的第二个房间(网络安全简介模块的一部分)。 1.Nmap实时主机发现 2.Nmap基本端口扫描 3.Nmap高级端口扫描 4.Nmap后端口扫描 在之前的房间里,我们专注于发现在线系统。到目前为止,我们已经介绍了Nmap扫描的三个步骤: 枚举目标发现活动主机反向-…...

Groovy结合Java在生产中的落地实战

Groovy简介 Groovy是用于Java虚拟机的一种敏捷的动态语言&#xff0c;是一种成熟的面向对象编程语言&#xff0c;又是一种纯粹的脚本语言。Groovy运行在JVM环境上&#xff0c;在语法上兼具java 语言和脚本语言特点&#xff0c;大大简化了语法。同时又具有闭包和动态语言中的其…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具&#xff0c;专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑&#xff08;如DBC、LDF、ARXML、HEX等&#xff09;&#xff0c;并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...