02 MySQL 之 DQL专题

3.

数据库中仅有月薪字段(month_salary),要求查询所有员工的年薪,并以年薪(year_salary)输出:

分析:

  1. 查询操作中,字段可以参与数学运算
  2. as 起别名,但实际上可以省略
#以下两句效果完全一致
select month_salary as year_salary from emp
select month_salary year_salary from emp

4. 条件查询

#条件查询的语法
select   
...
from  
...
where  过滤条件;

带有

除了数学符号外,常见的条件| between...and...   | 等同于 >= and <=                   |
| is null            | 为空                               |
| is not null        | 不为空                             |            |                |
| in                 | 在指定的值当中                     |
| not in             | 不在指定的值当中                   |
| exists             |                                    |
| not exists         |                                    |
| like               | 模糊查询                           |

in 和 or 的效率

我们知道, in的执行原理实际上是采用 = 和 or 的方式,

job in(‘MANAGER’,‘SALESMAN’,‘CLERK’)
等同于
job = ‘MANAGER’ or job = ‘SALESMAN’ or job = ‘CLERK’

sal in(1600, 3000, 5000)
等同于
sal = 1600 or sal = 3000 or sal = 5000

查询的列如果有索引或者主键,那么二者效率基本相当
否则
or的效率为O(n),而in的效率为O(log n), 当n越大的时候效率相差越明显(也就是说数据量越大的时候,in的效率越高)。

.1 and 和 or 优先级问题

找出薪资小于1500,并且部门编号是20或30的员工姓名、薪资、部门编号。

直接给出错误 SQL:

selectename,sal,deptno
fromemp
wheresal < 1500 and deptno = 20 or deptno = 30;

结果是错的,有两个部门 30 且工资超过 1500 的也被查询了
在这里插入图片描述

分析:

  1. MS 中,and 的优先级大于 or
# 我们想要的执行顺序是  sal < 1500 and (deptno = 20 or deptno = 30)
# 实际的执行顺序是  (sal < 1500 and deptno = 20) or deptno = 30;
# 即系统先筛选出同时满足工资小于 1500 且部门 20 的人,再加上所有部分 30 的人后一起输出sal < 1500 and deptno = 20 or deptno = 30;
# 由于 and 优先级高,系统先执行所有 and,因此执行顺序是(条件1 and 条件2)or(条件3 and 条件4 )where 条件1 and 条件2 or 条件3 and 条件4
  1. 不用记忆优先级。遇到不确定的优先级时,用小括号来保证正确。
