一.常见的数据库对象
对象 | 描述 |
---|
表(TABLE) | 存储数据的逻辑单元,以行和列的形式存在 | 数据字典 | 系统表,存放数据库相关信息的表,系统表的数据通常由数据库系统维护,程序员通常不应该修改,只可查看 | 约束(CONSTRAINT) | 执行数据校验的规则,用于保证数据完整性的规则 | 视图(VIEW) | 一个或者多个数据表里的数据的逻辑显示,视图并不存储数据 | 索引(INDEX) | 用于提高查询性能,相当于书的目录 | 存储过程(PROCEDURE) | 用于完成一次完整的业务处理,没有返回值,但可通过传出参数将多个值传给调用环境 | 存储函数(FUNCTION) | 用于完成一次特定的计算,具有一个返回值 | 触发器(TRIGGER) | 相当于一个事件监听器,当数据库发生特定事件后,触发器被触发,完成相应的处理 |
二.视图(VIEW)
一.为什么要使用视图?
1.帮我们使用表的一部分而不是所有的表 2.针对不同的用户制定不同的查询视图
二.对于视图的理解
1.视图是一种虚拟表,本身不具有数据,占用很少的内存空间。 2.视图建立在已有表的基础上,视图赖以建立的这些表称为基表。 3.视图的创建和删除只影响视图本身,不影响对应的基表。但对视图中的数据进行增删改时,基表中的数据也会发生相同的变化,反之亦然。 4.向视图提供数据内容的语句为SELECT语句,可以将视图理解为存储起来的SELECT语句
三.创建视图
语法:
CREATE VIEW 视图名称【字段列表】 AS 查询语句
1.在create view 语句中嵌入子查询
CREATE VIEW 视图名称 AS 查询语句
2.如何创建视图
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.实际项目中,如果视图过多,会导致数据库维护的成本问题。
|