LHNPC数据库基础知识培训常用的几种数据库介绍目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟。面向对象的数据库管理系统虽然技术先进,数据库易于开发、维护,但尚未有成熟的产品。国际国内的主导关系型数据库管理系统有ORACLE、SQLSERVER、SYBASE、INFORMIX和DB2等。这些产品都支持多平台,如UNIX、VMS、WINDOWS,但支持的程度不一样。其他小型的数据库有:Access、Foxpro等,这类数据库灵活易用,但不支持大型应用。常用的几种数据库介绍Informix数据库美国InfomixSoftware公司研制的关系型数据库管理系统。Informix有Informix-SE和Informix-Online两种版本。Oracle数据库美国Orcale公司研制的一种关系型数据库管理系统,是一个协调服务器和用于支持任务决定型应用程序的开放型RDBMS。DB2数据库IBM公司研制的一种关系型数据库系统。DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows等平台下。常用的几种数据库介绍SQLServer数据库Microsoft公司推出的一种关系型数据库系统。主要用于Windows平台。Sybase数据库美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或Windows平台上客户机/服务器环境下的大型数据库系统。Foxpro、Access数据库Microsoft公司推出的微机数据库管理系统。它具有界面友好、易学易用、开发简单、接口灵活等特点。、游标2、数据字典1、数据库体系结构6、数据库设计3、索引4、存储过程数据库数据库基础理论—体系结构SQLServer中数据存储基本单位是页。两种数据库的体系结构ORACLE数据库中的最小存储和处理单位是数据块。数据库基础理论—体系结构在SQLServer中,页的大小为8KB。这意味着SQLServer数据库中每MB有128页。每页的开头是96字节的标头,用于存储有关页的系统信息。数据库基础理论—体系结构在SQLServer上创建了一个数据库。该数据库包括一个主数据文件、一个用户定义文件组和一个日志文件。数据库基础理论—体系结构Oracle系统体系结构是整个Oracle服务器系统的框架,是管理和应用Oracle数据服务器的基础和核心。Oracle系统体系结构由三部分组成:逻辑结构、物理结构和实例。其中,实例是维系物理结构和逻辑结构的核心。数据库基础理论—体系结构逻辑结构指是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。物理结构主要包括数据文件、控制文件和重做日志文件等。实例是Oracle在内存中分配的一段区域SGA(系统全局区)和服务器后台进程的集合。Oracle数据库服务器就是数据库和实例的组合。数据库基础理论—体系结构体系结构三部分之间的关系数据库基础理论—体系结构Oracle10g数据库层次结构图数据库基础理论—数据字典所有方案对象的定义,如:表、视图、索引、聚簇、同义词、序列、过程、函数、包、触发器等。数据字典中包括两部分信息:基表和提供给用户访问的视图。所有的数据字典都保存在SYSTEM表空间中。数据库基础理论—数据字典的系统表数据字典存储SqlServerSysobjectsSyscolumnsSysindexes……OracleDba_tablesDba_usersDba_indexs……数据库基础理论—索引索引会增加速度的原理数据库在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。数据库基础理论—索引普通索引建立语句创建索引CREATEINDEX索引的名字ONtablename(列的列表);修改表时ALTERTABLEtablenameADDINDEX[索引的名字](列的列表);创建表时CREATETABLEtablename([...],INDEX[索引的名字](列的列表));数据库基础理论—索引不适合建索引的地方如果每次都需要取到所有表记录,无论如何都必须进行全表扫描了,那么是否加索引也没有意义了。对非唯一的字段,例如“性别”这种大量重复值的字段,增加索引也没有什么意义。对于记录比较少的表,增加索引不会带来速度的优化反而浪费了存储空间,因为索引是需要存储空间的,而且有个致命缺点是对于update/insert/delete的每次执行,字段的索引都必须重新计算更新。数据库基础理论—存储过程什么是存储过程存储过程是由流控制和sql语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在Oracle中,若干个有联系的过程可以组合在一起构成程序包。数据库基础理论—存储过程优点执行速度比普通的SQL语句快存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次。可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。同时,存储过程的执行是作为一个整体进行的,执行不成功时,会自动回滚,从而保证了数据的完整性。可将体现企业规则的运算程序放入数据库服务器中,以便集中控制,减少业务变更时的工作量。可以降低网络的通信量。数据库基础理论—游标游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。我们可以从某一结果集中逐一地读取一条记录。数据库基础理论—游标声明游标declaremy_cursorcursorkeysetforselect*frominfo删除游标资源deallocatemy_cursor打开游标,在游标关闭或删除前都有效openmy_cursor关闭游标closemy_cursor定位到当前记录后一条fetchnextfrommy_cursorinto@id,@name,@addressselect@idasid,@nameasname,@addressasaddress数据库基础理论—数据库设计数据库的设计需要有经验的工程师在通盘考虑业务的需求后才能做好的。数据库设计的实用原则是:在数据冗余和处理速度之间找到合适的平衡点。冗余最大的威胁是数据的一致性,对于大系统,如果数据库设计有冗余,为了保持数据一致性给编程增加大量工作。数据库基础理论—数据库设计数据库设计原则三个范式第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。、创建和管理表4、视图2、数据控制语言5、控制用户权限1、Select语句的功能语言的使用—Select语句基本SELECT语句语法SELECT*|{[DISTINCT]column|expression[alias],...}FROMtable;SELECT标识选择哪些列。FROM标识从哪个表中选择。语言的使用—Select语句基本SELECT语句语法SELECT*FROMdepartmentswheredept_id=10and…;SELECTdepartment_id,location_idFROMdepartments;SELECTlast_name,salary,salary+300FROMemployees;语言的使用—Select语句使用别名SELECTlast_nameASname,commission_pctcommFROMemployees;……SELECTlast_nameName,salary*12AnnualSalaryFROMemployees;语言的使用—Select语句删除重复行在SELECT子句中使用关键字‘DISTINCT’删除重复行。SELECTDISTINCTdepartment_idFROMemployees;语言的使用—数据控制语言数据控制语言DML可以在下列条件下执行:向表中插入数据修改现存数据删除现存数据事务是由完成若干项工作的DML语句组成的。语言的使用—数据控制语言插入数据DEPARTMENTS新行向DEPARMENTS表中插入新的记录语言的使用—数据控制语言插入数据INSERTINTOtable[(column[,column...])]VALUES(value[,value...]);INSERTINTOdepartments(department_id,department_name,manager_id,location_id)VALUES(70,'PublicRelations',100,1700);1rowcreated.INSERTINTOsales_reps(id,name,salary,commission_pct)SELECTemployee_id,last_name,salary,commission_pctFROMemployeesWHEREjob_idLIKE'%REP%';4rowscreated.语言的使用—数据控制语言更新数据EMPLOYEES更新EMPLOYEES表语言的使用—数据控制语言更新数据UPDATEtableSETcolumn=value[,column=value,...][WHEREcondition];UPDATEemployeesSETdepartment_id=70WHEREemployee_id=113;1rowupdated.UPDATEcopy_empSETdepartment_id=110;22rowsupdated.语言的使用—数据控制语言删除数据DELETEFROMdepartmentsWHEREdepartment_name='Finance';1rowdeleted.使用DELETE语句从表中删除数据。DELETE[FROM]table[WHEREcondition];语言的使用—创建和管理表常见的数据库对象对象描述表基本的数据存储集合,由行和列组成。视图从表中抽出的逻辑上相关的数据集合。序列提供有规律的数值。索引提高查询的效率同义词给对象起别名