MySQL(九):MySQL语法-高级

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_01join table_02 on table_01.id = table_02.id;
select *
from table_01inner 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_managerjoin departments on dept_manager.dept_no = departments.dept_nojoin 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_01left 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_01right 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_01left 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_01right 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.hqwc.cn/news/20874.html

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

相关文章

反垄断在中国

中国通过反垄断法 中国通过了具有里程碑意义的反托拉斯立法,外国企业表示谨慎性的欢迎,希望该法案能带来更大的开放性,但需要观察它是如何实施的。(华尔街日报 2007年8月32日报道) 反垄断法禁止垄断协议和诸如卡特尔及价格操纵,但允许能促进创新和技术进步的垄断之存在。…

C人脸识别

1、原始图片: 2、灰度化下: 3、均值滤波: 4、 二值图加边缘检测 5、生成积分图 6、把待检测的人脸区域划分为25个,因为是一个数组,这样分别统计每个区域的像素个数: x0: 60, y0: 100, x1: 157, y1: 200 …

动态内存管理

目录 动态内存分配存在的原因 动态内存函数的介绍 malloc和free calloc realloc 常见的动态内存错误 对NULL指针的解引用操作 对动态开辟空间的越界访问 对非动态开辟内存使用free释放 使用free释放一块动态开辟内存的一部分 对同一块动态内存多次释放 动态开辟…

Vue+elementUI实现下拉框多选和反选

Vue代码如下&#xff1a; <el-form-item label"下拉框名称&#xff1a;"><el-select size"mini" v-model"testModelName" focus"getSelectInfo" :disabled"SelectStyle" filterable clearable placeholder"&…

基于 FPGA 的 HDMI/DVI 显示

文章目录 前言一、HDMI 与 DVI 的区别与联系1.1 DVI 接口含义1.2 HDMI 接口含义1.3 HDMI 与 DVI 的区别1.4 HDMI 与 DVI 的兼容性1.5 HDMI 与 DVI 接口对比 二、DVI 数据链路介绍2.1 输入接口层2.2 TMDS 发送器2.3 TMDS 接收器2.4 输出接口层 三、传输原理与实现3.1 TMDS原理3.…

express框架使用express-generator工具

1.全局安装 npm install -g express-generator 2.检测是否安装成功 express -h 3. 快速创建Express应用程序的工具 express -e express-generator 说明&#xff1a;express-e和express-generator都是用于快速创建Express应用程序的工具。express-e是一个命令行工具&#xff0…

基于Javaweb实现ATM机系统开发实战(九)存款功能实现

先看前端界面确定后端需要处理的参数&#xff0c;把一些参数进行修改&#xff1a; <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%> <% taglib prefix"c" uri"http://java.sun.com…

ubuntu使用WHEELTE N100并用rviz显示

写在最开头&#xff0c;如果wheeltec n100被自己改动过参数导致无法读取数据&#xff0c;建议在window的上位机中恢复出厂设置并重新上电&#xff0c;在转入ubuntu。因为我就是这个问题&#xff0c;客服远程操控才帮我解决的。 所有官方资料共享&#xff0c;侵删&#xff1a; …

bug:file name too long文件名超出系统最大限制

各操作系统支持最长的文件和目录名称长度&#xff08;Linux、Win、Mac&#xff09; 今天开发需求的时候发现无法新建文件&#xff0c;提示file name too lang&#xff0c;于是翻阅和查询了一些资料&#xff0c;发现不同操作系统下文件名和目录名最长的长度不同。 操作系统文件名…

Live800在线客服系统:工单系统如何提升企业服务效率?

随着企业规模的扩大和客户需求的增加&#xff0c;如何有效地管理客户服务日益成为企业发展过程中重要的一环。作为客户服务的重要支撑系统之一&#xff0c;工单系统被越来越多的企业所采用。那么工单系统究竟是如何帮助企业提升服务效率的呢&#xff1f;本文将从工单的分配、追…

