MySQL入门(12)- 索引&视图&导入/导出

本文介绍了MySQL中的索引、视图和数据导入导出的基本概念与操作。通过示例解释了索引提高查询效率的重要性,如何创建和删除索引。同时,详细阐述了视图的创建与使用,以及如何利用mysqldump进行数据库和表的导出与导入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引&视图&导入/导出

此系列记录PN视频学习笔记


* 本博客涉及到的数据为bjpowernode.sql,SQL文见MySQL入门(9)文末。

* 该数据有三张表,分别是部门表dept(deptno部门编号、dname部门名称、loc位置)、

                                       员工表emp(empno工号、ename员工姓名、job职位、mgr直属领导工号、

                                                            hiredate入职日期、sal月薪、comm补贴、deptno部门编号)、

                                        薪水等级表salgrade(grade等级、losal区间下限、hisal区间上限)


一、索引

    1、什么是索引

       -索引对应的英语单词:index

       -索引相当于一本字典的目录,索引的作用是为了提高程序的查询效率

    2、主键自动添加索引,所以能够通过主键查询,尽量通过主键查询,效率更好。

    3、索引和表相同,都是一个对象,表时存储在硬盘文件中的,那么索引是表的一部分,索引也是存储的硬盘文件中的

    4、在MYSQL数据管理系统中,对表中记录进行检索的时候,通常包括几种检索方式

       -第一种方式:全表扫描【效率较低】

              假设emp员工表select * from emp where ename=’KING’;

              若ename上没有添加索引,那么在通过ename字段过滤数据的时候,那么ename字段将从头开始扫描

              假设dept员工表 select * from dept where dname=’accounting’;

              若dname上没有添加索引,那么在通过dname字段过滤数据的时候,那么dname字段将从头开始扫描

    - 第二种方式:通过索引进行检索【提高查询效率】

    5、一张表中有多个字段,每个字段都可以添加索引

    6、什么样的条件下适合给表中的某个字段添加索引?

       -该字段数据量庞大

       -该字段很少进行DML操作【DML操作很多的话,索引也是需要不断维护,效率反而降低】

       -该字段经常出现在where条件中

 

    7、怎么创建索引?

       createindex dept_dname_index on dept(dname);

       createunqiue index dept_dname_index on dept(dname);//添加unique表示dept表中的dname字段添加一个唯一性约束

 

   8、怎么删除索引?

       dropindex dept_dname_index on dept;

 

二、视图

可以隐藏表的细节(如字段名,如给某客户开发软件,而他们不想把数据暴露出来,只会告诉业务,此时他们便可以提供视图)

create view a6view as 后面只能用DQL

mysql> select * from a6;

+--------+-------------+

| deptno | asal        |

+--------+-------------+

|    10 | 2916.666667 |

|    20 | 2175.000000 |

|    30 | 1566.666667 |

+--------+-------------+

mysql> create table a66 as select *from a6;

mysql> select * from a66;

+--------+-------------+

| deptno | asal        |

+--------+-------------+

|    10 | 2916.666667 |

|    20 | 2175.000000 |

|    30 | 1566.666667 |

+--------+-------------+

mysql> create view a6view as select* from a6;【创建视图】

Query OK, 0 rows affected (0.11 sec)

 

mysql> select * from a6view;

+--------+-------------+

| deptno | asal        |

+--------+-------------+

|    10 | 2916.666667 |

|    20 | 2175.000000 |

|    30 | 1566.666667 |

+--------+-------------+

mysql> delect from a66;

Query OK, 3 rows affected (0.01 sec)

mysql> select * from a6;

+--------+-------------+

| deptno | asal        |

+--------+-------------+

|    10 | 2916.666667 |

|    20 | 2175.000000 |

|    30 | 1566.666667 |

+--------+-------------+

mysql> delete from a6view;【删除视图也会删除原表】

Query OK, 3 rows affected (0.01 sec)

mysql> select * from a6;

Empty set (0.00 sec)

可以通过对视图的增删改从而影响这个视图所对应记录的内容

 

【隐藏原数据的字段名,此时知道视图的字段名是abc不知道实际含义】

mysql> create view deptview asselect deptno a,dname b,loc c from dept;

Query OK, 0 rows affected (0.04 sec)

 

mysql> select * from deptview;

+----+-------------+----------+

| a | b           | c        |

+----+-------------+----------+

| 10 | ACCOUNTING  | NEW YORK |

| 20 | RESEARCHING | DALLAS   |

| 30 | SALES       | CHICAGO  |

| 40 | OPERATIONS  | BOSTON  |

+----+-------------+----------+

 

mysql> select deptno from deptview;

ERROR 1054 (42S22): Unknown column'deptno' in 'field list'

 

三、导入和导出

1、导出

导出整个数据库:

在windows的DOS窗口执行:mysqldump -uroot -p -dbjpowernode>D:bjpowenode.sql

导出指定库下的指定表格:

在windows的DOS窗口执行:mysqldump -uroot -p -d bjpowernode emp>D:emp.sql

2、导入

mysql> drop database bjpowernode;

mysql> create database bjpowernode;

mysql> use bjpowernode;

Database changed

mysql> source D:\bjpowenode.sql

mysql> show tables;

+-----------------------+

| Tables_in_bjpowernode |

+-----------------------+

| a4                    |

| a44                   |

| a4view                |

| a5                    |

| a6                    |

| a66                   |

| a6view                |

| a7                    |

| a8                    |

| b                     |

| b2                    |

| b3                    |

| b7                    |

| c                     |

| dept                  |

| deptview              |

| emp                   |

| emp_bak               |

| myview                |

| s                     |

| salgrade              |

| sc                    |

| t_user                |

+-----------------------+

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值