函数&视图&索引

56 阅读3分钟

用于处理日期的函数

-- 获取当前日期
select curdate();
select current_date();
-- 获取当前时间
select curtime();
select current_time();
-- 获取当前的日期+时间
select now();
-- 从日期中找出对应的月份
select month(curdate());  -- 7
select monthname(curdate()); -- July
-- 找周
select week(curdate()) -- 29
-- 找年
select year(curdate()) -- 2024
-- 找周几
select weekday(curdate()) -- 2
-- 找周几的英文
select dayname(curdate()) -- Wednesday
-- 找小时
select hour(curdate()) -- 0  只有日期,没有时间 
select hour(curtime()) -- 15  
select hour(now())  -- 15
-- 找分钟
select minute(curdate()) -- 0 只有日期,没有时间 
select minute(curtime()) -- 30
select minute(now()) -- 30
-- 时间转字符串
select now(); 
select date_format(now(),"%Y/%m/%d %H:%i:%s");
-- 字符串转时间
select str_to_date('2020/01/20 12:01:01',"%Y/%m/%d %H:%i:%s");

用于处理字符串的函数

-- concat(arg1,arg2,arg3.....) 将arg拼接起来,如果任意arg是null就会返回null
select concat("%","a","%");  -- %a%
select * from emp e where e.ename like "%a%";
-- 将来在mybatis中sql语句只能向下面这么写...
select * from emp e where e.ename like concat("%","a","%");
select concat("%","a","%",null);  -- null
-- length(arg1) 返回arg1的长度 
select length("abc"); -- 3
select length("你好"); -- 6  返回6的原因:utf8采取的是unicode字符串编码,utf8里面一个中文字=3个字节,一个数字或字母表示1个字节
select length("你好我"); -- 9  返回9的原因:utf8采取的是unicode字符串编码,utf8里面一个中文字=3个字节,一个数字或字母表示1个字节

求数值的函数

abs 绝对值

sqrt 二次方根

mod 余数.....

视图:

定义:

视图是一个虚拟表,本身不存储数据,而是按照指定的方式进行查询。

就是一条select语句查询出来的结果集。

所以我们在创建视图的时候,主要工作就是在写这条查询的sql语句上。

作用:

权限控制,可以暴露想让用户看到的字段

语法:

create or replace view 视图的名 as select 字段 from 表名;

注意:

  1. 视图和基表(物理表)的数据是一一对应的

  2. 修改视图,也就意味修改基表

  3. 修改基表,也就意味修改视图

  4. 基于多个基表创建的视图,只能查询,不能修改和新增

-- 创建经理角色的视图:可以查看 所有20号部门员工的姓名,薪水
select ename,sal,deptno from emp e where e.deptno = 20;
create or replace view v_emp as select ename,sal,deptno from emp e where e.deptno = 20;

-- 创建一个多表视图,包含 员工号,员工姓名,部门号,部门地址的视图。
create or replace view v_emp_dept as select e.empno,e.ename,e.deptno,d.loc from emp e join dept d on e.deptno = d.deptno;

select * from v_emp_dept;

索引 做数据统计报表的时候 索引会常用

概念:

索引是对数据库表中的列(一列或者多列)的值进行排序的一种数据结构。

其实索引就相当于是目录。索引可以提高查询速度,但是占数据库内存。

优点:

提高检索的效率,可以通过索引对数据进行排序,降低CPU的消耗

缺点:

占用磁盘空间,降低更新表的效率。

分类:

  • 单列索引:

普通索引 没有任何限制 add index

唯一索引 索引中的列的值必须唯一 允许空值 add unique index

主键索引 特殊的唯一索引 一般是id 非空且唯一 常用

  • 组合索引: 常用

对表中多个字段进行索引的创建 add index(字段名,字段名)

遵循最左前缀原则(最左匹配原则)

  • 全文索引:

限制:只能在char varchar text 类型字段上面使用 优先级是最高的,先执行

show index from emp;
desc emp;
-- 创建一个普通索引
create index index_emp on emp(empno);
-- 删除索引
drop index index_emp on emp;
-- 创建一个主键索引