LeetCode[470]用Rand7()实现Rand10()

难度&#xff1a;Medium 题目&#xff1a; 给定方法 rand7 可生成 [1,7] 范围内的均匀随机整数&#xff0c;试写一个方法 rand10 生成 [1,10] 范围内的均匀随机整数。 你只能调用 rand7() 且不能调用其他方法。请不要使用系统的 Math.random() 方法。 每个测试用例将有一个内部…

Android Java代码与JNI交互 JNI访问Java构造方法(九)

🔥 Android Studio 版本 🔥 🔥 创建包含JNI相关函数类 JNIConstructorClass.java 🔥 package com.cmake.ndk1.jni;import com.cmake.ndk1.model.Animal;public class JNIConstructorClass {static {System.loadLibrary("constructor-class-lib");}public …

Django_获取api接口的传参

目录 当参数为form-data 或者x-www-form-urlencoded类型时&#xff0c;使用request.POST获取到参数 当参数为raw类型时&#xff0c;使用request.body获取到参数&#xff0c;获取的参数需要经过处理才能使用 源码等资料获取方法 当参数为form-data 或者x-www-form-urlencoded…

连接区块链节点的 JavaScript 库 web3.js

文章目录 前言web3.js 介绍web3.js安装web3.js库模块介绍连接区块链节点向区块链网络发送数据查询区块链网络数据 前言 通过前面的文章我们可以知道基于区块链开发一个DApp&#xff0c;而DApp结合了智能合约和用户界面&#xff08;客户端&#xff09;&#xff0c;那客户端是如…

ubuntu20离线安装nodejs、GO、go.rice及yarn

虽然是离线安装&#xff0c;但该有的安装包还是需要的… 目录 1、安装nodejs1.1查看本地是否存在nodejs1.2创建nodejs文件夹1.3下载nodejs二进制文件1.4解压并改名1.5添加软连接 2安装GO2.1创建go文件夹2.2下载go二进制文件2.3解压文件2.4添加环境变量2.5设置sudo可执行go命令…

stm32(SPI读写W25Q18)

SPI 是什么&#xff1f; SPI是串行外设接口&#xff08;Serial Peripheral Interface&#xff09;的缩写&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总 线&#xff0c;并且在芯片的管脚上只占用四根线&#xff0c;节约了芯片的管脚&#xff0c;同时为PC…

移动互联网应用程序(app)个人信息安全测试能力验证-流程介绍

ILONGYU 产品简介 为规范检验检测市场&#xff0c;提升检验检测机构技术能力&#xff0c;根据《检验检测机构资质认定管理办法》《实验室能力验证实施办法》等有关规定&#xff0c;市场监管总局决定在社会重点关注的部分检验检测领域&#xff0c;组织开展2020年国家级检验检测…

Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面

Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面 虽然说IE6除了部分要求苛刻的需求以外已经被可以不考虑了&#xff0c;但是WIN7自带的浏览器IE8还是需要支持的。 本文这个方法主要的优点&#xff0c;个人觉得就是准备少&#xff0c;不需要上网寻找大量的图片做素材&…

MySQL的MVCC

目录 1.MVCC基本概念 1.当前读&#xff1a; 2.快照读&#xff1a; 3.MVCC&#xff1a;Multi-Version Concurrency Control&#xff0c;多版本并发控制&#xff1a; 2.MVCC实现原理-三个隐藏字段 3.MVCC实现原理-undo log日志 1.undo log&#xff1a;回滚日志 2.undo log…

samba服务

samba服务 1. samba诞生背景2. samba简介3. samba配置文件详解3.1 配置文件中参数的作用3.1.1 security参数的四种验证方式3.1.2 passdb backend定义用户后台的类型 4. samba服务部署与配置windos共享linux挂载共享 1. samba诞生背景 1987 年&#xff0c;微软公司和英特尔公司…