http://www.verejava.com/?id=1717413465805
知识点
1. 创建视图 ----重点
2. 删除视图
3. 创建复杂视图 ----重点
1 . 视图
视图是从实际的数据表中提取数据后形成的 虚拟表
1. 创建视图
CREATE [OR REPLACE] VIEW 视图名 [字段名...] AS 子查询
REPLACE : 如果视图存在则替换
例如:
创建一个员工表
CREATE TABLE emp
(
id int(10),
name VARCHAR(20),
job VARCHAR(20),
dept_no int(10)
);
在员工表emp 插入数据
INSERT INTO emp VALUES(1,'张涛','程序员',10);
INSERT INTO emp VALUES(2,'王涛','程序员',10);
INSERT INTO emp VALUES(3,'张浩','财务',20);
创建一个视图 emp_view 显示部门号为 10 的所有员工表emp中的数据
CREATE VIEW emp_view AS SELECT * FROM emp WHERE dept_no=10;
查看视图结构
DESC emp_view;
查看视图中的数据
SELECT * FROM emp_view;
2. 删除视图
DROP VIEW 视图名
3. 创建复杂视图
复杂视图 是对于多个表联合创建视图
例如:
创建一个部门表
CREATE TABLE dept
(
id int(10) PRIMARY KEY,
name VARCHAR(30)
);
向部门表插入数据
INSERT INTO dept VALUES(1,'IT');
INSERT INTO dept VALUES(2,'财务');
创建一个员工表
CREATE TABLE emp
(
id int(10),
name VARCHAR(30),
salary int(10),
dept_id int(10),
FOREIGN KEY (dept_id) REFERENCES dept(id)
);
向员工表插入数据
INSERT INTO emp VALUES(1,'王浩',6000,1);
INSERT INTO emp VALUES(2,'李洁',5000,1);
INSERT INTO emp VALUES(3,'张强',6000,2);
INSERT INTO emp VALUES(4,'张涛',8000,2);
创建一个视图显示每个部门的所有员工的工资 最大值, 最小值, 平均值, 总值
CREATE VIEW dept_emp_view
AS SELECT d.name,max(e.salary) max,min(e.salary) min,avg(e.salary) avg,sum(e.salary) sum FROM dept d,emp e
WHERE d.id=e.dept_id GROUP BY d.name;