Mysql之函数和视图

141 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情

今天讲的是MySQL函数和视图

MySQL函数

常用函数

太多了,可以自己查看:MySQL函数

下面列举一些,可以跳过

/*数学函数*/
--绝对值
select abs(-1) --1
​
--向上取整
select ceiling(1.2) --2
​
--向下取整
select floor(1.8) --1
​
--返回随机数
select rand() --0~1间的随机数
​
--判断一个数的符号
select sing() --正数返回1,负数返回-1
​
/*字符串函数*/
--返回字符串的长度
select char_length("abc") --3
​
--拼接字符串
select concat('a', 'b', 'c') --abc
​
--查询,从某个位置开始替换某个长度
select insert('abc', 1, 2, 'def') --adef
​
--将所有字母转换为小写字母
select lower('abAB') --abab
​
--将所有字母转换为大写字母
select lower('abAB') --ABAB
​
/*时间和日期函数*/
--获取当前日期
select current_date()
​
--获取当前日期
select curdate()
​
--获取当前的时间
select now()
​
--获取本地时间
select localtime()
​
--获取系统时间
select sysdate()

聚合函数

注意:聚合函数不能放在where中,因为执行到where时还没有形成结果集

聚集函数只能用于 select 子句和 having 子句中

函数名称描述
count()计数
sum()求和
avg()平均值
max()最大值
min()最小值
......

count的几个使用方法区别

select count(studentname) from student; --会忽略所有的null值
select count(*) from student; --不会忽略所有的null值
select count(1) from student; --不会忽略所有的null值

数据库级别的MD5加密(扩展)

MD5不可逆,但每个值的md5都是一样的

create table `testmd5` (
    id int(4) not null,
    name varchar(20) not null,
    pwd varchar(50) not null,
    primary key(id)
)engine = innodb default charset = utf8
​
--明文密码
insert into testmd5 values (1, 'zhangsan', '123456'), (2, 'lisi', '123456'), (3, 'wangwu', '123456');
​
--加密全部的密码
update testmd5 set pwd = MD5(pwd)
​
--插入的时候加密
insert into testmd5 values(4, 'xiaoming', MD5('123456'));

如何校验:将用户传入的密码进行md5加密,然后对比加密后的值

视图

什么是视图

定义:视图是从一个或多个基本表导出的表, 是一个虚表。一旦基本表中的数据发生变化,从视图查询出的数据也就变了。

视图就是站在不同角度去看待同一份数据

创建查询视图

格式:

create view 视图名 [列名, 列名]
as 子查询(DQL)
[with check option];

样例:

create view dept2_
as select student.name, age
from student
where age <= 18;

能否使用order by 和 distinct 取决于具体系统的实现。

其中列名在下列情况下不可省略:

  1. 某个目标列不是单纯的属性名,是聚集函数或列表达式
  2. 多表连接时选出了几个同名列作为视图的字段
  3. 需要在视图中为某个列启用新的更适合的名字

如果加上最后的with check option,那么后面在视图里增加、删除、修改的时候会自动加上子查询里的条件,不满足就不会执行。

视图也可以建立在一个或多个视图上面。

可以根据需要增加新的派生属性列

如果修改了基本表的结构,那么导出的视图就不能使用。需要在修改之前删除该表导出的视图,然后重建视图

视图的查询和表的查询是一样。

视图和表一样以文件形式存储,不会消失。

删除视图

格式:

drop view 视图名 [cascade];

如果该视图上还有其他视图,则用cascade级联删除。

更新视图

对视图的修改都是自动转换为对基本表的修改,如果无法唯一的有意义转换,那么就无法修改。

视图的作用

  • 能够简化用户的操作
  • 使用户能以多种角度看待同一种数据
  • 对重构数据库提供了一定程度的逻辑独立性
  • 能够对机密数据提供安全保护
  • 适当利用可以更清晰的表达查询