数据库管理与高可用 第五章数据库函数与创建数据库过程

数据库管理与高可用 第五章数据库函数与创建数据库过程

一: 数据库函数

1.1: 数学函数

数学函数 描述
abs(x) 返回 x 的绝对值 绝对值
rand() 返回 0 到 1 的随机数 rand边缘
mod(x,y) 返回 x 除以 y 以后的余数 取余
power(x,y) 返回 x 的 y 次方 power快速前进
round(x) 返回离 x 最近的整数 round整数
round(x,y) 保留x 的y 位小数四舍五入后的值
sqrt(x) 返回 x 的平方根 sqrt 平方根
truncate(x,y) 返回数字 x 截断为 y 位小数的值 truncate 截取
ceil(x) 返回大于或等于 x 的最小整数 ceil装天花板
floor(x) 返回小于或等于 x 的最大整数 floor 地板
greatest(x1,x2...) 返回集合中最大的值
least(x1,x2...) 返回集合中最小的值

1.2: 聚合函数

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

1.3: 字符串函数

字符串函数 描述
length(x) 返回字符串 x 的长度 length 长度
trim() 返回去除指定格式的值 trim 修剪,截除,去除空格只能去除两端的空格
concat(x,y) 将提供的参数 x 和 y 拼接成一个字符串 concat 合并
upper(x) 将字符串 x 的所有字母变成大写字母 upper上面的
lower(x) 将字符串 x 的所有字母变成小写字母 lower 下面的
left(x,y) 返回字符串 x 的前 y 个字符 向左取值
right(x,y) 返回字符串 x 的后 y 个字符 向右取值
repeat(x,y) 将字符串 x 重复 y 次 repeat 重复
space(x) 返回 x 个空格 space 空间,空格
replace(x,y,z) 将字符串 z 替代字符串 x 中的字符串 y replace 替换
strcmp(x,y) 比较 x 和 y,返回的值可以为-1,0,1 转化为ASCII码比较 strcmp 比较字符串
substring(x,y,z) 获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串 substring截取字符串
reverse(x) 将字符串 x 反转 reverse 取反 ,反转

1.4: 日期时间函数

字符串函数 描述
curdate() 返回当前时间的年月日 取现在日期
curtime() 返回当前时间的时分秒 取现在时间
now() 返回当前时间的日期和时间 现在是什么时候
month(x) 返回日期 x 中的月份值
week(x) 返回日期 x 是年度第几个星期
hour(x) 返回 x 中的小时值
minute(x) 返回 x 中的分钟值
second(x) 返回 x 中的秒钟值
dayofweek(x) 返回 x 是星期几,1 星期日,2 星期一
dayofmonth(x) 计算日期 x 是本月的第几天
dayofyear(x) 计算日期 x 是本年的第几天

1.5: 存储过程

//格式
#定义存储过程

delimiter $$
create procedure存储过程名(in 参数名 参数类型)
begin
#定义变量
declare变量名变量类型
#变量赋值
set 变量名 = 值
sql语句1;
sql语句2;
..
sql语句n;
end $$
delimiter ;

#调用存储过程
call存储过程名(实际参数);
#查询存储过程
show procedure status where db=‘数据库‘;
#删除存储过程
drop procedure存储过程名;

示例:1

mysql> delimiter $$
mysql> create procedure myrole()                   //创建存储过程,名字为myrole
    -> begin
    -> select name,score from accp;
    -> end $$
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> call myrole();

示例:2

mysql> delimiter $$
mysql> create procedure myschool(in my_name varchar(10))
    -> begin
    -> select name score from accp where name=my_name;
    -> end$$
Query OK, 0 rows affected (0.01 sec)

mysql> delimiter ;
mysql> show procedure status where db=‘school‘;

示例3:

mysql> delimiter $$
mysql> create procedure myupdate(in my_score decimal(5,2))
  -> begin
    -> declare hob int(3);
    -> if my_score >= 80 then
    -> set hob = 1;
    -> else
    -> set hob = 2;
    -> end if;
    -> update accp set score=my_score,hobby=hob where name=‘zhangsan‘;
    -> end$$
Query OK, 0 rows affected (0.06 sec)
//修改名为张三的分数和hobby,修改zhangsan的hobby=2,score=75
mysql> delimiter ;
mysql> call myupdate(75);

数据库管理与高可用 第五章数据库函数与创建数据库过程

上一篇:从汇编的角度看pdb文件


下一篇:linux安装Oracle11G