sal < 1500 and (deptno = 20 or deptno = 30

模糊查询

模糊查询的语法格式如下:

select .. from .. where 字段 like '通配符表达式';

通配表达式也很简单,主要是

  1. % 代表任意多个字符。
  2. 下划线 “_” 代表任意一个字符。

order by排序

order by 关键字默认采用 asc 升序

#按照 sal 升序排列,如果 sal 相同的,再按照 ename 升序排列。
select empno,ename,sal from emp order by sal asc, ename asc;

distinct 去重

  1. distinct只能出现在所有字段的最前面。
  2. 且当distinct出现后,后面多个字段一定是联合去重的: 即将多个字段视为一个整体,允许部分重复,不允许整体重复。
    在这里插入图片描述
    在这里插入图片描述

数据处理函数

字符串处理相关之 upper/ucase、lower/lcase

# 查询所有员工名字,以大写形式展现
select upper(ename) as ename from emp;#数据库是否对大小写敏感主要取决于操作系统.win 内不敏感,linux 内敏感
#若在 linux 内部署数据库,并且此时不知道表中的人名是大写、小写还是大小写混合,
#不妨直接将 ename 一整列都转大写,然后再用大写的人名去匹配,这样,只要确实存在这个人,不管大小写都能匹配出来
select ename, job, sal from emp where upper(ename) = 'SMITH';

截取字符串substr

语法:substr(‘被截取的字符串’, 起始下标, 截取长度)
有两种写法:
第一种:substr(‘被截取的字符串’, 起始下标, 截取长度)
第二种:substr(‘被截取的字符串’, 起始下标),当第三个参数“截取长度”缺失时,截取到字符串末尾
注意:起始下标从1开始,不是从0开始。(1表示从左侧开始的第一个位置,-1表示从右侧开始的第一个位置。)
在这里插入图片描述
练习:找出员工名字中第二个字母是A的

select ename from emp where substr(ename, 2, 1) = 'A';

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

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

相关文章

Linux的文件操作中的静态库的制作

Linux操作系统支持的函数库分为&#xff1a; 静态库&#xff0c;libxxx.a&#xff0c;在编译时就将库编译进可执行程序中。 优点&#xff1a;程序的运行环境中不需要外部的函数库。 缺点&#xff1a;可执行程序大 &#xff08;因为需要 编译&#xff09; 动态库&#xff0c…

Unity 人形骨骼动画模型嘴巴张开

最近搞Daz3D玩&#xff0c;导入后挂上动画模型嘴巴张开&#xff0c;其丑无比。 Google了一下&#xff0c;得知原因是Unity没有对下巴那根骨骼做控制&#xff0c;动画系统就会把它放到默认的位置&#xff0c;嘴巴就张开了。找到了3种解决办法。 1.移除动画中对下巴这个骨骼的转…

stm32报错问题集锦

PS&#xff1a;本文负责记录本人日常遇到的报错问题&#xff0c;以及问题描述、原因以及解决办法等&#xff0c;解决办法百分百亲测有效。本篇会不定期更新&#xff0c;更新频率就看遇到的问题多不多了 更换工程芯片型号 问题描述 例程最开始用的芯片型号是STM32F103VE&#…

stm32开发之threadx+modulex组合开发使用记录

前言 参考博客 论坛官方资料: 微软开发板核心芯片使用的是stm32f407zgtx&#xff0c;烧录工具使用的是jlink模块的构建使用的是脚本进行构建网上针对modulex的资料较少&#xff0c;这里做个记录 项目结构 逻辑框架 主程序代码 主函数 /** Copyright (c) 2024-2024&#xff0…

【Web】VS Code 插件及快捷键

专栏文章索引&#xff1a;Web 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、安装步骤 二、插件 1.Chinese (Simplified) (简体中文) 2.open in browser 3.vscode-icons 4.Live Server 5.Live Server Preview 6.翻译(英汉词典) 三、快捷键 1.缩放代码…

【SERVERLESS】AWS Lambda上实操

通过Serverless的发展历程及带给我们的挑战&#xff0c;引出我们改如何改变思路&#xff0c;化繁为简&#xff0c;趋利避害&#xff0c;更好的利用其优势&#xff0c;来释放企业效能&#xff0c;为创造带来无限可能。 一 Serverless概述 无服务器计算近年来与云原生计算都是在…

如何解决电感啸叫

一、什么是电感噪声 电感器啸叫是指在20Hz-200Hz的当前激励频率下&#xff0c;电感器会发出人耳可以听到的吱吱声。这种现象在DC-DC的功率电感器中很常见。是什么引起电感啸叫以及如何解决&#xff1f; 二、电感啸叫的原因 电感啸叫声产生的主要的原因就是漆包线。我们都知道电…

【探讨】光场空间结构全维度非线性调控理论及应用

摘要&#xff1a;得益于数字全息与几何相位平面光学技术的逐渐成熟&#xff0c;空间结构光场调控及应用研究已在线性光学领域取得蓬勃发展。与之相比&#xff0c;以非线性光学为物理途径的相关研究虽能实现许多关键功能(如光场间信息交互)却仍处于起步阶段。笔者课题组在国家自…

C语言文件操作函数remove、rename、popen、fget

1.remove函数删除文件 remove 函数原型 : 删除指定的文件 ; #include <stdio.h> int remove(char *filename);参数&#xff1a; char *filename 是文件路径 ; 返回值&#xff1a;如果成功&#xff0c;则返回零。如果错误&#xff0c;则返回 -1&#xff0c;并设置 errn…

wpf下RTSP|RTMP播放器两种渲染模式实现

技术背景 在这篇blog之前&#xff0c;我提到了wpf下播放RTMP和RTSP渲染的两种方式&#xff0c;一种是通过控件模式&#xff0c;另外一种是直接原生RTSP、RTMP播放模块&#xff0c;回调rgb&#xff0c;然后在wpf下渲染&#xff0c;本文就两种方式做个说明。 技术实现 以大牛直…

双向链表的实现(详解)

目录 前言初始化双向链表的结构为双向链表的节点开辟空间头插尾插打印链表尾删头删查找指定位置之后的插入删除pos节点销毁双向链表 前言 链表的分类&#xff1a; 带头 不带头 单向 双向 循环 不循环 一共有 (2 * 2 * 2) 种链表 带头指的是&#xff1a;带有哨兵位节点 哨兵位&a…

webrtc中的Track,MediaChannel,MediaStream

文章目录 Track,MediaChannel,MediaStream的关系MediaStream的创建流程创建VideoChannel的堆栈创建VideoStream的堆栈 sdp中媒体参数信息的映射sdp中媒体信息参数设置体系参数设置流程参数映射体系 Track,MediaChannel,MediaStream的关系 Audio/Video track&#xff0c;MediaC…