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子句:限制结果集的数量。

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

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

相关文章

本地GPU调用失败问题解决3重新配置anaconda环境(成功)

1、右键“以管理员身份”打开anaconda prompt conda create -n python 3.9 2、使用官方下载源的配置 3、修改conda下载超时 conda config --set remote_connect_timeout_secs 60 conda config --set remote_read_timeout_secs 100 查看配置结果conda config --show 配置内…

122、内网安全——域信息收集应用网络凭据CS插件AdfindBloodHound

文章目录 理解域域信息搜集 理解域 假设有1000台计算机&#xff0c;运维人员需要为每一台计算机进行软件的安装、环境部署&#xff0c;实际上运维人员不可能亲自对每一台计算机进行软件的安装和环境部署。实际&#xff0c;将所有1000台计算机放入一个域中&#xff0c;域内有一…

多传感器标定——相机内参标定

文章目录 一、前言二、内参标定流程三、如何提升标定精度四、精度验证五、内外参联合标定 一、前言 之前写过一篇文章&#xff08;相机内参、外参、畸变系数简介&#xff09;&#xff0c;感觉应该把这几个东西说的还算明白&#xff0c;但是里边并没有深究该如何进行标定&#…

牛客NC153 信封嵌套问题【中等 动态规划,最长递增子序列 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/9bf77b5b018d4d24951c9a7edb40408f 相同的题目&#xff1a; https://www.lintcode.com/problem/602 思路 本质是求最长子序列问题envelopes 先按 w 升序排序&#xff0c;再按 h 降序 排序&#xff0c;只需考虑h…

一条SQL在MySQL中的执行过程

图解&#xff1a; 第⼀步&#xff1a;连接器 过程 1. 建⽴连接&#xff1a;与客户端进⾏ TCP 三次握⼿建⽴连接&#xff1b; 2. 校验密码&#xff1a;校验客户端的⽤户名和密码&#xff0c;如果⽤户名或密码不对&#xff0c;则会报错&#xff1b;3. 权限判断&#xff1a…

手机无线投屏到windows11电脑

1 安装无线投影组件 2 电脑端打开允许其他设备投影的开关 3 手机找到投屏选项 4 手机搜索可用设备连接即可 这里的官方文档给的不太好,给了一些让人眼花撩乱的信息,以下是经过整合的有效信息

金融衍生品市场

金融衍生品市场 衍生金融品的作用衍生金融工具远期合约期货合约期权 衍生金融品的作用 套期保值&#xff08;Hedging&#xff09; 组合多头头寸(long position)与空头头寸(short position)例&#xff1a;股票与股指期货 投机 衍生金融工具 远期合约 定义&#xff1a;在将来…

翻译: 硅谷软件工程师面试:准备所需的一切

没有人有时间去做成百上千道LeetCode题目&#xff0c;好消息是你实际上并不需要做那么多题目就能够在FAANG公司找到工作&#xff01; 我曾经在Grab工作&#xff0c;这是东南亚的一家共享出行公司&#xff0c;但我对工作感到沮丧&#xff0c;想要进入FAANG公司&#xff0c;但我…

【opencv】教程代码 —features2D(5)旋转相机的基本全景拼接

基本全景拼接 panorama_stitching_rotating_camera.cpp 将第二张图像进行透视变换后与第一张图像拼接 #include <iostream> // 包含了一些用于输入输出的函数 #include <opencv2/core.hpp> // 包含了OpenCV核心库的一些常用类和函数 #include <opencv2/imgpro…

Android视角看鸿蒙第十课-鸿蒙的布局之线性布局

Android视角看鸿蒙第十课-鸿蒙的布局之线性布局 导读 这篇文章开始&#xff0c;依次学习鸿蒙的八大布局&#xff0c;这是第一篇&#xff0c;所以顺带也会聊聊通用属性。 文档地址 文档地址 如何定义一个线性布局 Android中是使用LinearLayout来构建线性布局的&#xff0c…

ChatGPT chrome扩展下载与安装

