MySQL:函数

提醒 : 设定下面的语句是在数据库名为 db_book 里执行的。
创建user_info表

注意:pwd为密码字段,这里使用了VARCHAR(128)类型,为了后面方便对比,开发项目里一般使用char(32),SQL语句里使用MD5加密函数

bash 复制代码
USE db_book;
CREATE TABLE user_info(
	id INT NOT NULL AUTO_INCREMENT,
	userName VARCHAR(30) DEFAULT NULL,
	age INT,
	sex VARCHAR(4) DEFAULT NULL,
	moblie VARCHAR(11) DEFAULT NULL,
	pwd VARCHAR(128) DEFAULT NULL,
	birthday DATE DEFAULT NULL,
	avatar  VARCHAR(100) DEFAULT NULL,
	num INT,
	PRIMARY KEY(id)
);

为user_info表里添加多条数据

bash 复制代码
USE db_book;
INSERT INTO user_info(userName,age,sex,moblie,pwd,birthday,avatar,num)VALUES('用户1',20,'男',12345678901,123456,'2024-03-01',NULL,1),('用户2',22,'男',13345678902,'123456adc','2023-10-01',NULL,2),('用户3',23,'女',14345678903,'2423adbc','2022-12-08','https://test.avatar.1234abc',3),('Test4',24,'男',13345678902,'123456adc4','2021-04-02',NULL,4123400),('test5',25,'女',15345678902,'123456adc5','2020-11-22',NULL,51234666);

查询user_info表数据

一、日期和时间函数

  1. CURDATE() 返回当前日期
    只包含年、月、日部分,格式为YYYY-MM-DD;
  2. CURTIME() 返回当前时间
    只包含时、分、秒部分,格式为HH:MM:SS
  3. MONTH(d)返回日期d中的月份值,范里是1~12
  4. NOW()函数 返回当前日期和时间
    包含年、月、日、时、分、秒,格式为YYYY-MM-DD HH:MM:SS
  5. UNIX_TIMESTAMP(date)函数
    将date转化为UNIX时间戳
bash 复制代码
SELECT CURDATE(),CURTIME(),NOW(),UNIX_TIMESTAMP(NOW()),MONTH(birthday)FROM db_book.user_info;/*日期和时间函数*/

执行结果

UNIX_TIMESTAMP 函数示例
在终端里执行: SELECT UNIX_TIMESTAMP(now());

CURDATE()函数示例
在终端里执行:SELECT CURDATE();

其他几个日期函数执行操心和上面一样

使用AS为列名设置别名

bash 复制代码
SELECT CURDATE(),CURTIME(),NOW(),MONTH(birthday) AS m FROM db_book.user_info;

执行结果

二、字符串函数

  1. CHAR_LENGTH(s) 计算字符串s的字符数;
  2. UPPER(s) 把所有字母变成大写字母;
  3. LOWER(s) 把所有字母变成小写字母;
bash 复制代码
SELECT userName,CHAR_LENGTH(userName),UPPER(userName),LOWER(userName)FROM db_book.user_info;/*字符串函数*/

执行结果

三、数学函数

  1. A BS(x)求绝对值
  2. SQRT(x)求平方根
  3. MOD(x.y)求余
bash 复制代码
SELECT num,ABS(num) FROM db_book.user_info;/*求绝对值*/
3.1 求绝对值

执行结果

bash 复制代码
SELECT SQRT(num) FROM db_book.user_info;/*对num求平方根*/

执行结果

3.2 求平方根
bash 复制代码
SELECT SQRT(4);/*对4求平方根*/

终端里执行结果

MySQL Workbench执行结果

3.3 求余
bash 复制代码
SELECT MOD(9,2);/*求余*/

终端执行结果

四、加密函数

  1. PASSWORD(Str) 一般对用户的密码加密 不可逆
    注意:mysql8.0 已经弃用PASSWORD()函数了,可以使用MD5函数代替
  2. MD5(str)普通加密 不可逆
  3. ENCODE(SLr,pswd_str)加密函数,结果是一个二进制数,必须使用BLOB 类型的字段来保存它;
    注意:mysql8.0 已经找不到ENCODE()函数了,可以使用MD5函数代替
  4. DECODE(crypt_str,pswd_str)解密函数;
    注意:mysql8.0 已经找不到DECODE()函数了,可以使用MD5函数代替
4.1 PASSWORD

注意:mysql8.0 已经弃用PASSWORD()函数了,可以使用MD5函数代替

在mysql8.0以下版本执行下面SQ语句

bash 复制代码
INSERT INTO db_book.user_info(userName,age,sex,moblie,pwd,birthday,avatar,num)VALUE('用户6',26,'男',16345678906,PASSWORD('123456abcd'),'2024-03-01',NULL,20666);
4.2 MD5
bash 复制代码
INSERT INTO db_book.user_info(userName,age,sex,moblie,pwd,birthday,avatar,num)VALUES('用户7',27,'男',17645678907,MD5('123456abcd'),'1996-06-21',NULL,20670);

执行结果

查询user_info表数据

4.3 ENCODE

注意:mysql8.0 已经找不到ENCODE()函数了,可以使用MD5函数或其他函数代替

在mysql8.0以下版本执行下面SQ语句

bash 复制代码
INSERT INTO db_book.user_info(userName,age,sex,moblie,pwd,birthday,avatar,num)
VALUES('用户8',28,'男',17645678907,MD5('23456ad'),'1995-06-21',ENCODE('https://abcd.avatar','ak'),20680);
4.4 DECODE

注意:mysql8.0 已经找不到DECODE()函数了,可以使用MD5函数或其他代替

在mysql8.0以下版本执行下面SQ语句

bash 复制代码
SELECT DECODE(avatar,'ak') FROM db_book.user_info WHERE num = 20680;

推荐

MySQL:常用的SQL语句

相关推荐
飞翔的佩奇1 小时前
Java项目: 基于SpringBoot+mybatis+maven+mysql实现的图书管理系统(含源码+数据库+答辩PPT+毕业论文)
java·数据库·spring boot·mysql·spring·毕业设计·图书管理
一 乐2 小时前
基于vue船运物流管理系统设计与实现(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端·船运系统
jerry6093 小时前
注解(Annotation)
java·数据库·sql
lwprain4 小时前
springboot 2.7.6 security mysql redis jwt配置例子
spring boot·redis·mysql
vcshcn5 小时前
DBASE DBF数据库文件解析
数据库·dbase
AIGC大时代6 小时前
对比DeepSeek、ChatGPT和Kimi的学术写作撰写引言能力
数据库·论文阅读·人工智能·chatgpt·数据分析·prompt
如风暖阳6 小时前
Redis背景介绍
数据库·redis·缓存
lingllllove7 小时前
Redis脑裂问题详解及解决方案
数据库·redis·缓存
字节全栈_BjO7 小时前
mysql死锁排查_mysql 死锁问题排查
android·数据库·mysql
微光守望者8 小时前
Redis常见命令
数据库·redis·缓存