MySQL(九):MySQL语法-高级

news2024/10/7 6:37:34

MySQL语法-高级

    • `LIMIT`
    • `LIKE`
    • `AS`
    • `CREATE UNIQUE INDEX`、`DROP INDEX`
    • `CREATE VIEW`、`DROP VIEW`
    • `GROUP BY`
    • `HAVING`
    • `MYSQL` - `JOIN`
      • `INNER JOIN`、`JOIN`
      • `LEFT JOIN`、`LEFT OUTER JOIN`
      • `RIGHT JOIN`、`RIGHT OUTER JOIN`
      • `LEFT JOIN ... WHERE ...`
      • `RIIGHT JOIN ... WHERE ...`
    • `TRUNCATE TABLE`
    • `INSERT INTO 表1 (列1, 列2) SELECT (列1, 列2) FROM 表2`
    • `UNION`、`UNION ALL`
    • 日期相关函数
      • `NOW()`、`CURDATE()`、`CURTIME()`、`DATE()`、`DATE_FORMAT()`、`DATEDIFF()`
      • `EXTRACT()`、`DATE_ADD()`、`DATE_SUB()`

LIMIT

用于指定要返回的记录数量

示例:

select *
from employees limit 3;
+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date  |
+--------+------------+------------+-----------+--------+------------+
|  10001 | 1953-09-02 | Georgi     | Facello   | M      | 1986-06-26 |
|  10002 | 1964-06-02 | Bezalel    | Simmel    | F      | 1985-11-21 |
|  10003 | 1959-12-03 | Parto      | Bamford   | M      | 1986-08-28 |
+--------+------------+------------+-----------+--------+------------+
3 rows in set (0.00 sec)

LIKE

使用LIKE运算符来搜索列中的指定模式

  • (百分号表示零个,一个或多个字符)
  • _(下划线表示单个字符)

示例:

select *
from employees
where last_name like '%ce_l_'
  AND first_name like 'G_o%g_';
+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date  |
+--------+------------+------------+-----------+--------+------------+
|  10001 | 1953-09-02 | Georgi     | Facello   | M      | 1986-06-26 |
|  55649 | 1956-01-23 | Georgi     | Facello   | M      | 1988-05-04 |
+--------+------------+------------+-----------+--------+------------+
2 rows in set (0.10 sec)

AS

别名

示例:

select emp.first_name as name
from employees as emp limit 3;
+---------+
| name    |
+---------+
| Georgi  |
| Bezalel |
| Parto   |
+---------+
3 rows in set (0.01 sec)

CREATE UNIQUE INDEXDROP INDEX

创建唯一索引

示例:

-- 设置id为唯一索引,名称为id_name
create unique index id_name on order_table (id);

-- 删除唯一索引
drop index id_name on order_table;

CREATE VIEWDROP VIEW

创建新视图

视图(View)是一种虚拟存在的表,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变

示例:

-- 创建视图
create view order_view as
select date_01
from order_table
where id = 3;
-- 删除视图
drop view order_view;
-- 查询视图数据
select *
from order_view;
+------------+
| date_01    |
+------------+
| 2023-07-03 |
+------------+
1 row in set (0.00 sec)

GROUP BY

通过…分组

示例:

-- 通过员工编号分组查询员工编号、薪资数、薪资和、薪资平均值、薪资最大值、薪资最小值
select emp_no, count(salary), sum(salary), avg(salary), max(salary), min(salary)
from salaries
group by emp_no;
+--------+---------------+-------------+-------------+-------------+-------------+
| emp_no | count(salary) | sum(salary) | avg(salary) | max(salary) | min(salary) |
+--------+---------------+-------------+-------------+-------------+-------------+
|  10001 |            17 |     1281612 |  75388.9412 |       88958 |       60117 |
|  10002 |             6 |      413127 |  68854.5000 |       72527 |       65828 |
|  10003 |             7 |      301212 |  43030.2857 |       43699 |       40006 |
|  10004 |            16 |      904196 |  56512.2500 |       74057 |       40054 |
|  10005 |            13 |     1134585 |  87275.7692 |       94692 |       78228 |
+--------+---------------+-------------+-------------+-------------+-------------+
5 rows in set (0.00 sec)

HAVING

筛选分组后的各组数据

示例:

-- 按员工编号分组查询薪资总和大于2300000的数据
select emp_no, sum(salary)
from salaries
group by emp_no
having sum(salary) > 2300000;
+--------+-------------+
| emp_no | sum(salary) |
+--------+-------------+
|  43624 |     2492873 |
|  47978 |     2374024 |
|  66793 |     2383923 |
|  68086 |     2305351 |
|  80823 |     2368170 |
| 109334 |     2553036 |
| 237542 |     2381119 |
+--------+-------------+
7 rows in set (0.77 sec)

MYSQL - JOIN

在这里插入图片描述

示例表(table_01table_02):

select *
from table_01;
select *
from table_02;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
+----+
6 rows in set (0.00 sec)

+----+
| id |
+----+
|  4 |
|  5 |
|  6 |
|  7 |
|  8 |
|  9 |
|  0 |
+----+
7 rows in set (0.00 sec)

INNER JOINJOIN

可以简写为JOIN

示例:

select *
from table_01
         join table_02 on table_01.id = table_02.id;
select *
from table_01
         inner join table_02 on table_01.id = table_02.id;
+----+----+
| id | id |
+----+----+
|  4 |  4 |
|  5 |  5 |
|  6 |  6 |
+----+----+
3 rows in set (0.00 sec)

示例:

-- 查询管理员所在部门和姓名等信息
select employees.emp_no,
       employees.first_name,
       employees.last_name,
       employees.gender,
       departments.dept_no,
       departments.dept_name
from dept_manager
         join departments on dept_manager.dept_no = departments.dept_no
         join employees on employees.emp_no = dept_manager.emp_no;
+--------+-------------+--------------+--------+---------+-----------+
| emp_no | first_name  | last_name    | gender | dept_no | dept_name |
+--------+-------------+--------------+--------+---------+-----------+
| 111692 | Tonny       | Butterworth  | F      | d009    | ????      |
| 111784 | Marjo       | Giarratana   | F      | d009    | ????      |
| 111877 | Xiaobin     | Spinelli     | F      | d009    | ????      |
| 111939 | Yuchang     | Weedman      | M      | d009    | ????      |
| 110511 | DeForest    | Hagimont     | M      | d005    | ????      |
| 110567 | Leon        | DasSarma     | F      | d005    | ????      |
| 110183 | Shirish     | Ossenbruggen | F      | d003    | ??        |
| 110228 | Karsten     | Sigstam      | F      | d003    | ??        |
| 110303 | Krassimir   | Wegerle      | F      | d004    | ??        |
| 110344 | Rosine      | Cools        | F      | d004    | ??        |
| 110386 | Shem        | Kieras       | M      | d004    | ??        |
| 110420 | Oscar       | Ghazalie     | M      | d004    | ??        |
| 111035 | Przemyslawa | Kaelbling    | M      | d007    | ??        |
| 111133 | Hauke       | Zhang        | M      | d007    | ??        |
| 110725 | Peternela   | Onuegbe      | F      | d006    | ??        |
| 110765 | Rutger      | Hofmeyr      | F      | d006    | ??        |
| 110800 | Sanjoy      | Quadeer      | F      | d006    | ??        |
| 110854 | Dung        | Pesch        | M      | d006    | ??        |
| 110085 | Ebru        | Alpin        | M      | d002    | ??        |
| 110114 | Isamu       | Legleitner   | F      | d002    | ??        |
| 111400 | Arie        | Staelin      | M      | d008    | ????      |
| 111534 | Hilary      | Kambil       | F      | d008    | ????      |
| 110022 | Margareta   | Markovitch   | M      | d001    | ??        |
| 110039 | Vishwani    | Minakawa     | M      | d001    | ??        |
+--------+-------------+--------------+--------+---------+-----------+
24 rows in set (0.00 sec)

LEFT JOINLEFT OUTER JOIN

示例:

select *
from table_01
         left join table_02 on table_01.id = table_02.id;
+----+------+
| id | id   |
+----+------+
|  1 | NULL |
|  2 | NULL |
|  3 | NULL |
|  4 |    4 |
|  5 |    5 |
|  6 |    6 |
+----+------+
6 rows in set (0.00 sec)

RIGHT JOINRIGHT OUTER JOIN

示例:

select *
from table_01
         right join table_02 on table_01.id = table_02.id;
+------+----+
| id   | id |
+------+----+
|    4 |  4 |
|    5 |  5 |
|    6 |  6 |
| NULL |  7 |
| NULL |  8 |
| NULL |  9 |
| NULL |  0 |
+------+----+
7 rows in set (0.00 sec)

LEFT JOIN ... WHERE ...

示例:

select *
from table_01
         left join table_02 on table_01.id = table_02.id
where table_02.id is null;
+----+------+
| id | id   |
+----+------+
|  1 | NULL |
|  2 | NULL |
|  3 | NULL |
+----+------+
3 rows in set (0.00 sec)

RIIGHT JOIN ... WHERE ...

示例:

select *
from table_01
         right join table_02 on table_01.id = table_02.id
where table_01.id is null;
+------+----+
| id   | id |
+------+----+
| NULL |  7 |
| NULL |  8 |
| NULL |  9 |
| NULL |  0 |
+------+----+
4 rows in set (0.00 sec)

TRUNCATE TABLE

删除表中的所有数据

示例:

truncate table table_name;

INSERT INTO 表1 (列1, 列2) SELECT (列1, 列2) FROM 表2

把表2数据复制到表1中

示例:

insert into table_02 (id) (select * from table_01);
+----+
| id |
+----+
|  4 |
|  5 |
|  6 |
|  7 |
|  8 |
|  9 |
|  0 |
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
+----+
13 rows in set (0.00 sec)

UNIONUNION ALL

组合两个或更多SELECT语句的结果集

UNION 不返回任何重复的行

UNION ALL 返回重复的行

要求:

  • UNION中的每个SELECT语句必须具有相同的列数
  • 这些列也必须具有相似的数据类型
  • 每个SELECT语句中的列也必须以相同的顺序排列
  • 每个SELECT语句必须有相同数目的列表达式
  • 但是每个SELECT语句的长度不必相同

示例(UNION):

select dept_no
from dept_manager
union
select dept_no
from departments;
+---------+
| dept_no |
+---------+
| d001    |
| d002    |
| d003    |
| d004    |
| d005    |
| d006    |
| d007    |
| d008    |
| d009    |
+---------+
9 rows in set (0.00 sec)

示例(UNION ALL):

select dept_no
from dept_manager
union all
select dept_no
from departments;
+---------+
| dept_no |
+---------+
| d001    |
| d001    |
| d002    |
| d002    |
| d003    |
| d003    |
| d004    |
| d004    |
| d004    |
| d004    |
| d005    |
| d005    |
| d006    |
| d006    |
| d006    |
| d006    |
| d007    |
| d007    |
| d008    |
| d008    |
| d009    |
| d009    |
| d009    |
| d009    |
| d009    |
| d005    |
| d003    |
| d004    |
| d007    |
| d006    |
| d002    |
| d008    |
| d001    |
+---------+
33 rows in set (0.00 sec)

日期相关函数

NOW()CURDATE()CURTIME()DATE()DATE_FORMAT()DATEDIFF()

示例:

-- NOW()	                                    返回当前的日期和时间
-- CURDATE()	                                返回当前的日期
-- CURTIME()	                                返回当前的时间
-- DATE('2023-07-12 08:00:09')                  提取日期或日期/时间表达式的日期部分
-- DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')       用不同的格式显示日期/时间
-- DATEDIFF('2023-07-12 08:00:09','2008-11-29') 返回两个日期之间的天数
select NOW(),
       CURDATE(),
       CURTIME(), DATE ('2023-07-12 08:00:09'), DATE_FORMAT(NOW(), '%b %d %Y %h:%i %p'), DATEDIFF('2023-07-12 08:00:09', '2008-11-29');
+---------------------+------------+-----------+-----------------------------+-----------------------------------------+-----------------------------------------------+
| NOW()               | CURDATE()  | CURTIME() | DATE('2023-07-12 08:00:09') | DATE_FORMAT(NOW(), '%b %d %Y %h:%i %p') | DATEDIFF('2023-07-12 08:00:09', '2008-11-29') |
+---------------------+------------+-----------+-----------------------------+-----------------------------------------+-----------------------------------------------+
| 2023-07-12 08:06:49 | 2023-07-12 | 08:06:49  | 2023-07-12                  | Jul 12 2023 08:06 AM                    |                                          5338 |
+---------------------+------------+-----------+-----------------------------+-----------------------------------------+-----------------------------------------------+
1 row in set (0.00 sec)

