MySQL数据库 基础知识【 4 】

1、视图是一张虚拟表:表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上。
2、视图中不存放数据:数据存放在视图所引用的原始表中。
3、一个原始表,根据不同用户的不同需求,可以创建不同视图

视图的用途:
筛选表中的行,防止未经许可的用户访问敏感数据,降低数据库的复杂程度,将多个物理数据库抽象为一个逻辑数据库。

创建视图
CREATE VIEW view_name  AS SELECT 语句;
删除视图
DROP VIEW (IF EXISTS) view_name;
查看视图
SELECT 字段1,字段2……FROM view_name;

视图注意事项:
1、视图中可以使用多个表
2、一个视图可以嵌套另一个视图 
3、对视图数据进行添加、更新和删除操作直接影响所引用表中的数据
4、当视图数据来自多个表时,不允许添加和删除数据
5、使用视图修改数据会有许多限制,一般在实际开发中视图仅用作查询。

查看所有视图:
USE information_schema;
SELECT * FROM views\G;

索引:是一种有效组合数据的方式,为快速查找到指定记录。
作用:大大提高数据库的检索速度,改善数据库性能
MySQL索引按存储类型分类
B-树索引:InnoDB、MyISAM均支持
哈希索引

常用索引类型:
普通索引:基本索引类型,允许在定义索引的列中插入重复值和空值
唯一索引:索隐列数据不重复,允许为空值
主键索引:主键列中的每个值是非空、唯一的;一个主键将自动创建主键索引
复合索引:将多个列组合作为索引
全文索引:支持值的全文查找,允许重复值和空值
空间索引:对空间数据类型的列建立的索引

创建索引:
 唯一       全文          空间
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
ON table_name (column_name[length]…);

CREATE  INDEX `index_student_studentName`
ON `student`(`studentName`);

删除索引:
DROP  INDEX index_name ON table_name;
删除表时,该表的所有索引同时会被删除

查看索引:
SHOW INDEX FROM table_name;

创建索引的标准:
频繁搜索的列;经常用作查询选择的列;经常排序、分组的列;经常用作连接的列(主键/外键)
不适合创建索引的有:
仅包含几个不同值的列;表中仅包含几行

注意事项:
1、查询时减少使用*返回全部列,不要返回不需要的列
2、索引应该尽量小,在字节数小的列上建立索引
3、WHERE子句中有多个条件表达式时,包含索引列的表达式应置于其他条件表达式之前
4、避免在ORDER BY子句中使用表达式


备份:
mysqldump [options(选项参数)] –u username(用户名) –h host(登录主机名) –ppassword(密码) 
dbname(备份数据库名)[tbname1(需备份表名)[,tbname2……]]>filename.sql(备份后文件名)

注意事项:
mysqldump是DOS系统下的命令,在使用时无须进入mysql命令行,否则将无法执行

常用参数选项:
-add-drop-table 
在每个CREATE TABLE语句前添加DROP TABLE语句,默认是打开的,可以用-skip-add-drop-table来取消
--add-locks
该选项会在INSERT 语句中捆绑一个LOCK TABLE 和UNLOCK TABLE 语句
好处:防止记录被再次导入时,其他用户对表进行的操作
-t或-no-create-info
只导出数据,而不添加CREATE TABLE语句
-c或--complete-insert
在每个INSERT语句的列上加上列名,在数据导入另一个数据库时有用
-d或--no-data
不写表的任何行信息,只转储表的结构

恢复数据库:
方法一:
mysql –u username(用户名) –p [dbname(数据库名)] < filename.sql(文件名)
注意:
1. mysql为DOS命令
2.在执行该语句之前,必须在MySQL服务器中创建新数据库,如果不存在恢复数据库过程将会出错

方法二:
source filename;
注意:
登录MySQL服务后使用
执行该命令前,先创建并选择恢复后的目标数据库

猜你喜欢

转载自blog.csdn.net/shilaike2/article/details/79676257