百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

MySQL学习笔记-03

mhr18 2025-01-04 21:35 22 浏览 0 评论

数据查询

  • 查询全部列的记录

在SQL语句中,提供了一种方便查询数据表或视图的所有列的方法,其语法格式如下:

其中,SELECT语句后面的“ * ”号表示数据表中的所有列,FROM子句后面的表名或视图名用来表示指定要查询数据表或视图的名字。[ ]里面指定的表名或视图是可选的,也就是说,FROM子句后面可以跟多个表或视图的名字,多个表或视图之间用逗号分开。

  • 查询表中指定的列

其中,SELECT语句后面的目标列表示要查询的指定列的名字,[ ]里面指定的目标列是可选的。也就是说SELCET语句中指定的目标列可以是一列也可以是多个列,指定多个列时,多个列名需要用逗号分开。

FROM子句后面的表名或视图名用来表示指定要查询数据表或视图的名字。[ ]里面指定的表名或视图是可选的,也就是说,FROM子句后面可以跟多个表或视图的名字,多个表或视图之间用逗号分开。


  • 筛选行

使用WHERE子句指保留哪些行。例如,下面的语句将查找部门编号为10的所有员工

  • 查找满足多个查询条件的行

使用带有OR和AND条件的WHERE子句。例如,如果想找出部门编号为10的所有员工、有业务提成的所有员工以及部门编号是20且工资低于2000美元的所有员工。

可以组合使用AND、OR和圆括号筛选满足多个查询条件的行。例如,WHERE子句找出如下的数据:

(1)deptno等于10,或

(2)comm不是NULL,或

(3)deptno等于20且工资不高于2000的员工

  • 创建有意义的列名

如果想要修改检索结果的列名,使其更具可读性且更易于理解。使用AS关键字,并以original_name AS new_name的形式来修改检索结果的列名。

使用AS关键字重新命名查询所返回的列,即是创建别名。新的列名被称为别名

  • 在WHERE子句中引用别名列

(1)问题:已经为检索结果集创建了有意义的列名,并且想利用WHERE子句过滤部分行数据。但是,如果尝试在WHERE子句中引用别名列,查询无法顺利进行

(2)解决方案:把查询包装为一个内嵌视图,这样就可以引用别名列。

在本例中,内嵌视图的别名为x。


  • 串联多列的值

如果想将多列的值合并为一列,例如需要将数据来自EMP表的ENAME列和JOB列。

(1)DB2、Oracle和PostgreSQL这些数据库把双竖线作为串联运算符

(2)MySQL使用CONCAT函数作为串联运算符

(3)SQL Server使用“+”作为串联运算符



  • 在SELECT语句里使用条件逻辑

如果员工的工资少于2000,就返回UNDERPAID;如果超过4000就返回OVERPAID;若介于两者之间则返回OK

CASE表达式能对查询结果执行条件逻辑判断。可以为CASE表达式的执行结果取一个别名,使结果具有可读性,status就是CASE表达式执行结果的别名。ELSE子句是可选的,若没有它,对于不满足测试条件的行,CASE表达式会返回NULL。


  • 限定返回行数

如果想限定查询结果的行数,并不关心排序,任意n行都可以。

MySQL使用LIMIT

  • 随机返回若干行记录

希望从表中获取特定数量的随机记录

MySQL把内置函数RAND和LIMIT、ORDER BY结合使用

ORDER BY子句能够接受一个函数的返回值,并利用该值改变当前结果集的顺序,本例中,所有查询都是在ORDER BY子句执行结束后才限定返回值的行数。

  • 查找NULL值

查找特定列的值为NULL的所有行,要判断一个值是否为NULL,必须使用IS NULL

NULL值不会等于或不等于任何值,甚至不能与自身作比较。因此,不能使用 =或!=来测试某一列的值是否为NULL,判断一行是否含有NULL,必须使用IS NULL

  • 把NULL值转换为实际值

使用COALESCE函数将NULL替代为实际值

需要为COALESCE函数指定一个或多个参数。该函数会返回参数列表里的第一个非NULL值。在本例中,若comm不为NULL,会返回comm值,否则返回0。

除此之外,CASE也适用


  • 查找匹配项

选取某个特定字符串或模式的行,结合使用LIKE运算符和SQL通配符%

被用于LIKE模式匹配操作时,运算符%可以匹配任意长度的连续字符。大多SQL实现也提供下划线(_)运算符,用于匹配单个字符。通过在字母I前后都加上%,任何(在任意位置)出现I的字符串都会被检索出来。如果没有使用%把检索模式围起来,那么%的位置会影响查询结果。例如,为了找到以ER结尾的职位,就需要在ER的前面加上%;如果是要找到以ER开头的职位,就应该在ER的后面加上%。


