索引:
汉语字典中的汉字按页存放,一般都有汉语拼音目录(索引)、偏旁部首目录等
我们可以根据拼音或偏旁部首,快速查找某个字词
索引是一种有效组合数据的方式,为快速查找到指定记录
作用
大大提高数据库的检索速度
改善数据库性能
MySQL索引按存储类型分类
B-树索引:InnoDB、MyISAM均支持
哈希索引
常用的索引类型:
普通索引:
基本索引的类型
允许在定义的索引列中插入重复的值和空值
唯一索引:
索引数据不重复
允许有空值
主键索引:
主键列中每个值是飞空的,唯一的
一个主键将自动创建主键索引
复合索引:
将多个列组合作为索引
全文索引:
支出值的全文查找
允许重复值和空值
空间索引:
对空间数据类型的列建立的索引
创建索引:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
ON table_name (column_name[length]…);唯一索引、全文索引或空间索引,可选
删除索引:
DROP INDEX index_name ON table_name;
删除表时该表的索引同时会被删除
例子:
在student表的studentName列创建普通索引
USE myschool;
CREATE INDEX `index_student_studentName`
ON `student`(`studentName`);
查看索引:
SHOW INDEX FROM table_name;
例子:
USE myschool;
SHOW INDEX FROM student;
备份:
mysqldump 可选参数 –u 用户名 –h host –p密码
数据库名 表明>创建的文件名
例子:
mysqldump –u root –p myschool student > d:\backup\myschool_20160808.sql
备份常用参数:
-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命令恢复数据库
mysql –u 用户名 –p 数据库名 < 备份文件名
导出数据:
SELECT * FROM tablename
[WHERE contion]
INTO OUTFILE 'filename' [OPTION]
例子:
将成绩表中“Logic Java”课程的成绩信息导出到文本文件
SELECT * FROM result
WHERE subjectNo =
(SELECT subjectNo FROM subject
WHERE subjectName = 'Logic Java')
INTO OUTFILE d:/backup/result_Java.txt
导入数据:
LOAD DATA INFILE filename INTO TABLE tablename [OPTION]
例子:
将数据从文本文件导入到myschoolDB的result表
LOAD DATA INFILE 'd:/back/result_Java.txt' INTO TABLE result;
汉语字典中的汉字按页存放,一般都有汉语拼音目录(索引)、偏旁部首目录等
我们可以根据拼音或偏旁部首,快速查找某个字词
索引是一种有效组合数据的方式,为快速查找到指定记录
作用
大大提高数据库的检索速度
改善数据库性能
MySQL索引按存储类型分类
B-树索引:InnoDB、MyISAM均支持
哈希索引
常用的索引类型:
普通索引:
基本索引的类型
允许在定义的索引列中插入重复的值和空值
唯一索引:
索引数据不重复
允许有空值
主键索引:
主键列中每个值是飞空的,唯一的
一个主键将自动创建主键索引
复合索引:
将多个列组合作为索引
全文索引:
支出值的全文查找
允许重复值和空值
空间索引:
对空间数据类型的列建立的索引
创建索引:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
ON table_name (column_name[length]…);唯一索引、全文索引或空间索引,可选
删除索引:
DROP INDEX index_name ON table_name;
删除表时该表的索引同时会被删除
例子:
在student表的studentName列创建普通索引
USE myschool;
CREATE INDEX `index_student_studentName`
ON `student`(`studentName`);
查看索引:
SHOW INDEX FROM table_name;
例子:
USE myschool;
SHOW INDEX FROM student;
备份:
mysqldump 可选参数 –u 用户名 –h host –p密码
数据库名 表明>创建的文件名
例子:
mysqldump –u root –p myschool student > d:\backup\myschool_20160808.sql
备份常用参数:
-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命令恢复数据库
mysql –u 用户名 –p 数据库名 < 备份文件名
导出数据:
SELECT * FROM tablename
[WHERE contion]
INTO OUTFILE 'filename' [OPTION]
例子:
将成绩表中“Logic Java”课程的成绩信息导出到文本文件
SELECT * FROM result
WHERE subjectNo =
(SELECT subjectNo FROM subject
WHERE subjectName = 'Logic Java')
INTO OUTFILE d:/backup/result_Java.txt
导入数据:
LOAD DATA INFILE filename INTO TABLE tablename [OPTION]
例子:
将数据从文本文件导入到myschoolDB的result表
LOAD DATA INFILE 'd:/back/result_Java.txt' INTO TABLE result;