ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL命令大全(六)----视图、数据的导入导出和数据库三范式!

2021-03-08 14:30:52  阅读:109  来源: 互联网

标签:范式 name 数据库 XXX 视图 ---- MySQL 1001


视图

1、什么是视图?(View)
视图就是站在不同的角度去看待同一份数据

2、视图的语法

如:创建视图
create view 视图名 as select * from 表名;
表示将某个表的查询结果当做视图创建,值得注意的是,as后面跟的必须是DQL(select)语句

删除视图
drop view 视图名;

在这里插入图片描述
3、视图的作用

可以面向视图对象进行增删改查,对视图对象的增删改查,会导致原表被操作!这也是视图的特点
也可以多表联查创建视图,对视图进行增删改查也会对原表的数据进行操作。

在实际开发中视图的作用

假设有一条非常复杂的SQL语句,而这条SQL语句需要在不同的位置上反复使用,每次都要重新编写,很长很麻烦,这时就可以把这条SQL语句以视图对象的形式新建,然后直接使用视图对象,可以大大的简化开发,并且利于后期的维护,因为只需要修改视图对象所映射的SQL语句。

视图创建后使用起来就像使用一张表一样,它也是真实存在的。

总结: 视图对象在实际开发中的作用就是方便,简化开发,利于维护!

数据的导入、导出(数据备份)

数据导出:

mysqldump 数据库名>位置+文件名 -uroot -p密码
如:
	mysqldump database>D:\database.sql -uroot -p密码
导出指定的表
	mysqldump database table_name>D:\database.sql -uroot -p密码

需要注意的是:词条命令需要在windows的dos命令窗口中执行,不是在mysql数据库的中!

数据导入:
注意:此条命令是在mysql数据库服务器上执行的
步骤:

  • 先登录到mysql数据库中
  • 然后创建数据库
  • 使用创建好的数据库
  • 然后使用source + 文件的绝对路径即可

如:

source D:\database.sql

数据库设计三范式

1、什么是数据库设计范式?

数据库表的设计依据,就是怎么进行数据库表的设计。

2、数据库设计范式一共有三个

  • 第一范式:要求任何一张表必须有主键,每一个字段原子性不可再分。
  • 第二范式:建立在第一范式的基础之上,要求所有非主键字段完全依赖主键,不要产生部分依赖。
  • 第三范式:建立在第二范式的基础之上,要求所有非主键字段直接依赖主键,不要产生传递依赖。

示例:第一范式

最核心、最重要的范式,所有表的设计都需要满足,必须有主键,并且每一个字段都是原子性不可再分。
如:一张用户表

user_id    user_name      user_contact
--------------------------------------------------
  1			 Jack		 Jack@gmail.com13599999999

这样的表是不满足第一范式的:首先没有主键,其次联系方式可以分为邮箱地址和电话。
可以修改为

user_id    user_name    user_email     	    phone
-----------------------------------------------------
  1			 Jack		 Jack@gmail.com    13599999999

示例:第二范式

s_Id 	+	t_id(PK)		s_name		t_name
------------------------------------------------------
1001		  001			jack		wang
1002		  002			simo		zhang
1003		  001			lucy		wang
1001		  002			jack		zhang

不满足第二范式,jack依赖1001,wang依赖001,产生了部分依赖
部分依赖的缺点:数据冗余,空间浪费。
修改:
使用多对多来表示(多对多,三张表,关系表两个外键!!!!)

学生表
学生编号(PK)		学生名字
1001			jack
1002			simo
1003			lucy

教师表
教师编号(PK)		教师姓名
001				wang
002				zhang

学生教师关系表
id(PK)			学生编号(FK)			教师编号(FK)
1				1001				001
2				1002				002
3				1003				001
4				1001				002

示例:第三范式

学生编号(PK)		  学生姓名			 班级编号			  班级名称
1001				zhang				01				一班
1002				li				 	02				二班
1003				wang				03				三班
1004				zhao				03				三班

一班依赖01,01依赖1001,产生了传递依赖
修改:
使用一对多(一对多,两张表,多的表加外键!!!)

班级表:一
班级编号(pk)			班级名称
01					一班
02					二班
03					三班

学生表:多
学生编号(pk)			学生名称			班级编号(FK)
1001				zhang				01
1002				li					02
1003				wang				03
1004				zhao				04

3、总结表的设计

多对多:
多对多,三张表,关系表两个外键!!!!

一对多:
一对多,两张表,多的表加外键!!!!

一对一(一对一,外键唯一!!!!):
在实际开发中,可能存在一张表字段太多,太庞大,这个时候要拆分表
一对一怎么设计?
没有拆分表之前:一张表

t_user
id		login_name		login_pwd		real_name		email			address...
------------------------------------------------------------------------------------
1		zhangsan		123				张三		zhangsan@XXX.com		XXX
2		wangwu			456				王五		wangwu@XXX.com			XXX

拆分为两张:

login表:
id(PK)			login_name			login_pwd
--------------------------------------------------
1				zhangsan				123
2				wangwu					456

user表:
id(PK)			real_name			email				address			login_id(FK+unique)
-------------------------------------------------------------------------------------------
01				张三				zhangsan@XXX.com		XXX				1
02				王五				wangwu@XXX.com			XXX				2

当然,最终都是要以满足客户的需求为主要目的。

标签:范式,name,数据库,XXX,视图,----,MySQL,1001
来源: https://blog.csdn.net/zyx13513314194/article/details/114493979

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有