【Mysql基础】五.TCL语言(事务控制)

一.常见的数据库对象

对象 描述
表(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.实际项目中,如果视图过多,会导致数据库维护的成本问题。

上一篇:Linux环境变量 set env export区别


下一篇:Linux shell编程(五): Linux文件权限管理