持续创作,加速成长!这是我参与「掘金日新计划 · 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 取决于具体系统的实现。
其中列名在下列情况下不可省略:
- 某个目标列不是单纯的属性名,是聚集函数或列表达式
- 多表连接时选出了几个同名列作为视图的字段
- 需要在视图中为某个列启用新的更适合的名字
如果加上最后的with check option,那么后面在视图里增加、删除、修改的时候会自动加上子查询里的条件,不满足就不会执行。
视图也可以建立在一个或多个视图上面。
可以根据需要增加新的派生属性列
如果修改了基本表的结构,那么导出的视图就不能使用。需要在修改之前删除该表导出的视图,然后重建视图
视图的查询和表的查询是一样。
视图和表一样以文件形式存储,不会消失。
删除视图
格式:
drop view 视图名 [cascade];
如果该视图上还有其他视图,则用cascade级联删除。
更新视图
对视图的修改都是自动转换为对基本表的修改,如果无法唯一的有意义转换,那么就无法修改。
视图的作用
- 能够简化用户的操作
- 使用户能以多种角度看待同一种数据
- 对重构数据库提供了一定程度的逻辑独立性
- 能够对机密数据提供安全保护
- 适当利用可以更清晰的表达查询