(七)MySQL数据库高阶语句之函数、存储


一、数据库函数

1、数学函数

常用的数学函数如表所示

数学函数描述
abs (x)返回x的绝对值;绝对值就是永远是正数,0的绝对值是0
rand ()返回0到1的随机数
mod(x, y)返回x除以y以后的余数
power (X,y)返回x的y次方
round(x)返回离x最近的整数
round(x, y)保留x的y位小数四舍五入后的值
sqrt (x)返回x的平方根
truncate(x,y)返回数字x截断为y位小数的值
ceil (x)返回大于或等于x的最小整数
floor (x)返回小于或等于x的最大整数
greatest. (x1 2…)返回集合中最大的值
least (x1, x2…)返回集合中最小的值

实例:

select abs(-2);		##返回-2的绝对值

在这里插入图片描述

select rand();		##0-1的随机数

在这里插入图片描述

select rand()*100;		##返回随机数

在这里插入图片描述

select mod(5,2);		##取余

在这里插入图片描述

select power(2,3);		##2的3次方

在这里插入图片描述

selct round (1.49)		##判断离1.49最近的整数

在这里插入图片描述

select round(1.5);		##判断离1.5最近的整数

在这里插入图片描述

select round(1.893,1);		##1.893保留小数点后1位;四舍五入

在这里插入图片描述

select sqrt(4);		##返回4的平方根

在这里插入图片描述

select sqrt(5);		##返回5的平方根

在这里插入图片描述

select truncate(1.896,2);		##保留小数点后2位,但truncate函数不会四舍五入

在这里插入图片描述

select ceil(5.2);		##大于等于5.2的整数

在这里插入图片描述

select floor(5.0)		##返回小于等于5.0的最大整数

在这里插入图片描述

select greatest(5,9,7);		##返回5.9.7的最大值

在这里插入图片描述

select least(5,9,7);		##返回5.9.7的最小值

在这里插入图片描述

2、聚合函数

可以对数据库内的记录求和、平均值、最大值、最小值的操作
常用的聚合函数如表所示

avg()返回指定列的平均值
count()返回指定列中非NULL值的个数
min()返回指定列的最小值
max ()返回指定列的最大值
sum(x)返回指定列的所有值之和

实例

select sum(score) from www;		##返回分数的总和

在这里插入图片描述

select count(score) from www;		##进行分数的计数

在这里插入图片描述

select count(addr) from www;		##计数addr,null不会被计数

在这里插入图片描述

select avg(score)from www;		##计算成绩平均值

在这里插入图片描述

3、字符串函数

常用的字符串函数如表所示

length(x)返回字符串x的长度
trim()返回去除指定格式的值
concal (x,y)将提供的参数x和y拼接成一个字符串.
upper (x)将字符串x的所有字母变成大写字母.
lower (x)将字符串x的所有字母变成小写字母
left (x,y)返回字符串x的前y个字符
right (x, y)返回字符串x的后y个字符
repeat (x,y)将字符串x重复y次
space (x)返回x个空格.
replace(x, y, z)将字符串z替代字符串x中的字符串y
strcmp(x, y)比较x和y,小于返回-1,等于返回0,大于返回1,比较第一位不同的数字
substring (x,y,z)获取从字符串x中的第y个位置开始长度为z的字符串
reverse (x)将字符串x反转

实例:

select length('abcd');		##返回字符的长度

在这里插入图片描述

select trim('  lll');		##去除指定格式;头部的格式

在这里插入图片描述

select concat ('he','llo');		##将he和llo频次一个字符串

在这里插入图片描述

select concat ('he',trim(' llo'));	##还可以结合其他函数,比如trim

在这里插入图片描述

select upper('abC');		##将字符串x的所有字母变成大写格式

在这里插入图片描述

select lower('abC');		##所有字母变成小写

在这里插入图片描述

select right('hello',3);		##返回字符串hello的后3个字符

在这里插入图片描述

select concat(left('hello',2),right('hello',3));		##把字符串的前3个字母和后3个字母拼接起来

在这里插入图片描述

select repeat('ha',4);		##重复输出ha4次

在这里插入图片描述

select length(space(3));		##返回3个空格

在这里插入图片描述

select replace('hello','ll','aa');			##将hello中的ll替换成aa

在这里插入图片描述

select replace('lalhh','la','hh');

在这里插入图片描述

select strcmp(17,18);		##比较17,18,小于返回-1,等于返回0,大于返回1

在这里插入图片描述

select substring('adfgh4rf',3,4);  		##返回字符串第三个字符开始的4个字符

在这里插入图片描述

