学习Java需要知道的数据库中的相关知识
关于数据库中的外键约束
约束指的是数据库的一种管理方式,使得数据库中的数据是有意义的。约束是由DBA去设置的,开发人员只需要知道其含义即可。
-
非空约束(not null):要求管理的字段不能存储null值;
-
唯一性约束(unique):要求管理的字段存储值不能有重复,但是可以存储null值
-
主键约束:管理主键字段(key),要求主键字段内容不能为null,同时也不能出现重复值
-
外键约束(foreign key):管理外键字段,要求外键字段的值应该来自于关联的一方表中主键字段的值,但是可以存储null值。
关于数据库中的索引(index)
查询速度问题:
由于表文件存放数据行随着时间推移,会越来越多。where命令在执行时需要对表文件所有数据进行遍历,所以时间越久,数据行越大,where命令执行时小号时间就会不断增加。
索引 的作用
在表文件数据行增加时,不会大幅度降低查询语句执行效率。
索引的工作原理:事先将字段中内容进行排序,在where命令进行定位时,避免对表中所有的数据进行遍历,这将会提高查询速度。
索引管理:
-
为表中的某个字段绑定索引:create index 索引名称 on 表名(字段名);
-
查询表文件关联的索引: show index from 表名
-
在位表文件绑定key ,unique,foreign key 约束时,mysql服务器自动将当前字段数据进行排序并交给指定的索引去管理。
-
-
删除表文件中指定的索引: drop index on 索引名 on 表名;
执行计划(explain)
命令格式: explain 查询语句;
type显示的就是查询语句使用的查询方式
作用:
展示当前查询得到的结果是否通过索引来进行定位.DBA通过执行计划了解本次查询过程是否使用了预先创建好的索引。
执行计划中对于查询语句执行效率的判断:
-
在执行计划中,通过type属性展示查询语句的执行效率
-
执行效率的分类:【慢--->快】
-
ALL : where对表中所有的数据进行遍历(对DBA来说,应该极力避免这种查询)
-
type: where对表中所有数据进行遍历,只是在select抓取的字段内容中,从索引中抓取
-
range: where 不会对表中的所有数据进行遍历,而是直接从索引中得到定位的数据行行数
-
-
视图
-
定义:当前mysql服务器中的一个对象,用于存储sql查询语句,目的是提高查询语句使用效率,避免在多处地方重复性开发相同查询语句。
-
相关的命令:
-
将查询语句交给一个视图对象进行管理:create view 视图对象名 as 查询语句
-
通过视图对象调用管理查询语句: select * from 试图对象
-
-
视图额外的功能:
-
通过视图对象对关联表文件进行插入,删除以及更新操作;
-
-
视图的作用:
-
提高了查询语句的复用性,避免在多出地方重复进行查询语句开发行为
-
隐藏业务中涉及的表的关系,开发人员通过视图进行操作时不会知道具体操作的表
-
关于存储引擎
定义:
MySQL服务器对于表文件中内容的一种管理方式。目前MySQL服务器主要采用的是INNODB(安全,有备份,但是操作速度慢),MyISAM(不会对操作的表文件进行备份,速度快,但是不安全)两种存储引擎。
管理命令:
-
查看MySQL服务器支持存储引擎的种类:
show engines; (默认INNODB)
-
修改MySQL服务器默认的存储引擎:
D:\软件\MySQL\MySQL Server 5.7-----> my.ini文件(MySQL服务器的配置文件)
default-storage-engine=INNODB ------->修改存储引擎
-
设置当前表文件所依赖的存储引擎:
-
显示:show create table 表名;
-
修改: alter table 表名 engine=存储引擎;
-
-
MyISAM存储引擎的特征:
-
对表文件内容进行修改时,存储引擎不会对表文件进行备份操作,提高操作执行效率,但是在操作完毕后无法取消本次操作
-
使用三个文件存储表文件信息
-
表名.frm 存储文件字段信息
-
表名.myd 存储文件数据信息
-
表名.myi 存储表文件中字段所关联的索引信息
-
-
-
INNODB存储引擎特征:
-
在对表文件内容进行修改时,首先进行一次备份再进行操作,因此执行效率相对较慢。但是执行完毕后,由于有备份存在,可以使用备份取消当前操作,增强了数据的安全性。
-
使用一个文件来存储表文件信息:
表名.frm: 存储表文件字段信息,存储表文件数据行信息,存储表文件中字段所关联的索引信息
-
关于事务
定义:事务是MySQL服务器所提供的一个管理对象,用于对当前表文件的备份进行管理。
具体使用:
-
start transaction : 通知mysql服务器提供一个事务对象,该对象对接下来的操作中所产生的所有备份进行管理
-
delete from 表名 where 条件; 生成 -----> 表名.bak 备份文件
-
rollback ; 通知MySQL服务器将本次操作中所有的备份信息覆盖到表文件,来取消本次操作
-
commit; 通知MySQL服务器将本次操作中生成的所有备份信息进行删除