内外链接、视图以及用户管理
1. 内外链接
1.1 内连接
内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。
- 其实内连接就是得到了一个完整的笛卡尔积(组合的所有情况)
1.2 外连接
1.2.1 左外连接
如果联合查询,左侧的表完全显示我们就说是左外连接。
更像是先拿到左边表的数据然后根据条件再去右表中找匹配的,所以就不会把笛卡尔积所有情况都显示出来
查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来(假设这个学生可能生病了,请假没有参加这场考试)
1.2.2 右外连接
如果联合查询,右侧的表完全显示我们就说是右外连接。
对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来(学生把姓名和学号都写错了,不知道是谁的试卷)
2. 视图特性
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。(可以理解为视图是表的一部分,也就是一张子表,修改它相当于修改了原始表,原始表修改也会影响这个视图表,主要目的就是为了能够简化,看起来更加直观)
2.1 视图规则和限制
- 与表一样,必须唯一命名(不能出现同名视图或表名)
- 创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响
- 视图不能添加索引,也不能有关联的触发器或者默认值
- 视图可以提高安全性,必须具有足够的访问权限
- 视图可以和表一起使用
3. 用户管理
如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。
3.1 用户信息
MySQL中的用户,都存储在系统数据库mysql的user表中
字段解释:
- host:表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
- user:用户名
- authentication_string:用户密码通过password函数加密后的
- *_priv:用户拥有的权限
3.2 创建用户
3.3 删除用户
3.4 修改用户密码
3.5 给用户授权
MySQL数据库提供的权限列表:
刚创建的用户没有任何权限。需要给用户授权。