MySQL 视图与管理
视图(view)
看需求
基本概念
- 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含列,其数据来自对应的真实表(基表)
- 视图和基表关系的示意图
视图的基本使用
- create view视图名as select语句
- alter view视图名as select语句 --更新成新的视图
- SHOW CREATE VIEW 视图名
- drop view视图名1,视图名2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
CREATE VIEW emp_view01 AS SELECT empno,ename,job,deptno FROM emp;
DESC emp_view01
SELECT * FROM emp_view01 SELECT empno,job FROM emp_view01;
SHOW CREATE VIEW emp_view01
DROP VIEW emp_view01
|
视图细节讨论
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
UPDATE emp_view01 SET job='manager' WHERE empno=7369 SELECT * FROM emp SELECT * FROM emp_view01
UPDATE emp SET job='SALESMAN' WHERE empno=7369
DESC emp_view01 CREATE VIEW emp_view02 AS SELECT empno,ename FROM emp_view01
SELECT * FROM emp_view02
|
视图最佳实践
视图课堂练习
针对emp , dept,和salgrade张三表.创建一个视图emp_view03,可以显示雇员编号,雇员名,雇员部门名称和薪水级别[即使用三张表,构建一个视图] view02.sql
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
CREATE VIEW emp_view03 AS SELECT empno,ename,dname,grade FROM emp,dept,salgrade WHERE emp.deptno=dept.deptno AND (sal BETWEEN losal AND hisal) DESC emp_view03
SELECT * FROM emp_view03
|
Mysql管理
Mysql 用户
创建用户
create user '用户名 '@'允许登录位置'identified by ‘密码'
说明:创建用户,同时指定密码
删除用户
drop user ‘用户名’@’允许登录位置’;
用户修改密码
修改自己的密码: set password = password('密码'); 修改他人的密码(需要有修改用户密码权限): set password for '用户名'@'登录位置'= password(密码');
mysql中的权限
给用户授权
回收用户权限
基本语法:revoke权限列表on库.对象名from '用户名"@"登录位置';
权限生效指令
如果权限没有生效,可以执行下面命令.
课堂练习题
创建一个用户(你的名字,拼音),密码123,并且只可以从本地登录,不让远程登录mysql 创建库和表testdb下的news表,要求:使用root用户创建 给用户分配查看news表和添加数据的权限 测试看看用户是否只有这几个权限 修改密码为abc ,要求:使用root用户完成重新登录 示回收权限 使用root 用户删除你的用户 演示回收权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
CREATE USER 'rongxu'@'localhost ' IDENTIFIED BY '123'
CREATE DATABASE testdb CREATE TABLE news( id INT, content VARCHAR(32))
INSERT INTO news VALUES(100,'北京新闻'); SELECT * FROM news
GRANT SELECT,INSERT ON testdb.news TO 'rongxu'@'localhost'
GRANT UPDATE ON testdb.news TO 'rongxu'@'localhost'
SET PASSWORD FOR 'rongxu'@'localhost' =PASSWORD('abc')
REVOKE SELECT,UPDATE,INSERT ON testdb.news FROM 'rongxu'@'localhost' REVOKE ALL testdb.news FROM 'rongxu'@'localhost'
DROP USER 'rongxu'@'localhost'
|
细节说明
- 在创建用户的时候,如果不指定Host,则为%,%表示表示所有IP都有连接权限create user XXX;
- 你也可以这样指定 create user 'xxx' @'192.168.1.%’表示xxx用户在192.168.1.*的ip可以登录mysql
- 在删除用户的时候,如果host 不是%,需要明确指定‘用户'@'host值'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
CREATE USER jack;
SELECT `host`,`user` FROM mysql.user
CREATE USER 'smith'@'192.168.1.%'
DROP USER jack
DROP USER 'smith'@'192.168.1.%'
|