当前位置: 首页 > news >正文

【黄啊码】MySQL入门—7、这些函数运用得好,高级工程师都直呼内行

大家好!我是黄啊码,久等了,时间荏苒,转眼停更三个月了,这段时间搬砖去了,惭愧惭愧,先上课吧,嘘寒问暖的话有空再说。上一回留下了课题:如果where后边有and和or,哪个先执行?

先直接给答案:在mysql查询时,在where语句中,AND和OR可以同时使用,但AND的优先级要高于OR,但我们经常会遇到where条件中and与or同时出现的情况,这时候需要把and 的条件使用括号括起来或者or的条件括起来才会达到预期的效果,这是因为where条件中 and优先与or ,所以加上括号就可以改变优先级关系。

例子如下:

select * from user_info where (user_age>12 and user_age<16) or user_name='张三'

时间紧迫,我们直接看结果:

这样看来,这段sql代码的意思就是查出所有年龄12-16的学生或者名字为张三的,understand?

好了,回忆那么苦,我们就不做多停留,看看最新课程:MySQL函数运用

目录

什么是 SQL 函数

算术函数

字符串函数

日期函数

转换函数

算术函数

字符串函数

日期函数

转换函数

为什么使用 SQL 函数会带来问题

关于大小写的规范

什么是 SQL 函数

函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。

SQL 中的函数一般是在数据上执行的,可以很方便地转换和处理数据。一般来说,当我们从数据表中检索出数据之后,就可以进一步对这些数据进行操作,得到更有意义的结果,比如返回指定条件的函数,或者求某个字段的平均值等。

常用的 SQL 函数有哪些

SQL 提供了一些常用的内置函数,当然你也可以自己定义 SQL 函数。SQL 的内置函数对于不同的数据库软件来说具有一定的通用性,我们可以把内置函数分成四类:

  1. 算术函数

  2. 字符串函数

  3. 日期函数

  4. 转换函数

算术函数

这里我举一些简单的例子,你来体会下:

SELECT ABS(-2),运行结果为 2。

SELECT MOD(101,3),运行结果 2。

SELECT ROUND(37.25,1),运行结果 37.3。

字符串函数


这里同样有一些简单的例子,你可以自己运行下:

SELECT CONCAT('abc', 666),运行结果为 abc666。

SELECT LENGTH('你好啊'),运行结果为 9。

SELECT CHAR_LENGTH('你好'),运行结果为 2。

SELECT LOWER('ABC'),运行结果为 abc。

SELECT UPPER('abc'),运行结果 ABC。

SELECT REPLACE('fabcd', 'abc', 123),运行结果为 f123d。

SELECT SUBSTRING('fabcd', 1,3),运行结果为 fab。

日期函数

日期函数是对数据表中的日期进行处理,常用的函数包括:

下面是一些简单的例子,你可自己运行下:

SELECT CURRENT_DATE(),运行结果为 2019-04-03。

SELECT CURRENT_TIME(),运行结果为 21:26:34。

SELECT CURRENT_TIMESTAMP(),运行结果为 2019-04-03 21:26:34。

SELECT EXTRACT(YEAR FROM '2019-04-03'),运行结果为 2019。

SELECT DATE('2019-04-01 12:00:05'),运行结果为 2019-04-01。

这里需要注意的是,DATE 日期格式必须是 yyyy-mm-dd 的形式。如果要进行日期比较,就要使用 DATE 函数,不要直接使用日期与字符串进行比较,我会在后面的例子中讲具体的原因。

转换函数

转换函数可以转换数据之间的类型,常用的函数如下表所示:


这两个函数不像其他函数,看一眼函数名就知道代表什么、如何使用。下面举了这两个函数的例子,你需要自己运行下:

SELECT CAST(123.123 AS INT),运行结果会报错。

SELECT CAST(123.123 AS DECIMAL(8,2)),运行结果为 123.12。

SELECT COALESCE(null,1,2),运行结果为 1。

为什么使用 SQL 函数会带来问题

