由于工作原因,近期可能会开始多复习一些数据库相关的知识了,想深入了解的,也可以一起复习.学习~
前期先巩固一下基础操作,后期会一点点的加深向运维方向深入。开篇主要介绍一些数据库理论知识,不感兴趣的可以向后翻阅;如果你是开发人员可以简单看看基础就够了。废话不多说,开始我们的学习吧!
数据库版本oracle 11g
oracle 11g提供了多种数据库管理工具,sql*plus、oem(企业管理器)、dca(数据库配置助手),本次复习对数据库操作使用的是sql*plus,其实用什么无所谓,主要是学会使用就好了,继续吧~
要使用好oracle,我觉得应该先了解一下它:
一》 开篇–oracle介绍
oracle官网链接:
①oracle是著名的oracle(甲骨文)公司的数据库产品,oracle属于关系型数据库的一种,
常见的关系型数据库还包括mysql、sql server、db2;
非关系型数据库:nosql、mangodb、memcache、redis等等
②那么什么是关系型数据库呢?就是建立在关系模型基础上的数据库。简单理解就是将现实中各个实体(事物)及其之间的各种联系,通过数学概念和方法进行处理,以关系模型进行展现。
③数据库的e-r模型,说到模型就要提到关系型数据库设计了,设计之初首先要建立逻辑模型。
关系型数据库的逻辑模型可以通过实体(事物)和实体关系组成的图形来表示,也就是常用的e-r图,e-r图表示的逻辑模型就是e-r模型。标准的e-r模型主要由三部分组成:实体、属性和联系。而这三部分也正是我们在项目开发中,数据库设计阶段需要深入研究和合理设计数据表的重要三部分。
想要朝着项目经理方向发展的小伙伴,对于项目中数据库的设计还是需要深一步的了解的,这方面还是要通过实践去多加锻炼的。建议:自己模拟一些场景进行设计练习
二》设计范式
关系型数据库的设计范式有第一范式、第二范式、……第六范式、bcnf范式等等,通常的数据库满足前三种范式就足够了。任何关系型数据库都应该满足第一范式,不满足的数据库,则不是关系型数据库。在关系型数据库中,一般称一行数据为一个元组,而列表示的是属性,第一范式是第二、第三范式的基础;;
第一范式:数据库表的每一列都是不可分割的原子数据项,也就是说,实体中的某个属性有多个值时,必须拆分为不同的属性;
比如:班级:计算机系3班,这种就需要再进行数据拆分;
第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性
比如:员工工资表,以员工编号、岗位为复合主键,属性还有姓名、年龄、学历、基本工资、绩效工资、奖金;
这种情况下,员工编号决定的是姓名、年龄和学历,而基本工资是由岗位决定的,不符合第二范式的要求。
一般设计表时,可以设计成三张表:员工管理表、岗位工资表、员工工资表,这样就可以了;
第三范式:任何非主属性不依赖于其它非主属性(在第二范式基础上消除传递依赖)
传递依赖就是如果存在关键字段a决定非关键字段b,而非关键字段b决定非关键字段c,则称非关键字段c传递依赖于关键字段a。
比如:员工编号→员工姓名、年龄、部门编号、部门经理;
这种情况下,员工编号决定部门编号,而部门编号决定部门经理;不符合第三范式
处理方式就是拆分表格:员工信息表和部门信息表;
一般我们使用的大部分都只是满足前三种范式,后几种有感兴趣的可以自行查阅,这里不再细说;我们进行数据库设计时,都希望能够消除数据冗余、更新异常、插入异常和删除异常,那就需要我们按照“规范化”的原则去存储数据。
三》数据库基本操作
oralce操作类型中一共分为ddl(数据定义语言)、dml(数据操纵语言)、tcl(事务控制语言)、dql(数据查询语言)、dcl(数据控制语言)
① ddl给我的个人感觉是有全局眼光的领导层语言;为啥这样形容呢?它主要用于建立、修改、删除数据库对象,面向的对象不是条条的数据,而是整个数据库或者数据表。在数据库中删表删库的操作是属于ddl的,作为程序员的你值得好好关注,不为了去实施这些操作,但多了解一些总没有坏处。
create: 创建表或其他对象结构
alter:修改表或其它对象结构
drop:删除表或者其他对象结构
truncate:删除表数据,保留表结构
② dml追究完美做到极致的技术人员;用于改变数据表中的每条数据;他和事务是好兄弟,一般执行完后需要经过事务控制语句提交后才真正的将改变应用到数据库中
insert :将数据插入到数据表中
update:更新数据表中已经存在的数据
delete:删除数据表中的数据
③tcl 用于维护数据一致性的语句(事务后面会详细谈一下,这个是数据库比较重要的部分)
commit:提交,确认已经进行的数据改变
rollback:回滚,取消已经进行的数据改变
savepoint:保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变
④dql 用于查询数据 select (开发最常用的)
⑤dcl 用于执行权限的授予和收回操作 (dba的日常工作,开发者用不到)
grant:授予,用于给用户或角色授予权限
revoke:用于收回用户或角色已有的权限
create user 创建用户
先到这里吧!下一篇开始sql语句的复习~