主流数据库之MySQL函数和MySQL数据操作基础知识及示例
文章目录
目录
文章目录
前言
4.3、MySQL函数
数学函数
字符串函数
日期和时间函数
条件判断函数
系统信息函数
加密函数
其他函数
4.4、MySQL数据操作
数据管理
数据添加
插入单行或多行记录
利用子查询插入数据
简单数据查询
数据更新
数据删除
数据删除(TRUNCATE)
前言
本文主要讲了关于数据库中的MySQL函数以及MySQL数据操作,其实一些操作在前边也有写过,大家可以去专栏找对应的文章。另外,走过路过的小伙伴们点个赞和关注再走吧,欢迎评论区交流,大家一起努力一起成长吧!
笔芯
4.3、MySQL函数
MySQL函数按功能不同主要分为以下几类:
数学函数
数学函数主要用于处理数字,包括整型、浮点数等。
数学函数包括绝对值函数、正弦函数、余弦函数、获取随机数的函数等。如下:
abs:返回表达式的绝对值
acos:反余弦函数,返回以弧度表示的角度值
asin:反正弦函数,返回以弧度表示的角度值
atan:反正切函数,返回以弧度表示的角度值
ceil:返回大于或等于指定数值表达式的最小整数
cos:返回余弦值
degree:弧度值转换为角度值
exp:返回给定表达式为指数的e值
floor:返回小于或等于指定数值表达式的最大整数
greatest:获得一组数中的最大值
Least:获得一组数中的最小值
log:返回给定表达式的自然对数
log10:返回给定表达式的以10 为底的对数
PI:常量,圆周率
pow:返回给定表达式的指定次方的值
radians:角度值转换为弧度值
rand:返回0~1之间的随机noat数
round:返回指定小数的位数的表达式的值
sign:返回某个数的符号
sin:返回正弦值
sqrt:返回给定表达式的平方根
tan:返回正切值
例:
SELECT mod(31,8), floor(3.67), ceil(4.71), log(2.7);
例:用随机数rand()和四舍五入round()输出10~50和15~55之间的任意整数。随机函数rand()返回的随机数大于等于0小于1。 round(x,y)返回x保留到小数点后y位的值,在截取时进行四舍五入处理。
SELECT RAND(),ROUND(40*RAND(),0), 10+round(40*rand(),0),15+round(40*rand(),0);
字符串函数
主要用于处理字符串数据和表达式。MySQL中的字符串函数包括计算字符串长度函数、合并函数、替换函数、比较函数和查找字符串位置函数等。如下:
char_length:返回字符串中字符的个数。
concat:返回连接参数产生的字符串
left:返回从字符串左边开始指定个数的字符
length:返回给定字符串字节长度
lower:将大写字符数据转换为小写字符数据后返回字符表达式
trim:删除起始和结束空格后返回字符表达式
replace:用第3个表达式替换第一个字符串表达式中出现的所有第2个给定字符串表达式
repeat:以指定的次数重复字符表达式
reverse:返回字符表达式的反转
right:返回从字符串右边开始指定个数的字符
ltrim/rtrim:删除起始/尾随空格后返回一个字符串
space:返回由重复的空格组成的字符串
substring:求子串函数
upper:返回将小写字符数据转换为大写的字符表达式
例:用concat()函数连接字符串,lower()函数转变为小写字母。concat()函数返回来自于参数连接的字符串,如果任一参数是null,则返回null。可以有超过2个的参数。数字参数会被变换为等价的字符串形式。
SELECT lower(concat("MY","SQL","8.0")),concat("ABC",null,"DEF"),
concat("ABC","DEF");
例:用trim()函数可删除字符串两侧的空格。再用concat()函数连接起来。
SELECT '( qwe )', concat('(',trim(' qwe '),')');
例:用substring()函数返回指定字符串(如下为第二位到第四位,如果只有一个数字,则表示从那一位到最后),再用reverse()逆序输出
SELECT substring('ABCDEF',2,4), reverse(substring('ABCDEF',2));
日期和时间函数
主要用于处理表中的日期和时间数据。日期和时间函数包括获取当前日期的函数、获取当前时间的函数、计算日期的函数和计算时间的函数等。
curdate:获取当前系统的日期
curtime:获取当前系统的时间
date_add:可以对日期和时间进行加法运算
date_sub:可以对日期和时间进行减法运算
datediff:计算两个日期相隔的天数
date_format:用来格式化日期值
day:获取指定日期的日期整数
dayname:以英文名方式显示,返回指定日期是星期几,如Tuesday等
dayofmonth:返回指定日期在一个月中的序数
dayofweek:返回指定日期在一个星期中的序数
dayofyear:返回指定日期在一年中的序数
hour:返回指定时间的小时数
minute:返回指定时间的分钟数
month:获取指定日期的月份整数
now/sysdayte:返回当前日期和时间
quarter:获取指定日期的季度整数
second:返回指定时间的秒钟数
time_format:用来格式化时间值
例:利用curdate()返回当前日期,curtime()返回当前时间
SELECT curdate(),curtime();
例:返回的指定日期是在一年中第几天、一个月中的第几天、一星期中的第几天(一个星期中第一天是周天来算)。
SELECT dayofyear(20200130),dayofmonth('2022-09-18'),dayofweek(now());
date_add()和date_sub()函数可以分别用来对日期和时间进行增加和减少日期值。
格式:date_add | date_sub(date, interval int keyword);
其中: date表示日期和时间,interval关键字表示一个时间间隔。以下为关键字
以及对应的间隔值的格式
day:日期
minute:分钟
day_hour:日期∶小时
minute_second:分钟∶秒
day_minute:日期∶小时∶分钟
month:月
day_second:日期∶小时∶分钟∶秒
second:秒
hour:小时
year:年
hour_minute:小时∶分钟
year_month:年-月
hour_ second:小时∶分钟∶秒
例:计算指定时间的15分钟前是什么时间(在指定时间上减15分钟)。计算指定时间的15分钟后是什么时间(在指定时间上加15分钟)
SELECT date_sub('2020-09-30 10:10:10' , interval 15 minute),DATE_ADD('2020-09-30 10:10:10',INTERVAL 15 minute);
例:距离9月18日还有多少天。用datediff计算两个日期相隔的天数(嘿嘿嘿,还有168天过生日)
SELECT datediff('2020-12-31',now());
date_format()和time_format()函数可以用来格式化日期和时间值。
格式:date_format/ time_format(date | time, fmt)
date和time是需要格式化的日期和时间值;fmt是日期和时间值格式化的形式。
关键字和间隔值的格式如下:
%oa:缩写的星期名(Sun,Mon...>
%p:AM或PM
%b:缩写的月份名(Jan,Feb...)
%r:时间,12小时的格式
%d:月份中的天数
%S:秒(00,01)
%H %h:小时,分别为24小时和12小时格式
%T:时间,24小时的格式
%i:分钟(00,01..>
%ow :一周中的天数(0,1)
%j:一年中的天数((001,002..)
%w:长型星期的名字(Sunday,Monday...)
%m:月份,2位(00,01...)
%Y:年份,4位
例:按照指定格式码输出日期和输出时间。
SELECT date_format(now(), '%W,%d,%m, %Y ,%T,%p'),
time_format('16:20:10' ,' %H %i %S');
条件判断函数
条件判断函数也称为控制流程函数,根据满足的不同条件,执行相应的流程。
if(expr,v1,v2):如果表达式expr是true(expr<>0 and expr<>NULL),则返回v1,否则返回v2。
ifnull(v1,v2):假如v1不为NULL,则返回v1,否则返回v2。
case expr when v1 then r1 ...[else rn] end
如果expr值等于某个vn,则返回对应then后面的结果,如果所有值都不相等,则返回else后面的rn。
例:使用if()函数进行条件判断
SELECT if(1>2,1,2),if(1>2,'yes' ,'no');
例:用ifnull()函数进行条件判断
SELECT ifnull(1,2),ifnull(null,10),ifnull(1/0,'error');
例:用case when语句执行分支操作
SELECT case 2 when 1 then 'one' when 2 then 'two' else 'more' end;
系统信息函数
系统信息函数用来查询MySQL数据库的系统信息。
函数和对应的功能如下:
Database():返回当前数据库名
benchmark(n,expr):将表达式expr重复运行n次
charset(str):返回字符串str的字符集
connection_id():返回当前客户连接服务器的次数
found_rows():将最后一个MySQL>select查询(没有以limit语句进行限制)返回的记录行数返回
get_lock(str,dur):获得一个由字符串str命名的并且有dur秒延时的锁定
is_free_lock(str):检查以str命名的锁定是否释放
last_insert_id():返回由系统自动产生的最后一个autoincrement id的值
master pos_wait(log,pos,dur):锁定主服务器dur秒直到从服务器与主服务器的日志log指定的位置pos同步
release_lock(str):释放由字符串str命名的锁定
user()或system_user():返回当前登录用户名
version():返回MySQL服务器的版本
例:返回MySQL服务器的版本、当前数据库名和当前用户名信息,并查看当前用户连接MySQL服务器的次数。
SELECT version(), database(), user(), connection_id();
加密函数
加密函数主要用来对数据进行加密和界面处理,以保证某些重要数据不被人获取,从而保证数据库安全。函数如下:
MD5(str):为字符串算出一个md5 12s比特校验和。该值以32位十六进制数字的二进制字符串形式返回。
SHA(str):从原明文密码str计算并返回加密后的密码字符串,当参数为NULL时返回NULL。比md5更加安全。
SHA(str,hash_length):使用hash_length作为长度,加密str。 hash_length支持的值为224、256、384、512和0。其中0等同于256
例:用password(str)函数加密
SELECT md5('ice'), sha('ice'), sha2('ice',256);
其他函数
格式化函数:FORMAT(x,n)把数值x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串的形式返回。若n为0,则返回结果函数不含小数部分。
例:SELECT format(12345.123456,4), format(12345.1,4), format(12345.1,0);
改变字符集的函数:CONVERT(..USING...)用于在不同的字符集之间转换数据
例:将给定字符串字符集转为utf8
SELECT charset('asd'),charset(convert('asd' using utf8));
4.4、MySQL数据操作
数据管理
使用数据操纵语言(DML操作包括对表数据的添加、更新、删除操作。)和数据查询语言(DQL操作包括对表数据的查询操作)可以对表中数据进行管理。
数据添加
使用INSERT INTO语句添加数据
插入单行或多行记录
INSERT INTO 表名 [(列名1,列名2...)] VALUES(列名1的数据1,列名2的数据1...),(列名1的数据2,列名2的数据2)..;
其中:
如果INTO子句中没有指明任何列名,则VALUES子句中列值的个数、顺序、类型必须与表中列的个数、顺序、类型相匹配
如果在INTO子句中指明了列名,则VALUES子句中提供的列值的个数、顺序、类型必须与指定列的个数、顺序、类型按位置对应
【示例】向部门表插入一行记录
INSERT INTO department(deptno,dname,loc)VALUES(50,'name50','loc50');
例:向员工表插入多条记录
INSERT INTO employee VALUES
(1001,'zs ','PROGRAMMER',1002,'2015-10-20',1000,null,50),
(1002,'ls','MANAGER',null,'2010-01-01',3000,500,50),
(1003, 'ww','PROGRAMMER',1002,'2012-12-30',2000,200,50);
例:向员工表的指定字段插入数据
INSERT INTO employee(empno,ename,job,hiredate,sal,deptno)
VALUES(1004,'test ,'CLERK' ,2016-10-20',2000,50);
利用子查询插入数据
INSERT INTO 表名1 SELECT *|[列名1...] FROM 表名2;
向表中插入其他表的数据,这也是成批插入数据的一种方式。但注意要求要有相同的结构。
例:将DEPT表的记录插入DEPARTMENT表中(要注意自己数据库中是否有这两个表,以及DEPT表中有没有数据哦。)
INSERT INTO department SELECT*FROM dept;
例:将EMP表的记录插入EMPLOYEE表中
INSERT INTO user(id,name,age,email)
SELECT id,name,age,email FROM user1;
简单数据查询
SELECT * | 列名1 ,列名2...]FROM 表名 WHERE condition;其中:
“*表示查询该表中的所有列
WHERE用于指定查询条件。如果不省略,则在执行SELECT语句时,系统会
首先根据WHERE子句的条件表达式condition从FROM子句指定的基本表中查找满足条件的记录,再按SELECT子句中的目标列或目标表达式形成结果表。
例:查询员工表中所有列的记录
SELECT * FROM employee;
例:查询符合条件的员工的部分列的信息
SELECT empno,ename,job,sal,comm
FROM employee
WHERE comm IS NULL;
数据更新
UPDATE 表名
SET col_name1=expr1 [,col_name2=expr2 ...][WHERE子句]
说明:
set子句:根据where子句中指定的条件,对符合条件的数据行进行修改。若语句中不设定where子句,则更新所有行。
expr1、expr2……可以是常量、变量或表达式。可以同时修改所在数据行的多个列值,中间用逗号隔开。
例:更新表中所有数据
UPDATE employee SET deptno=50;
将员工表中有奖金的员工的奖金增加200元
UPDATE employee SET comm=comm+200 WHERE comm IS NOT NULL;
数据删除
DELETE FROM 表名 [WHERE condition];
其中WHERE指定被删除记录符合的条件,若省略则删除所有记录。
例:
删除所有员工数据
DELETE FROM employee;
删除1004号员工数据
DELETE FROM employee WHERE empno=1004;
注意:删除的数据与其他表有外键联系时,会提示提示删除失败。应该先删除外键约束子表中所有记录,然后再删除主表相应记录
数据删除(TRUNCATE)
清空数据表
TRUNCATE TABLE 表名;
注意:不仅清空表的全部内容,同时自增长ID也会从0开始。
主流数据库之MySQL函数和MySQL数据操作基础知识及示例相关推荐
- datagrid出现相同两组数据_stata 数据操作基础知识:以一篇论文数据操作为例
stata 数据操作基础知识:以一篇论文数据操作为例 上节回顾及问题 统计学学习大图景 数据描述 分位数回归 存在的问题: 1.学了就要多使用,哪怕生搬硬套也要多用 2.时间序列的方法,大家可以操作, ...
- 【MySQL】对JSON数据操作(全网最全)
[MySQL]对JSON数据操作(全网最全) 总所周知,mysql5.7以上提供了一种新的字段格式-json,大概是mysql想把非关系型和关系型数据库一口通吃,所以推出了这种非常好用的格式,这样,我 ...
- 大数据入门培训之大数据开发基础知识学习
在目前相信大多数IT开发人员对于人工智能+大数据并不陌生,使用的场景也越来越广,日常开发中前端同学也逐渐接触了更多与大数据相关的开发需求.因此对大数据知识也有必要进行一些学习理解,带大家来学习了解一下 ...
- 微信小程序开发数据缓存基础知识辨析以及运用实例
微信小程序开发数据缓存基础知识辨析以及运用实例 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的 ...
- 【阿里云天池大赛赛题解析】 刷书笔记 Lesson 1 数据探索基础知识
文章目录 数据探索基础知识 1. 双变量分析 1.1 计算相关性 1.2 卡方检验 1.3 小提琴图 2. 缺失值 2.1 处理方法 3. 异常值 3.1 检测方法 3.1.1 箱线图检测法 3.1. ...
- 4. 数据统计分析基础知识
数据统计分析基础知识 数据统计分析基础知识 什么是数据分析 数据分析六步曲 明确分析目的和内容 数据收集 数据处理 数据分析 数据展现 报告撰写 Reference 什么是数据分析 专业 有针对性的收 ...
- sqlite mysql_两款主流数据库对比,SQLite和MySQL哪款是你的菜?
数据库是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式 ...
- phpstudy mysql创建表_MySQL_Mysql入门基础 数据库创建篇,1.创建数据表---基础(高手跳 - phpStudy...
Mysql入门基础 数据库创建篇 1.创建数据表---基础(高手跳过) 正统方法:create [TEMPORARY] table 表名 [if not exists] (创建的列项定义) [表的选项 ...
- MySQL数据库(17):高级数据操作-删除数据
高级数据操作-删除数据 1.删除数据应该使用where进行条件控制 delete from 表名 where 条件; 2.删除数据可以使用limit来限制删除数量 delete from 表名 whe ...
- mysql 算子 谓词_[SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式
SQL 基础知识梳理(六)- 函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为"参数",输出值称 ...
最新文章
- Hibernate里自定义UserType时取不到值的问题
- 程序员法律考试笔记(2)-依法治国
- 抑郁症的前期体现有哪些
- windows 的 wsl 命令
- Response.Redirect 产生的“正在中止线程”错误
- Linux系统管理(5)——使用yum快速搭建LAMP环境【方便快捷版】
- 从此,我就踏入IT行业拉
- C#中对 API函数的调用
- UML设计中的箭头详解
- 在MATLAB中快速画圆(给出圆心坐标和半径就能直接画的那种)
- MATLAB读取nc文件
- 牛客网在线编程Javascript输入输出
- linux yum apr,CentOS安装、配置APR和tomcat
- Windows 2016 服务器安全配置和加固
- Bat 脚本学习 (基础篇)
- 无线点菜服务器英文怎么拼,无线点菜系统(客户端和服务器端交互)
- 课程表的实现(基于强智科技教务系统)
- Java程序员,面试必读
- 华为手机上html怎么打开,华为手机root权限怎么开启?详细的步骤以及图文教程...
- 新电脑安装win10正版系统(家庭、专业等)