如果你学习过编程语言,就会知道语言是有不同版本的,比如 Python 会有 2.7 版本和 3.x 版本,但我们在使用 SQL 语言的时候,不是直接和这门语言打交道,而是通过它使用不同的数据库软件,即 DBMS。DBMS 之间的差异性很大,远大于同一个语言不同版本之间的差异。实际上,只有很少的函数是被 DBMS 同时支持的。比如,大多数 DBMS 使用(||)或者(+)来做拼接符,而在 MySQL 中的字符串拼接函数为Concat()。大部分 DBMS 会有自己特定的函数,这就意味着采用 SQL 函数的代码可移植性是很差的,因此在使用函数的时候需要特别注意。【简而言之就是sql语句对于dbms来说,兼容性还有待调整。】

关于大小写的规范

在 SQL 中,关键字和函数名是不用区分字母大小写的,比如 SELECT、WHERE、ORDER、GROUP BY 等关键字,以及 ABS、MOD、ROUND、MAX 等函数名。

不过在 SQL 中,你还是要确定大小写的规范,因为在 Linux Windows 环境下,你可能会遇到不同的大小写问题。

比如 MySQL 在 Linux 的环境下,数据库名、表名、变量名是严格区分大小写的,而字段名是忽略大小写的

MySQL 在 Windows 的环境下全部不区分大小写

这就意味着如果你的变量名命名规范没有统一,就可能产生错误。这里有一个有关命名规范的建议:

  1. 关键字和函数名称全部大写;
  2. 数据库名、表名、字段名称全部小写;
  3. SQL 语句必须以分号结尾。

注:千万要记住黄啊码标红色的地方,不然很容易本地好好的代码迁移到服务器就挂了。

最后留一个脑图给大家当做复习用:

好了,今天的课程学到这里,有问题的留个言,别忘了一键三连,下次我们还会再见!

我是黄啊码,码字的码,退。。。退。。。退。。。朝! 

相关文章:

  • UnityPackageManager相关
  • 数字图像处理——基本运算
  • Cosmos模块化功能链 走向亿级用户的超级Dapp时代
  • 【黑马程序员名师pink老师讲HTML】HTML很容易忘记?有它我不慌的
  • .NetCore项目nginx发布
  • 主流开源OLAP对比分析
  • 二叉搜索树的基本操作 || TreeMap和TreeSet介绍
  • 超详细的数据结构---顺序表的有关教程
  • Exchange Server 2016 安装部署
  • 【C51单片机】中断系统之单一外中断应用
  • 2.2 Linux系统的目录结构与文件类型
  • jedis:使用事务开启watch监控
  • 【趣学算法】第一章 算法之美(上)
  • 以MapBox为核心构建Vue地图组件库教程
  • Web链接测试如何做?
  • 【Leetcode】101. 对称二叉树
  • 【css3】浏览器内核及其兼容性
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Debian下无root权限使用Python访问Oracle
  • iOS | NSProxy
  • Javascript基础之Array数组API
  • Spring Cloud中负载均衡器概览
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Yii源码解读-服务定位器(Service Locator)
  • 飞驰在Mesos的涡轮引擎上
  • 离散点最小(凸)包围边界查找
  • 前嗅ForeSpider采集配置界面介绍
  • 深度学习中的信息论知识详解
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 为什么要用IPython/Jupyter?
  • No resource identifier found for attribute,RxJava之zip操作符
  • (9)STL算法之逆转旋转
  • (七)c52学习之旅-中断
  • (十一)c52学习之旅-动态数码管
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .Net CF下精确的计时器
  • .net MVC中使用angularJs刷新页面数据列表
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET中的十进制浮点类型,徐汇区网站设计
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [android] 手机卫士黑名单功能(ListView优化)
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序
  • [C#]使用PaddleInference图片旋转四种角度检测
  • [CISCN2019 华北赛区 Day1 Web5]CyberPunk --不会编程的崽
  • [Deepin 15] 编译安装 MySQL-5.6.35
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败
  • [git]git命令如何取消先前的配置
  • [HTML]HTML5实现可编辑表格
  • [IE9] IE9 beta版下载链接
  • [IE9] IE9 Beta崩溃问题解决方案
  • [javaee基础] 常见的javaweb笔试选择题含答案
  • [LeetCode 127] - 单词梯(Word Ladder)