官方下载地址 https://chromewebstore.google.com/detail/lpbhmlbicmgjpacbofijdfpcplfhakeo 截图 安装 离线安装 下载地址 https://static.xutongbao.top/app/chatgpt-chrome-crx-v0.0.7.zip 打开链接 chrome://extensions/ 人工智能学习网站 https://chat.xutongbao.to…

谷粒商城——RabbitMQ

0. 消息中间件 1.RabbitMQ的核心概念 2. 工作流程 整体架构&#xff1a; 相关细节&#xff1a; 上述要注意的是&#xff1a; 路由键包含在message的头中&#xff0c;其作用是用于指定该消息存储与哪个消息队列中。 信道是客户端&#xff08;包括生产者和消费者&#xff09;用…

Vue 组件化编程

Vue 组件化编程 非单文件组件 定义组件 使用Vue.extend(options&#xff09;创建 不要写eldata要写成函数&#xff0c;避免组件被复用时&#xff0c;数据存在引用关系 注册组件 局部注册&#xff1a;new Vue()的时候&#xff0c;options传入components全局注册&#xff1a;V…

回收站删除以后还能撤销吗 回收站删除以后怎么找回 回收站清空了怎么恢复 easyrecovery数据恢复软件

回收站删除以后能撤销吗&#xff1f;有不少网友前一秒清空回收站&#xff0c;后一秒就开始在网上疯狂搜寻如何撤销删除回收站的办法。实际上&#xff0c;清空回收站并不可怕&#xff0c;被删除的数据仍然保存在我们的电脑硬盘中。今天我为大家介绍回收站删除以后怎么找回数据的…

HTTP 常见面试题(计算机网络)

HTTP 基本概念 一、HTTP 是什么&#xff1f; HTTP(HyperText Transfer Protocol) &#xff1a;超文本传输协议。 HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。 「HTTP 是用于从互联网服务器传输超文本到本…

苍穹外卖04 (新增内表的外键id获取,多表分页查询,多表批量删除,修改先查在改内表外键id用主表的,起售时包含了“停售”状态的外关联表)

1. 新增套餐 1 需求分析和设计 业务规则&#xff1a; 套餐名称唯一 套餐必须属于某个分类 套餐必须包含菜品 名称、分类、价格、图片为必填项 添加菜品窗口需要根据分类类型来展示菜品 新增的套餐默认为停售状态 2 代码实现 1 根据分类id查询菜品 DishControllerGetMa…

【C语言环境】Sublime中运行C语言时MinGW环境的安装

要知道&#xff0c;GCC 官网提供的 GCC 编译器是无法直接安装到 Windows 平台上的&#xff0c;如果我们想在 Windows 平台使用 GCC 编译器&#xff0c;可以安装 GCC 的移植版本。 目前适用于 Windows 平台、受欢迎的 GCC 移植版主要有 2 种&#xff0c;分别为 MinGW 和 Cygwin…

数据分析之POWER BI Desktop可视化应用案列

在power bi中导入数据 导入前期建好的模型 简单介绍&#xff08;power bi desktop&#xff09; 将右边字段全部展开 各类数据 所作的模型 在excel中是单向的&#xff0c;power bi 中可以是双向的 右键单击----点击属性 选择两个---在两个方向上应用安全筛选器 变为双向的…

每日面经分享(pytest入门)

1. pytest具有什么功能 a. 自动发现和执行测试用例&#xff1a;pytest可以自动发现项目中的测试文件和测试函数&#xff0c;无需手动编写测试套件或测试运行器。 b. 丰富的断言函数&#xff1a;pytest提供了丰富的断言函数&#xff0c;方便地验证测试结果是否符合预期。断言函…

flask的使用学习笔记1

跟着b站学的1-06 用户编辑示例_哔哩哔哩_bilibili flask是一个轻量级&#xff0c;短小精悍&#xff0c;django大而全 创建&#xff1a; manage.py和一个和项目名称相同的目录&#xff08;static&#xff08;前端生成的dist&#xff09;、templates&#xff08;html文件&…