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

MySQL学习笔记-03

wptr33 2024-12-01 05:02 25 浏览

数据查询

  • 查询全部列的记录

在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的后面加上%。


相关推荐

redis的八种使用场景

前言:redis是我们工作开发中,经常要打交道的,下面对redis的使用场景做总结介绍也是对redis举报的功能做梳理。缓存Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。...

基于Redis的3种分布式ID生成策略

在分布式系统设计中,全局唯一ID是一个基础而关键的组件。随着业务规模扩大和系统架构向微服务演进,传统的单机自增ID已无法满足需求。高并发、高可用的分布式ID生成方案成为构建可靠分布式系统的必要条件。R...

基于OpenWrt系统路由器的模式切换与网页设计

摘要:目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户、提升服务的目标。传统路由器自带的Luci界面提供了工厂模式的Web界面,用户可通过该界面配置路...

这篇文章教你看明白 nginx-ingress 控制器

主机nginx一般nginx做主机反向代理(网关)有以下配置...

如何用redis实现注册中心

一句话总结使用Redis实现注册中心:服务注册...

爱可可老师24小时热门分享(2020.5.10)

No1.看自己以前写的代码是种什么体验?No2.DooM-chip!国外网友SylvainLefebvre自制的无CPU、无操作码、无指令计数器...No3.我认为CS学位可以更好,如...

Apportable:拯救程序员,IOS一秒变安卓

摘要:还在为了跨平台使用cocos2d-x吗,拯救objc程序员的奇葩来了,ApportableSDK:FreeAndroidsupportforcocos2d-iPhone。App...

JAVA实现超买超卖方案汇总,那个最适合你,一篇文章彻底讲透

以下是几种Java实现超买超卖问题的核心解决方案及代码示例,针对高并发场景下的库存扣减问题:方案一:Redis原子操作+Lua脚本(推荐)//使用Redis+Lua保证原子性publicbo...

3月26日更新 快速施法自动施法可独立设置

2016年3月26日DOTA2有一个79.6MB的更新主要是针对自动施法和快速施法的调整本来内容不多不少朋友都有自动施法和快速施法的困扰英文更新日志一些视觉BUG修复就不翻译了主要翻译自动施...

Redis 是如何提供服务的

在刚刚接触Redis的时候,最想要知道的是一个’setnameJhon’命令到达Redis服务器的时候,它是如何返回’OK’的?里面命令处理的流程如何,具体细节怎么样?你一定有问过自己...

lua _G、_VERSION使用

到这里我们已经把lua基础库中的函数介绍完了,除了函数外基础库中还有两个常量,一个是_G,另一个是_VERSION。_G是基础库本身,指向自己,这个变量很有意思,可以无限引用自己,最后得到的还是自己,...

China's top diplomat to chair third China-Pacific Island countries foreign ministers' meeting

BEIJING,May21(Xinhua)--ChineseForeignMinisterWangYi,alsoamemberofthePoliticalBureau...

移动工作交流工具Lua推出Insights数据分析产品

Lua是一个适用于各种职业人士的移动交流平台,它在今天推出了一项叫做Insights的全新功能。Insights是一个数据平台,客户可以在上面实时看到员工之间的交流情况,并分析这些情况对公司发展的影响...

Redis 7新武器:用Redis Stack实现向量搜索的极限压测

当传统关系型数据库还在为向量相似度搜索的性能挣扎时,Redis7的RedisStack...

Nginx/OpenResty详解,Nginx Lua编程,重定向与内部子请求

重定向与内部子请求Nginx的rewrite指令不仅可以在Nginx内部的server、location之间进行跳转,还可以进行外部链接的重定向。通过ngx_lua模块的Lua函数除了能实现Nginx...