持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
视图
什么是视图
站在不同的角度去看到数据。(同一张表的数据,通过不同的角度去看待)
- 视图是一种根据查询(也就是SELECT表达式)定义的数据库对象,用于获取想要看到和使用的局部数据。
- 视图有时也被称为“虚拟表”。
- 视图可以被用来从常规表(称为“基表”)或其他视图中查询数据。
- 相对于从基表中直接获取数据,视图有以下好处:
- 访问数据变得简单
- 可被用来对不同用户显示不同的表的内容
- 用来协助适配表的结构以适应前端现有的应用程序
视图作用
- 视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。
- 视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)。
- 从而加强了安全性,使用户只能看到视图所显示的数据。
- 视图还可以被嵌套,一个视图中可以嵌套另一个视图。
创建/删除视图
create view myview as select empno,ename from emp; drop view myview;
注意:只有DQL语句才能以视图对象的方式创建出来。
面向视图操作
select * from myview; create table emp_bak as select * from emp; create view myview1 as select empno,ename,sal from emp_bak; update myview1 set ename=’hehe’,sal=1 where empno=7369;//通过视图修改原表数据。 delete from myview1 where empno=7369;//通过视图删除原表数据。 视图示例: create view myview2 as select empno a,ename b,sal c from emp_bak; select * from myview2; insert into myview2(a,b,c) values(...);
DBA命令
将数据库中的数据导出
语法: mysqldump -u 用户名 -p 数据库名称>存放位置+导出的文件名称 案例: mysqldump -uroot -proot zjq>D:\zjq.sql
把某个表中的数据导出
mysqldump -u 用户名 -p密码 数据库名称 表名>存放位置+导出的文件名称 mysqldump -uroot -proot zjq emp>D:\emp.sql
远程导出数据库的数据
mysqldump -h 127.0.0.1 -uroot -proot test>D:\zjq.sql mysqldump -h ip -u 用户名 -p 数据库名称>存放位置+导出的文件名称
导入数据
create database zjq; use zjq; source D:\zjq.sql
数据库设计三范式
什么是设计范式?
设计表的依据。按照这个三范式设计的表不会出现数据冗余。
三范式都是哪些
第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。 第二范式:建立在第一范式的基础之上,所有非主键字段完全依赖主键,不能产生部分依赖。
多对多?三张表,关系表两个外键。 t_student学生表 sno(pk) sname t_teacher讲师表 Tno(pk) tname t_student_teacher_relation 学生讲师关系表 Id(pk) sno(fk) tno(fk)
第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键,不能产生传递依赖。
一对多? 两张表,多的表加外键。 班级t_class cno(pk) cname
学生t_student Sno(pk) sname classno(fk)
提醒:在实际的开发中,以满足客户的需求为主,有的时候会拿冗余换执行速度。
一对一怎么设计? 一对一设计方案一:主键共享 t_user_login 用户登录表 Id(pk) username password
t_user_detail 用户详细信息表 Id(pk+fk) realname tel userid(fk+unique)
一对一设计方案二:外键唯一。 t_user_login 用户登录表 Id(pk) username password
t_user_detail 用户详细信息表 Id(pk) realname tel userid(fk+unique)
本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
保持热爱,奔赴下一场山海。🏃🏃🏃