MySQL —— 内置函数

一、日期函数

1.内容

函数名称描述
current_date()当前日期
current_time()当前时间
current_timestamp当前时间戳
date(datetime)返回datetime参数的日期部分
date_add(date,interval d_value_type)

在date中添加日期或时间

interval后的数字单位可以是:year minute second day

date_sub(date,interval d_value_type)

在date中减去日期或时间

interval后的数字单位可以是:year minute second day

datediff(date1,date2)两个日期的差,单位是天
now()当前日期时间

2.使用样例

2.1 获取当前年月日

2.2 获得时分秒

2.3 获取时间戳/当前时间

2.4 在当前时间上加10天后的时间

2.5 在当前时间上减去100天的时间

2.6 计算两个时间相差多少天

2.7 创建一张表,记录生日

2.8 创建一个留言板

实现:查找十分钟以内发表的评论

二、字符串函数

1.内容

charset(str)返回字符串字符集
concat(string2[ , ...])连接字符串
instr(string,substring)返回substring在string中出现的位置,没有返回0
ucase(string2)转换成大写
lcase(string2)转换成小写
left(string2,length)从string2中的左边起取length个字符
length(string)string的长度
replace(str,search_str,replace_str)在str中用replace_str替换search_str
strcmp(string1,string2)逐字符比较两个字符串大小
substring(str,position[ , length])从str的postion开始,取length个字符
ltrim(string)  rtrim(string)  trim(string)去除前空格或后空格

2.使用样例

2.1 前提准备

在接下来的各种测试中,会用到一些测试用例,提前建立好的表格和一些数据内容

其中有一个学生成绩表,还有员工表(来自Oracle 9i经典测试表

学生成绩表:

雇员信息表:

2.2 测试

(1) 获取emp表的ename列的字符集

(2)要求显示stu表中的信息,显示格式:“xxx的语文是xx分,数学xx分,英语xx分”

(3)求学生表中学生名字占用的字节数

(4)将EMP表中所有名字有S的替换成上海显示

(5)截取emp表中ename字段的第二个到第三个字符

(6)以首字母小写的方式显示所有员工的名字

三、数学函数

1.内容

函数名称描述
abs(number)绝对值函数
bin(decimal_number)十进制转换二进制
hex(decimal_number)十进制转换十六进制
conv(number,from_base,to_base)进制转换
ceiling(number)向上取整
floor(number)向下取整
format(number,decimal_places)格式化,保留小数位数
rand()返回随机数,范围[ 0.0 , 1.0 )
mod(number,denominator)取模,求余

2.使用样例

四、其他函数

这部分结合实际测试样例整理介绍

1.内容

1.1 user()

查询当前用户

1.2 database()

查询当前所在数据库

1.3 md5('password')

一般用于对密码(字符串)进行加密,加密后固定32位大小字符串

1.4 password('str')

用于对密码进行加密,比起md5更加复杂,同样加密后固定长度41位

1.5  ifnull(val1,val2)

使用上有点像C语言中的三目运算符,若是val1不为NULL,则返回val1,若是val1为NULL,则返回val2

总结

本篇总结了MySQL中的部分常用的内置函数,进行了部分的测试和使用方法的举例说明

### MySQL 和 PostgreSQL 函数差异与相似性 #### 数据库特性概述 MySQL 和 PostgreSQL 是两种广泛使用的开源关系型数据库管理系统(RDBMS),各自具有独特的特性和功能。虽然两者都支持标准 SQL 查询语句,但在内置函数方面存在一些显著区别。 #### 字符串处理函数 对于字符串操作,两个平台提供了大量类似的函数。例如,在获取子串时,`SUBSTRING()` 或 `SUBSTR()` 可以在二者之间互换使用[^1]。然而,某些特定于供应商的功能有所不同: - **字符长度计算** - MySQL 使用 `CHAR_LENGTH()` - PostgreSQL 则提供 `LENGTH()` 来返回给定字符串的字节数量;如果要获得字符数,则应使用 `CHARACTER_LENGTH()` 或者简写的 `CHAR_LENGTH()` ```sql -- MySQL example SELECT CHAR_LENGTH('hello') AS char_length; -- PostgreSQL equivalent SELECT LENGTH('hello'::bytea) AS byte_length; SELECT CHARACTER_LENGTH('hello') AS character_length; ``` #### 数学运算函数 当涉及到数值计算时,大多数基本算术表达式可以在不修改的情况下跨这两个系统工作。但是,也有一些例外情况需要注意: - **随机数生成** - MySQL 提供了简单的 `RAND()` 函数来生成伪随机浮点值。 - PostgreSQL 中有更灵活的选择——可以调用 `RANDOM()` 获取双精度类型的随机数,也可以利用扩展模块如 pgcrypto 实现更强的安全性需求。 ```sql -- MySQL random number generation SELECT RAND(); -- PostgreSQL alternative approaches SELECT RANDOM(); SELECT gen_random_uuid(); -- requires 'pgcrypto' ``` #### 时间日期管理 时间戳和间隔的操作也是开发人员经常遇到的任务之一。尽管两者的语法结构大致相同,但仍有一些细微差别值得指出: - **当前时间戳检索** - 在 MySQL 中可以通过 `NOW(), CURRENT_TIMESTAMP, LOCALTIME, or LOCALTIMESTAMP` 获得服务器端的时间信息; - 对于 PostgreSQL 用户来说,除了上述选项外还有额外的方式比如 `clock_timestamp()` ,它能反映事务提交时刻的确切时间而不是开始执行查询那一刻。 ```sql -- MySQL timestamp retrieval methods SELECT NOW(), CURRENT_TIMESTAMP, LOCALTIME, LOCALTIMESTAMP; -- Additional method in PostgreSQL SELECT clock_timestamp(); ``` #### JSON 支持 随着 NoSQL 的兴起以及混合架构的应用场景增多,现代 RDBMS 都增强了对半结构化数据的支持能力。在这方面,PostgreSQL 明显领先一步,拥有更为丰富的 API 接口来进行复杂的嵌套文档解析、路径查找等功能。 ```json { "name": "John Doe", "age": 30, "address": { "street": "Main St", "city": "Anytown" } } ``` ```sql -- Extract value using -> operator in PostgreSQL SELECT json_column->>'name' FROM my_table WHERE id=1; -- Equivalent operation in MySQL might require different syntax depending on version SELECT JSON_UNQUOTE(JSON_EXTRACT(json_column, '$.name')) FROM my_table WHERE id=1; ``` 综上所述,尽管 MySQL 和 PostgreSQL 在许多核心领域保持一致,但它们也分别引入了一些独有的增强特性,这使得开发者可以根据具体项目的需求做出最佳选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值