EXTRACT()DATE_ADD()DATE_SUB()

示例:

-- EXTRACT()    返回日期/时间的单独部分
-- DATE_ADD()	向日期添加指定的时间间隔
-- DATE_SUB()	从日期减去指定的时间间隔
select EXTRACT(YEAR from NOW()), DATE_ADD(NOW(), interval 5 day), DATE_SUB(NOW(), interval 15 day);
+--------------------------+---------------------------------+----------------------------------+
| EXTRACT(YEAR from NOW()) | DATE_ADD(NOW(), interval 5 day) | DATE_SUB(NOW(), interval 15 day) |
+--------------------------+---------------------------------+----------------------------------+
|                     2023 | 2023-07-17 08:11:06             | 2023-06-27 08:11:06              |
+--------------------------+---------------------------------+----------------------------------+
1 row in set (0.00 sec)

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

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

相关文章

信创电子档案管理单机版系统之档案利用的功能介绍

专久智能信创电子档案管理单机版系统的档案利用,包括对电子档案的网上利用和对档案实体的借阅两种方式,用户对档案的利用都是通过 WEB 方式的档案网站实现的。 用户可以根据系统赋予的权限对电子档案目录进行检索查询,找到所需的档案目录&…

图像分类——图像增强方法

目录 常用的图像增强方法tf.image进行图像增强翻转和裁剪颜色变换 使用ImageDataGenerator(进行图像增强) 常用的图像增强方法 tf.image进行图像增强 离线实现 import tensorflow as tf import matplotlib.pyplot as plt import numpy as npcatplt.imread(./cat.jpg) plt.ims…

【后端面经-架构】RabbitMQ简介

【后端面经-架构】RabbitMQ简介 1. MQ介绍2. RabbitMQ2.1 简介2.2 架构:组件解释2.3 特点2.4 优缺点 面试模拟参考资料 1. MQ介绍 MQ(Message Queue)用于在应用程序之间相互通信,在消息中发送数据进行通信,而不需要特…

数据结构(王卓版)——算法分析

一个好算法如何衡量: 分析算法时间复杂度的方法: 复杂算法的计算规则: 空间复杂度

【深度学习】基于BRET的高级主题检测

一、说明 使用BERT,UMAP和HDBSCAN捕获文档主题,紧随最先进的BERTopic架构(transformer编码器)。 主题检测是一项 NLP 任务,旨在从文本文档语料库中提取全局“主题”。例如,如果正在查看书籍描述的数据集&am…

fatal: unable to access ‘http://xxxx‘: Empty reply from server

当你遇到 “fatal: unable to access ‘http://xxxx’: Empty reply from server” 的错误信息时,通常表示 Git 客户端无法连接到指定的服务器或仓库。 以下是一些可能导致该错误的原因以及一些排除故障的步骤: 错误的 URL:确保你提供的 URL…

linux 服务器之间传输文件的方式

情景:有时迁移项目,一般人就想到需要在服务器下载到win本地电脑上面,再上传到目的服务器,这样若是文件大,下载的速度都足够让你歇一天了。遇到这问题,怎么解决呢? 方法1:scp 【优点…

数据结构---手撕图解双向循环链表

文章目录 写在前面双向循环链表的构造布局带有哨兵位的布局 链表的构建链表的销毁链表的输出链表的尾插链表的尾删链表的头插链表的头删链表的查找链表的插入链表的删除 写在前面 在前面学完单链表后,我们思考这样一个问题,单链表和顺序表比起来&#x…

RK3588平台开发系列讲解(Camera篇)V4L2 视频采集步骤

文章目录 一、V4L2 视频采集步骤1.1、查询设备能力1.2、设置采集参数1.3、请求帧缓冲1.4、映射帧缓冲1.5、启动视频采集1.6、停止视频采集沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解V4L2 视频采集步骤。 一、V4L2 视频采集步骤 V4L2 视频采集的常用…