相关推荐

如何检查 Linux 服务器是物理服务器还是虚拟服务器?

在企业级运维、故障排查和性能调优过程中,准确了解服务器的运行环境至关重要。无论是物理机还是虚拟机,都存在各自的优势与限制。在很多场景下,尤其是当你继承一台服务器而不清楚底层硬件细节时,如何快速辨识它是...

第四节 Windows 系统 Docker 安装全指南

一、Docker在Windows上的运行原理(一)架构限制说明Docker本质上依赖Linux内核特性(如Namespaces、Cgroups等),因此在Windows系统上无法直...

C++ std:shared_ptr自定义allocator引入内存池

当C++项目里做了大量的动态内存分配与释放,可能会导致内存碎片,使系统性能降低。当动态内存分配的开销变得不容忽视时,一种解决办法是一次从操作系统分配一块大的静态内存作为内存池进行手动管理,堆对象内存分...

Activiti 8.0.0 发布,业务流程管理与工作流系统

Activiti8.0.0现已发布。Activiti是一个业务流程管理(BPM)和工作流系统,适用于开发人员和系统管理员。其核心是超快速、稳定的BPMN2流程引擎。Activiti可以...

MyBatis动态SQL的5种高级玩法,90%的人只用过3种

MyBatis动态SQL在日常开发中频繁使用,但大多数开发者仅掌握基础标签。本文将介绍五种高阶技巧,助你解锁更灵活的SQL控制能力。一、智能修剪(Trim标签)应用场景:动态处理字段更新,替代<...

Springboot数据访问(整合Mybatis Plus)

Springboot整合MybatisPlus1、创建数据表2、引入maven依赖mybatis-plus-boot-starter主要引入这个依赖,其他相关的依赖在这里就不写了。3、项目结构目录h...

盘点金州勇士在奥克兰13年的13大球星 满满的全是...

见证了两个月前勇士与猛龙那个史诗般的系列赛后,甲骨文球馆正式成为了历史。那个大大的红色标志被一个字母一个字母地移除,在周四,一切都成为了过去式。然而这座,别名为“Roaracle”(译注:Roar怒吼...

Mybatis入门看这一篇就够了(mybatis快速入门)

什么是MyBatisMyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且改名为M...

Springboot数据访问(整合druid数据源)

Springboot整合druid数据源基本概念SpringBoot默认的数据源是:2.0之前:org.apache.tomcat.jdbc.pool.DataSource2.0及之后:com.z...

Linux 中的 &quot;/etc/profile.d&quot; 目录有什么作用 ?

什么是/etc/profile.d/目录?/etc/profile.d/目录是Linux系统不可或缺的一部分保留配置脚本。它与/etc/profile文件相关联,这是一个启动脚本,该脚...

企业数据库安全管理规范(企业数据库安全管理规范最新版)

1.目的为规范数据库系统安全使用活动,降低因使用不当而带来的安全风险,保障数据库系统及相关应用系统的安全,特制定本数据库安全管理规范。2.适用范围本规范中所定义的数据管理内容,特指存放在信息系统数据库...

Oracle 伪列!这些隐藏用法你都知道吗?

在Oracle数据库中,有几位特殊的“成员”——伪列,它们虽然不是表中真实存在的物理列,但却能在数据查询、处理过程中发挥出意想不到的强大作用。今天给大家分享Oracle伪列的使用技巧,无论...

Oracle 高效处理数据的隐藏神器:临时表妙用

各位数据库搬砖人,在Oracle的代码世界里闯荡,处理复杂业务时,是不是总被数据“搅得头大”?今天给大家安利一个超实用的隐藏神器——临时表!当你需要临时存储中间计算结果,又不想污染正式数据表...

Oracle 数据库查询:多表查询(oracle多表关联查询)

一、多表查询基础1.JOIN操作-INNERJOIN:返回两个表中满足连接条件的匹配行,不保留未匹配数据。SELECTa.emp_id,b.dept_nameFROMempl...

一文掌握怎么利用Shell+Python实现多数据源的异地备份程序

简介:在信息化时代,数据安全和业务连续性已成为企业和个人用户关注的焦点。无论是网站数据、数据库、日志文件,还是用户上传的文档、图片等,数据一旦丢失,损失难以估量。尤其是当数据分布在多个不同的目录、服务...

取消回复欢迎 发表评论: