MySQL学习笔记(十六)

125 阅读2分钟

这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战

8、视图

  • 概念:view , 站在不同的角度去看同一份数据,以文件的形式存在

  • 视图对象的创建与删除

    • 创建:create view 视图名 as select 字段名 from 表明 ;
    • 删除: drop view 视图名 ;

    【注意】:只用DQL语句才能用view来创建,可以面向视图对象进行增删改查 , 对视图对象的增删改查会导致原表被操作

  • 作用:简化SQL语句

 【案例】:展示视图的创建与删除
  drop table if exists dept2 ;
  create table dept2 select * from dept ;
  create view dept2_view as select * from dept2 ;
  drop view dept2_view ;
  
  
  【案例】:面向视图进行创建、更新数据
  drop view if exists emp_dept_view ;
  create view emp_dept_view as select e.ename , e.sal , d.dname from emp e join dept d on e.deptno = d.deptno ;
  select * from emp_dept_view ; 
  update emp_dept_view set sal = 200 where ename = 'SMITH';  

9、DBA常用命令

  • 创建用户:create user 用户名 identified by '密码' ;

    --可以登录但是只可以看见一个库 information_schema

  • 导入导出:

    • 导入:source 文件位置
    • 导出:mysqldump 数据库名称 > 文件路径 文件名.sql -u 用户名 -p 密码
 【案例】展示DBA常用命令
  create user zzyyui identified by '20zzy100588A' ;
  grant all on *.* to 'zzyyui'@'%' with grant option;
  
  // 回收权限
  revoke all  on *.* from guest;
  
  //慎用
  use mysql;
  select * from user;
  update user set password = password('') where user = '';
  flush privileges;
  
  // 导入导出
  mysqldump -u 用户名 -p 数据库名 > 导出的文件名 
  source D:\ bjpowernode.sql

10 数据库设计范式

  • 概念:数据库设计的依据(面试常考)
  • 第一范式:任何一张表必须要有主键,每一个字段原子性不可再分;
  • 第二范式:建立在第一范式之上,要求所有非主键字段完全依赖主键,不要产生部分依赖;
  • 第三范式:建立在第二范式之上,要求所有非主键字段直接依赖主键,不要产生传递依赖。

10.1 第一范式

  • 地位:最核心、最重要的范式,所有表的设计都需要满足
  • 要求:必须有主键,并且每一个字段原子性不可再分
 【案例】:判断是否满足第一范式
 ​
 学生编号    学生姓名    联系方式
 -------------------------------------
 1001        张三      zs@gmail.com,1359999999
 1002        李四      ls@gmail.com,13699999999
 1001        王五      ww@163.net,13488888888
 ​
 【存在问题】:
 1、最后一条记录和第一条重复(不唯一,没有主键)
 2、联系方式字段可以再分,不是原子性的
 ​
 【更改】:
 学生编号(pk)    学生姓名    email           联系电话
 -------------------------------------------------------------
     1001        张三      zs@gmail.com    1359999999
     1002        李四      ls@gmail.com    13699999999
     1003        王五      ww@163.net      13488888888