28. 在O(1)时间删除链表结点

链接: 链接 题目: 给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。 假设链表一定存在,并且该节点一定不是尾节点。 数据范围 链表长度 [1,500][1,500]。 样例 输入:链表 1->4->6->8删掉节点&…

指针和数组笔试题解析(最详细解析,没有之一)

指针和数组笔试题解析(最详细解析,没有之一) 前言1. 一维数组和指针相关笔试题2. 字符数组和指针相关笔试题2.1 题型一:2.2 题型二:2.3 题型三:2.4 题型四: 3. 指针和字符串相关面试题3.1 题型一…

华为云CodeArts Check代码检查插件3大版本使用指南

华为云CodeArts Check是自主研发的代码检查服务。为用户提供代码风格、通用质量与网络安全风险等丰富的检查能力,提供全面质量报告、便捷的问题闭环处理帮助企业有效管控代码质量,助力企业成功。 本插件致力于守护开发人员代码质量,成为开发…

【低代码专题方案】使用iPaaS平台下发数据,快捷集成MDM类型系统

01 场景背景 伴随着企业信息化建设日趋完善化、体系化,使用的应用系统越来越多,业务发展中沉淀了大量数据。主数据作为数据治理中枢,保存大量标准数据库,如何把庞大的数据下发到各个业务系统成了很棘手的问题。 传统的数据下发方…

英国大学生用AI写论文拿到1等成绩!ChatGPT写论文教程+提示词分享

今年期末季与往年的一大不同就是有了“哆啦C梦”——ChatGPT。过于高效智能的它,上线初期就引起了学术界关于“学术不端”的热烈讨论… 目录 01.用AI写论文获1等成绩 02.如何用ChatGPT辅助学习/写作 01.迅速get知识点 02.辅助理解内容 03.辅助起草论文大纲 0…

3Ds max入门教程:创建埃菲尔铁塔

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 创建任何细节并不总是必要的,有时在场景中您需要在后台添加一些元素,这给人的印象是事件正在特定地点发生。这种方法可以节省大量的时间和精力。因此,在本教程中&#xf…

SpringBoot整合ZooKeeper完整教程

目录 ZooKeeper简单介绍 一、安装zookeeper 二、springboot整合zookeeper ZooKeeper简单介绍 zookeeper是为分布式应用程序提供的高性能协调服务。zookeeper将命名、配置管理、同步和组服务等常用服务公开在一个简单的接口中,因此用户无需从头开始编写这些服务。可…

【SpringBoot3】--03.数据访问、基础特性(外部化和内部外配置、整合JUnit)

文章目录 SpringBoot3-数据访问1.整合SSM场景1.1创建SSM整合项目1.2配置数据源1.3配置MyBatis1.4CRUD编写 2.自动配置原理3.扩展:整合其他数据源3.1 Druid 数据源 SpringBoot3-基础特性1. SpringApplication1.1 自定义 banner1.2.自定义 SpringApplication1.3Fluent…

【ELK企业级日志分析系统】部署Filebeat+ELK详解

部署FilebeatELK详解 1. 部署Filebeat节点1.1 部署Apache服务1.2 部署Filebeat服务 2. filter插件2.1 grok正则捕获插件2.1.1 内置正则表达式调用2.1.2 自定义表达式调用2.1.3 设置正则表达式过滤条件 2.2 mutate数据修改插件2.2.1 Mutate过滤器常用的配置选项2.2.2 Mutate过滤…

ROS2学习(一 、ROS2安装)

ROS2官方安装 https://docs.ros.org/en/galactic/Installation/Ubuntu-Install-Debians.html 本来想找一下和ros1一样的安装指导文档,可以根据自己的系统选择。不过没有找到一个直接的说明教程。 不过在ROS2的各个版本安装说明里面有写支持哪些版本的系统。 比如我…

AWS 中文入门开发教学 45- Cloud9 - Node.js的开发与调试

知识点 在 Cloud9 环境中开发调试 Node.js 应用程序实战演习 $ mkdir expressweb $ cd expressweb $ npm init -y $ npm install express --save $ nano app.js ... $ curl http://httpbin.org/ip #查看当前主机的ip地址 $ node app.jscloud9还提供了一个非常好用的debug工具:…