select reverse(left('123dfghj',3));		##返回字符串的前三个字符,然后反转输出

在这里插入图片描述

select left(reverse('123dfghj'),3);		##现将字符反转,再输出前三个字符

在这里插入图片描述

4、日期时间函数

字符串函数描述
curdate ()返回当前时间的年月日
curtime ()返回当前时间的时分秒
now ()返回当前时间的口期和时间
month (x)返回日期x中的月份值
week (x)返回日期x是年度第几个星期
hour (x)返回x中的小时值
minute (x)返回x中的分钟值
second(x)返回x中的秒钟值
dayofweek (x)返回x是星期几,1星期日,2星期一
replace(x, y, z)将字符串z替代字符串x中的字符串y
dayofmonth (x)计算日期x是本月的第几天
dayofycar (X)计算日期x是本年的第几天,返回年月日

实例

select curdate();
select curtime();

在这里插入图片描述

select now();		##返回当前时间

在这里插入图片描述

select month('2021-07-10');		##返回月份

在这里插入图片描述

select week('2021-07-10');		##返回当前日期是一年中的第几周

在这里插入图片描述

select hour(curtime());		##返回当前时间的小时

在这里插入图片描述

select minute(curtime());		##返回当前的分钟

在这里插入图片描述

select second(curtime());		返回当前的秒

在这里插入图片描述

select dayofweek(curdate());		##返回本周的第几天,周日为第一天
select dayofmonth(curdate());		##当前日期是当月的几号
select dayofyear(curdate());		##当年日期是今年的第几天

在这里插入图片描述

二、存储过程

1、概述

一组为了完成指定功能的sql语句的集合,将这些sql语句集合存储到一个指定的名称,使用时再进行调用;在执行时比传统的sql速度更快、执行速度更快
实例

mysql> delimiter @@			##修改结束符为@@
mysql> create procedure u()		##创建存储过程,过程名为u,不带参数
    -> begin									##过程提以关键字begin开始
    -> select * from qq;					##过程体语句
    -> end @@								##过程体以关键字end结束
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;						##将语句的结束符号恢复为分号
mysql> call u();							##调用存储过程
+------+-------+
| id   | score |
+------+-------+
|    1 |   100 |
|    2 |    88 |
|    3 |    89 |
+------+-------+
3 rows in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)
show create procedure u\G  ##查看存储过程

在这里插入图片描述

 show procedure status like 'u'\G			##查看指定存储过程;u不带%时就查找u一个,带上%会查找所有有u的内容

在这里插入图片描述

2、存储过程的参数

  • IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
  • OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
  • INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值( 值只能是变量)

3、删除存储过程

存储过程内容的修改方法是:删除原有存储过程,再创建相同的名称的存储。

DROP PROCEDURE IF EXISTS Proc;

实例

drop procedure if exists u;

在这里插入图片描述
在这里插入图片描述

MySQL 提供了一些高阶的查询语句用法,可以帮助我们更灵活、高效地进行数据查询。以下是一些常用的高阶用法: 1. 子查询: 子查询是将一个查询嵌套在另一个查询中的查询结构。它可以用作 `SELECT` 语句中的列、`FROM` 子句中的表、`WHERE` 子句中的条件等。 示例: ```sql SELECT column_name FROM table_name WHERE column_name IN (SELECT column_name FROM another_table WHERE condition); ``` 2. 联合查询: 联合查询用于将两个或多个查询的结果合并成一个结果集。可以使用 `UNION` 或 `UNION ALL` 运算符来执行联合查询。 示例: ```sql SELECT column_name FROM table1 UNION SELECT column_name FROM table2; ``` 3. 分页查询: 分页查询用于在结果集中进行分页显示数据。可以使用 `LIMIT` 子句指定要返回的记录数量,并使用 `OFFSET` 子句指定要跳过的记录数量。 示例: ```sql SELECT column_name FROM table_name LIMIT number_of_rows OFFSET offset_value; ``` 4. 排序: 可以使用 `ORDER BY` 子句对查询结果进行排序。可以按照一个或多个列进行升序或降序排序。 示例: ```sql SELECT column_name FROM table_name ORDER BY column_name ASC; ``` 5. 聚合函数和分组: 使用聚合函数(如 `SUM`、`AVG`、`COUNT` 等)可以对数据进行聚合计算。可以结合 `GROUP BY` 子句将结果集按照一个或多个列进行分组。 示例: ```sql SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; ``` 这些是一些常用的 MySQL 查询语句高阶用法,可以根据具体需求进行学习和使用。此外,MySQL 还提供了其他高级特性,如窗口函数、子查询优化、索引优化等,可以进一步提升查询性能和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值