CREATE VIEW 视图名(列1,列2…) AS SELECT (列1,列2…) FROM …;
使用视图
和普通表一样操作
修改视图
CREATE OR REPLACE VIEW 视图名 AS SELECT […] FROM […];
删除视图
DROP VIEW 视图名
查看数据库已有视图
SHOW TABLES [like…];(可以使用模糊查找)
查看视图详情
DESC 视图名或者SHOW FIELDS FROM 视图名
视图条件限制
[WITH CHECK OPTION]
操作指令
代码
创建登录账户
CREATE USER ‘用户名’ @‘IP/localhost’ IDENTIFIED BY ‘密码’;
授权
GRANT 权限 ON 数据库名.表 TO ‘用户名’ @‘IP/localhost’;
查看所有账户
SELECT USER,HOST FROM mysql.USER
查看账户权限
SHOW GRANTS FOR ‘用户名’ @‘IP/localhost’
创建视图
CREATE VIEW v_em ( emp_no, first_name, birth_date, last_name, gender, hire_date, dept_no, dept_name, from_date, to_date ) AS SELECT
e.emp_no,
e.first_name,
e.birth_date,
e.last_name,
e.gender,
e.hire_date,
d.dept_no,
d.dept_name,
de.from_date,
de.to_date
FROM
employees e
LEFT JOIN dept_emp de ON de.emp_no = e.emp_no
LEFT JOIN departments d ON d.dept_no = de.dept_no;
使用视图
SELECT
*
FROM
v_em ve
WHERE
ve.emp_no = 10002
修改视图
CREATE
OR REPLACE VIEW v_em AS SELECT
emp_no
FROM
employees;
删除视图
DROP VIEW v_dept
查看数据库已有视图
SHOW TABLES LIKE '%em%';
查看视图详情
DESC v_em;
SHOW FIELDS FROM v_em;
视图条件限制
CREATE VIEW v_dept AS SELECT
*
FROM
departments
WHERE
dept_no >= 1000 WITH CHECK OPTION;
INSERT INTO v_dept(dept_no,dept_name) VALUES(100,"测试");
> CHECK OPTION failed 'testmysql.v_dept'
视图开启权限
创建登录账户:
CREATE USER 'test'@'localhost' IDENTIFIED by 'test';
查看所有账户:
SELECT USER,HOST FROM mysql.USER
授权(只读):
GRANT SELECT ON testmysql.v_em TO 'test' @'localhost';
刷新(授权后需要刷新后生效):
FLUSH PRIVILEGES;
查看账户权限:
SHOW GRANTS FOR test @localhost
删除账户:
DROP USER 'test' @'%'