Linux下的MySQL基础学习四

Linux下的MySQL基础学习一:https://blog.csdn.net/Zhang_Yixuan_ss/article/details/85953933

Linux下的MySQL基础学习二:https://blog.csdn.net/Zhang_Yixuan_ss/article/details/86077111

Linux下的MySQL基础学习三:https://blog.csdn.net/Zhang_Yixuan_ss/article/details/86220678

一、视图概念:

        视图是从一个或者几个基本表(或视图)导出一个虚拟表,因而数据库中只存放试图的定义,而没有对应的数据,这些数据仍然存放在原来的数据表中。如果数据表中的数据发生了变化,那么从视图中查询到的数据也相应的发生变化。

        在使用视图时,可以将它当作一张表,使用视图有些好处:

  • 提高安全性,使用视图可以使用户查看表中的部分数据,比如银行账户表中,可以使用视图只显示用户的姓名,地址,而不显示银行账号和账户金额。
  • 简化操作,大大简化了用户对数据的操作,对于复杂的查询语句,通过视图将其存入到数据库中,当下一次使用同样的查询语句时,可以利用视图直接进行查询。
  • 增强数据逻辑独立性。有了视图,可以将应用和数据表分离。比如通常的小开发,应用直接建立在数据表上,而使用了视图就可以使程序和数据表分离。

视图的创建:

CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;

可见创建视图的语句,后半句是一个 SELECT 查询语句,所以视图也可以建立在多张表上,只需在 SELECT 语句中使用子查询连接查询。查询语句可以任意复杂,但是通常不允许使用order by和distinct。如果只定义了视图名字,而没有为其定义列名字,则隐含该视图由子查询中的select子句目标列的诸字段组成。但是下列三种情况下必须明确制定组成视图的所有列名:

  1. 目标列名中的某个目标列是集合函数或表达式。
  2. 多表连接时有几个同名字段
  3. 需要在视图中为某个列启用新的名字

现在我们创建一个简单的视图,名为 v_emp,包含v_namev_agev_phone三个列:

CREATE VIEW v_emp (v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;

视图的更新:

对视图的更新最终到要转换成对表的更新。有insert、delete、update三类操作。

//更新
update 视图名称 set 列属性名称(这里可以针对某列数字做加减运算,也可直接更改列属性)
//插入
insert into 视图名称 values(属性1,属性2,属性.......);

例如:

//对顾客消费信息表中的折扣信息进行修改
update cust set discnt=discnt+4
//向视图中插入信息
insert into cust values('c008','marry','dallas',16);

视图的删除:

drop view 视图名称

二、索引

索引是对数据库表中的一列或者多列的值进行排序的一种结构,建立索引是加快查询速度的有效手段。但是为表添加索引是要付出代价的,索引要占物理空间,并且维护索引需要好费时间,当更改了数据后,相应的索引也要进行动态维护。索引分为聚集索引、非聚集索引、唯一索引。

索引创建的原则:

  • 经常需要搜索的列
  • 作为主键的列
  • 经常用于连接的列
  • 经常需要根据范围进行搜索的列
  • 经常需要排序的列
  • 经常需要使用where子句的列

在查询中很少用到的列、数据值少的列、定义为text、image和bit数据类型的列不应该增加索引,当修改性能大于检索性能或者某项属性在数据库中的重复量非常大(例如人的性别)也不该增加索引。

索引的建立:

ALTER TABLE 表名字 ADD INDEX 索引名 (列名);
或者
CREATE INDEX 索引名 ON 表名字 (列名);

索引的删除:

drop index 索引名

三、导入和导出

在开发中我们经常看见一些sql文件,对这种文件我们需要对它进行导入操作,由于导入导出大量数据都属于敏感操作,根据 mysql 的安全策略,导入导出的文件都必须在指定的路径下进行。SQL 文件导入相当于执行该文件中包含的 SQL 语句,可以实现多种操作,包括删除,更新,新增,甚至对数据库的重建。

 source 绝对路径/文件名.sql

除了SQL文件的导入还有 数据文件的导入,与sql文件导入不同,数据文件的导入方式只包含数据,导入规则由数据库系统完成。

LOAD DATA INFILE '文件路径和文件名' INTO TABLE 表名字;

导出与导入是相反的过程,是把数据库某个表中的数据保存到一个文件之中。导出语句基本格式为:

SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;
//注意:语句中 “文件路径” 之下不能已经有同名文件。

四、备份与恢复

数据库中的数据十分重要,出于安全性考虑,在数据库的使用中,应该注意使用备份功能。备份与导出的区别:导出的文件只是保存数据库中的数据;而备份,则是把数据库的结构,包括数据、约束、索引、视图等全部另存为一个文件。mysqldump 是 MySQL 用于备份数据库的实用程序。它主要产生一个 SQL 脚本文件,其中包含从头重新创建数据库所必需的命令 CREATE TABLE INSERT 等。

mysqldump -u root 数据库名>备份文件名;   #备份整个数据库

mysqldump -u root 数据库名 表名字>备份文件名;  #备份整个表


//mysqldump 是一个备份工具,因此该命令是在终端中执行的,而不是在 mysql 交互环境下

恢复:

先使用命令新建一个空的数据库 test

CREATE DATABASE test;  #新建一个名为test的数据库

再次 Ctrl+D 退出 MySQL,然后输入语句进行恢复,把刚才备份的 文件 恢复到 test 数据库:

mysql -u root test <文件名.sql

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值