对象 | 描述 |
---|---|
表(TABLE) | 存储数据的逻辑单元,以行和列的形式存在 |
数据字典 | 系统表,存放数据库相关信息的表,系统表的数据通常由数据库系统维护,程序员通常不应该修改,只可查看 |
约束(CONSTRAINT) | 执行数据校验的规则,用于保证数据完整性的规则 |
视图(VIEW) | 一个或者多个数据表里的数据的逻辑显示,视图并不存储数据 |
索引(INDEX) | 用于提高查询性能,相当于书的目录 |
存储过程(PROCEDURE) | 用于完成一次完整的业务处理,没有返回值,但可通过传出参数将多个值传给调用环境 |
存储函数(FUNCTION) | 用于完成一次特定的计算,具有一个返回值 |
触发器(TRIGGER) | 相当于一个事件监听器,当数据库发生特定事件后,触发器被触发,完成相应的处理 |
1.帮我们使用表的一部分而不是所有的表
2.针对不同的用户制定不同的查询视图
1.视图是一种虚拟表,本身不具有数据,占用很少的内存空间。
2.视图建立在已有表的基础上,视图赖以建立的这些表称为基表。
3.视图的创建和删除只影响视图本身,不影响对应的基表。但对视图中的数据进行增删改时,基表中的数据也会发生相同的变化,反之亦然。
4.向视图提供数据内容的语句为SELECT语句,可以将视图理解为存储起来的SELECT语句
语法:
CREATE VIEW 视图名称【字段列表】 AS 查询语句
CREATE VIEW 视图名称
AS 查询语句
2.1针对于单表
CREATE VIEW vu_emp1 AS SELECT employee_id,last_name,salary FROM emps;
情况1:查询基表中的内容
查询语句中的别名会作为view中的字段名
方式1
CREATE VIEW vu_emp2 AS SELECT employee_id emp_id,last_name lname,salary FROM emps WHERE salary>8000;
方式2
CREATE VIEW vu_emp3(emp_id,name,monthly_sal) AS SELECT employee_id,last_name,salary FROM emps WHERE salary>8000;
情况2:查询基表中不存在的内容(通过基表中的内容计算得出)
查询平均工资作为新视图(原表中不存在的元素‘平均工资’)
CREATE VIEW vu_emp_sal AS SELECT department_id,AVG(salary) avf_sal FROM emps WHERE department_id IS NOT NULL GROUP BY department_id;
2.2针对于多表
CREATE VIEW vu_emp_dept AS SELECT e.employee_id,e.department_id,d.department_name FORM emps e JOIN depts d ON e.`department_id`=d.`department_id`;
利用视图对数据进行格式化
CREATE VIEW vu_emp_dept1 AS SELECT CONCAT(e.last_name,'(',d.department_name,')') emp_info FROM emps e JOIN depts d ON e.`department_id`=d.`department_id`;
2.3
基于视图创建视图
CREATE VIEW emp4 AS SELECT employee_id,last_name FROM vu_emp1;
一.查看数据库的表对象,视图对象
SHOW TABLES;
二.查看视图的结构
DESC vu_emp1;
三.查看视图的属性信息
SHOW TABLE STATUS LIKE 'vu_emp1';
四.查看视图的详细定义信息
SHOW CREATE VIEW vu_emp1;
5.1可以”修改“的视图中的数据的情况
更新视图数据会导致基表中的数据也被修改
更新基表的数据也会导致视图中的数据被修改
5.2不能修改的视图中的情况是
基表中不存在一对一关系的内容,无法进行修改(即通过创建视图时对基表进行的计算产生的新内容)
方式一:
CREATE OR REPLACE VIEW vu_emp1 AS SELECT employee_id,last_name,salary,email FROM emps WHERE salary>7000;
方式二:
ALTER VIEW vu_emp1 AS SELECT employee_id,last_name,salary,email FROM emps WHERE salary>7000;
DROP VIEW IF EXISTS vu_emp4;
1.操作简单
2.减少数据冗余
3.数据安全
4.适应灵活多变的需求
5.能够分解复杂的查询逻辑
1.如果实际数据表的结构变了,需要及时对相关视图进行相应的维护,维护比较复杂。
2.实际项目中,如果视图过多,会导致数据库维护的成本问题。