1、索引
索引是一种与表有关的结构,它的作用相当于书的目录。可以根据目录中的页码快速找到所需的内容。
当表中有大量记录时,若要对表进行查询
没有索引的情况:将所有记录取出---和查询条件进行对比---返回满足条件的记录
----消耗大量的数据库系统时间,并造成大量磁盘I/O操作。
若在表中建立索引,在索引中查找到符合查询条件的索引值,通过索引值就可以快速找到表中的数据,可大大加快查询速度。
语句格式:
ALTER TABLE 表名 ADD INDEX 索引名(列名);
或 CREATE INDEX 索引名 ON 表名(列名);
ex.1)在employee表的id列上,建立名为idx_id的索引
ALTER TABLE employee ADD INDEX idx_id(id);
2)在employee表的name列上建立名为idx_name的索引
CREATE INDEX idx_name ON employee(name);
建完索引后,来查看下新建的索引
在使用SELECT语句时查询时,语句中的WHERE条件,会自动判断有没有可用的索引
2、视图
视图是从一个或多个表中导出来的表,是一种“虚拟存在的表”。
类似于一个窗口,可以通过这个窗口看到系统专门提供的数据,这样,用户可以不用看到整个数据库中的数据,而只关心对自己有用的数据。
注意理解视图是虚拟的表:
1)数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中;
2)使用视图查询诗句时,数据库系统会从原来的表中取出对应的数据;
3)视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变;
4)在使用视图的时候,可以把它当做一张表。
语句格式
CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名;
视图可以建立在多张表上,只需在SELECT语句中使用子查询或连接查询
ex.创建一个简单的视图,名为v_emp,包含v_name,v_age,v_phone三个列
CREATE VIEW v_emp(v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;
3、导入
将一个文件里的数据,保存进一张表
语句格式:LOAD DATA INFILE'文件路径和文件名' INTO TABLE 表名;
ex.将in.txt文件导入到mysql_shiyan库的employee表中
1)按住Ctrl+Z退出MySQL,下面的几个步骤需要再Xface终端执行
打开Xface终端,输入命令拷贝SQL6文件夹到/tmp目录
cp -a /home/shiyanlou/Desktop/SQL6 /tmp/
2)查看in.txt文件中的内容
gedit /tmp/SQL6/in.txt
后会自动弹出
再次登录数据库,并连接mysql_shiyan数据库
查看下没有导入之前,employee表中的数据
将数据导入
LOAD DATA INFILE '/tmp/SQL6/in.txt' INTO TABLE employee;
再来查询下导入后employee表中的数据
4、导出
把数据库中某个表中的数据保存到一个文件中。
语句格式:SELECT 列1,列2 INTO OUTFILE'文件路径和文件名' FROM 表名;
注意:语句中“文件路径”下,不能存在同名文件
ex.将employee表的数据,导出到 /tmp目录下,文件名为out.txt
SELECT * INTO OUTFILE'/tmp/out.txt' FROM employee;
查看out.txt的内容
退出数据库后,输入 gedit /tmp/out.txt
5、备份
备份与导出的区别:导出的文件只是保存数据库中的数据
备份是把数据库的结构,包括数据、约束、索引、视图等全部另存为另一个文件
mysqldump是MySQL用于备份数据库的实用程序。
备份语句:
1)备份整个数据库:
mysqldump -u root 数据库名>备份文件名;
2)备份整个表
mysqldump -u root 数据库名 表名>备份文件名;
ex.将mysql_shiyan,并命名为bak.sql
在执行备份操作前,需先通过Ctrl+Z退出MySQL控制台,在Xface终端中输入命令
备份完成后,可通过ls查看已生成的备份文件
用gedit查看备份文件的内容
不仅保存了数据,还备份了数据库的其它信息
6、恢复
将MySQL-06.sql文件中保存的mysql_shiyan数据库恢复
1)新建一个空数据库test
2)Ctrl+Z退出MySQL
输入语句进行恢复
mysql -u root test < bak.sql
连接数据库后,查看test库中的表
查看employee表中的数据