05. sql函数的介绍以及建议

本文介绍了SQL中的函数,包括算术、字符串、日期和转换函数的使用,并给出了实例。强调了如何安全地在数据表中运用SQL函数,同时也指出使用函数可能带来的数据库兼容性和查询效率问题。提醒在不同DBMS中使用函数需谨慎,并提出了关于大小写的规范建议。
摘要由CSDN通过智能技术生成


前言

SQL 的内置函数的笔记。重点是:

  1. 什么是 SQL 函数?
  2. 内置的 SQL 函数都包括哪些?
  3. 如何使用 SQL 函数对一个数据表进行操作
  4. 什么情况下使用 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’, 123),运行结果为 abc123。

SELECT LENGTH(‘你好’),运行结果为 6。

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。

转换函数

在这里插入图片描述
SELECT CAST(123.123 AS INT),运行结果会报错。

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

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

如何使用 SQL 函数对一个数据表进行操作

SELECT * FROM heros WHERE DATE(birthdate)>'2016-10-01'

需要注意的是下面这种写法是不安全的:

SELECT * FROM heros WHERE birthdate>'2016-10-01'

因为很多时候你无法确认 birthdate 的数据类型是字符串,还是 datetime 类型,如果你想对日期部分进行比较,那么使用DATE(birthdate)来进行比较是更安全的。

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

尽管 SQL 函数使用起来会很方便,但我们使用的时候还是要谨慎,因为你使用的函数很可能在运行环境中无法工作,这是为什么呢?

第一、我们在使用 SQL 语言的时候,不是直接和这门语言打交道,而是通过它使用不同的数据库软件,即 DBMS。DBMS 之间的差异性很大,远大于同一个语言不同版本之间的差异。实际上,只有很少的函数是被 DBMS 同时支持的。比如,大多数 DBMS 使用(||)或者(+)来做拼接符,而在 MySQL 中的字符串拼接函数为Concat()。大部分 DBMS 会有自己特定的函数,这就意味着采用 SQL 函数的代码可移植性是很差的,因此在使用函数的时候需要特别注意。

第二、它会导致查询不走索引,直接全表遍历,影响查询效率。这才是最重要的问题。现实工作中一般是禁止 where条件 出现函数。

关于大小写的规范

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

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

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

规范建议:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tzzt01

您的支持是我坚持下去的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值