


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精编word文档 下载可编辑oracle总结oracle总结当今应用最广泛的数据库产品莫过于oracle数据库,从工业领域到商业领域,从大型机到微机,从unix操作系统到windows操作系统,到处都可以找到oracle数据库的应用案例。随着oracle数据库的发展,越来越多的企业都将oracle数据库应用到自己的企业中,对数据进行储存、管理。oracle之所以广受用户的青睐,其主要原因在于一下几个方面。(1)支持多用户、大事务量的事物处理(2)提供标准操作借口(3)实施安全控制和完整控制(4)支持分布式数据处理(5)具有可移植性、可兼容性和可连续性伴随这些条件,作为我们信息与计算科学专业的学
2、生,如果能够掌握oracle数据库这门重要的技术,将对我们以后在数据库技术的学习中启到举一反三的作用。不管是以前学习的sqlserver,还是以后将要学到的数据挖掘,通过学习oracle数据库后,就能够对数据库的结构有更深的理解,便于数据的处理。下面我就将自己对oracle数据库的理解做如下的总结。一、在windows系统下,安装好oracle数据库。二、可以用dbca创建或手动创建数据库。既然使用dbca创建数据库没有难度,我就主要说下手动创建数据库。其概要内容如下(1)确定新建数据库的名称与实例名称(在cmd下setoracle_sid=test)(2)在相应的地方创建初始化参数文本文件(
3、修改示例的四个名称复制到相应的地方)(3)创建口令文件(orapwdfile=d:oracleproduct10.0.0db_1databasepwdtest.ora)(4)创建实例(oradimnewsidteststartmodeautopfiled:oracleproduct10.0.0admintestpfileinittest.ora)(5)启动实例(1、sqlplus/nolog,2、conn用户名/密码assysdba,3、startupnomount)(6)创建数据库(7)创建附加表空间(8)运行脚本创建数据字典视图(9)创建服务器初始化参数文件三、数据库的存储结构oracle
4、数据库的存储结构分为物理存储结构和逻辑存储结构两种。物理存储结构描述了oracle数据库中的数据在操作系统中的组织和管理,逻辑存储结构,描述了oracle数据库内部的组织和管理。oracle数据库的物理结构由数据文件、控制文件、重做日志文件、归档文件、初始化参数文件、跟踪文件、口令文件、警告文件、备份文件组成。(1)数据文件(.dbf)数据文件是用于保存数据库中数据的文件,系统数据、数据字典数据、临时数据、索引数据、应用数据等都物理地址存储在数据文件中。用户对数据库的操作,例如数据库的插入、删除、修改、查询等,其本质都是对数据文件进行操作。在oracle数据库中,数据文件都是衣服与表空间而存在
5、的。一个表空间可以包含几个数据文件,但一个数据文件只能属于一个表空间。在逻辑上,数据库对象都存放在表空间中,实质上是存放在表空间所对应的数据文件中。(2)控制文件(.ctl)控制文件描述了整个数据库的物理结构信息。控制文件在创建数据库时创建,每个数据库至少有一个控制文件。在数据库启动时,数据库实例依赖初始化参数定位控制文件,然后根据控制文件的信息加载数据文件和重做日志文件,最后打开数据文件和重做日志文件。控制文件主要存储与数据结构相关的一些信息,包括数据库的名称和标识、数据库创建的时间、表空间名称、数据文件和重做日志文件的名称和位置、当前重做日志文件序列号、数据库检查点的信息、回退段的开始和结
6、束、重做日志的归档信息、备份信息、数据恢复所需要的同步信息。(3)重做日志文件(.log)重做日志文件以重做记录的形式记录、保存用户对数据库所进行的变更操作,包括用户执行ddl,dml语句操作。(4)归档文件(.arc)用于保存已写满的重做日志文件。(5)初始化参数文件(.ora)用于设置数据库启动时的参数初始值。(6)跟踪文件用于记录用户进程、数据库后台进程等的运行情况。(7)口令文件(.ora)用于保存具有有sysdba,sysoper权限的用户名和sys用户口令。(8)警告文件用于记录数据库的重要活动以及发生的错误。(9)备份文件用于存放数据库备份所产生的文件。oracle10g数据库的
7、逻辑储存结构分为数据块、区、段、表空间4种。其中,数据块是数据库中最小i/o单元,由若干个连续的数据块组成的区是数据库中最小的存储分配单元,由若干个区形成的段是相同类型数据的存储分配区域,由若干个段形成的表空间是最大的逻辑存储单元,所有的表空间构成一个数据库。(1)表空间一个数据库由一个或多个表空间构成。表空间是存储模式对象的容器,一个数据库对象只能存储一个表空间中(分区表和分区索引除外),但是可以存储在该表空间所对应的一个或多个数据文件中。若表空间只有一个数据文件,则该表空间中所有对象都保存在该文件中;若表空间对应多个数据文件,则表空间中的对象可以分布于不同的数据文件中。表空间分为系统表空间
8、和非系统表空间两类,其中非系统表空间包括撤销表空间、临时表空间和用户表空间。1)系统表空间。系统表空间包括system表空间和辅助系统表空间sysaux,他们是数据库创建时自动创建的。其中,system表空间是系统默认的表空间。system。system表空间主要存储数据库的数据字典、pl/sql程序的源代码和解释代码、数据库对象的定义等信息。sysaux。sysaux表空间主要用于存储数据库组件等信息,以减小system表空间的负荷。2)非系统表空间。撤销表空间。撤销表空间由回滚段组成。每个数据库可以有多个撤销表空间,但每个数据库实例只能使用一个由参数undo_tablespace设置的撤销
9、表空间。当初始化参数undo_tablespace=auto时,系统使用撤销表空间自动进行回滚信息管理。临时表空间。临时表空间是指专门进行临时数据管理的表空间,这些临时数据在会话结束时会自动释放。如果没有用户指定临时表空间,那么oracle会自动将系统的默认临时表空间(defaulttemporarytablespace)作为用户的临时表空间。用户表空间。3)大文件表空间与小文件表空间所谓大文件表空间是指一个表空间只包含一个大数据文件,该文件的最大尺寸为128tb(数据块大小为32kb)或只32tb(数据块大小为8kb)。系统默认创建的表空间称为小文件表空间。那件表空间可以多达1024个数据文
10、件。小文件表空间的总容量与大文件表空间的容量基本相似。表空间管理。表空间管理只要包括表空间的创建、修改、删除,以及表空间内部区的分配、段的管理。1)创建表空间。创建永久表空间使用createtablespace语句来实现,包含以下子句。设定表空间对应的数据文件datafile、表空间的管理方式extentmanagement(默认local)、定区的分配方式(默认autoallocate)、设定段的管理方式segmentspacemanagement(默认auto)。创建临时表空间使用createtemporarytablespace语句实现,用tempfile子句设置临时数据文件。本地管理的
11、临时表空间中区的分配方式只能是uniform。创建撤销表空间使用createundotablespace语句实现,其他子句不变。2)修改表空间。修改表空间的读/写性。使用altertablespacereadonly|readwrite设置。设置默认表空间。在创建数据库用户时,如果没有使用defaulttablespace选项指定默认(永久)表空间,则该用户使用数据库的默认表空间;如果没有使用defaulttempprarytablespace选项指定默认临时表空间,则该用户使用数据库的默认临时表空间。使用alterdatabasedefaulttablespace语句设置数据库的默认表空间;
12、使用alterdatabasedefaulttemporarytablespace语句设置数据库的默认临时表空间。表空间的重命名。使用altertablespacerenameto语句重命名表空间,但是不能重命名system表空间和sysaux表空间,不能重命名处于脱机状态或部分数据文件处于脱机状态的表空间。3)表空间的备份使用altertablespacebeginbackup语句将表空间市值为备份模式。在操作系统中备份表空间所对应的数据文件。使用altertablespaceendbackup语句结束表空间的备份模式。4)删除表空间使用dorptablespaceincludingcont
13、ents语句可以删除表空间及其内容。(2)数据块oracle数据块是数据库中最小单元的逻辑存储单元,也是数据库执行输入/输出操作的最小单位,由一个或多个操作系统块构成。在oracle10g中,数据块包括标准块和非标准块两种,其中标准块在数据库创建时由db_block_size参数设置,其大小不可更改。数据块的结构由块头部和存储区两部分构成。块头部包括标题、表目录、行目录三部分。对块的管理分为手动和自动两种。如果简历表空间时使用本地管理方式,并且将段的管理方式设置为auto,则蚕蛹自动方式管理块。否则,dba可以采用手动管理方式,通过为段设置pctfree和pctused两个参数来控制数据块中空
14、闲空间的使用。(3)区区是由一系列连续的数据块构成的逻辑存储单元,是存储空间分配与回收的最小单位。(4)段段是由一个或多个连续或不连续的区组成的逻辑存储单元。段分为数据段、索引段、临时段和回滚段4类。四、数据库实例oracle数据库主要由两部分构成放在磁盘中的物理数据库和对物理数据库进行管理的数据库管理系统。数据库与实例是一一对应的。在并行oracle数据库服务器结构中,数据库与实例是一对多的关系。oracle实例由内存结构和后台进程组成,内存结构又分为系统全局区(sga)和程序全局区(pga)。(1)sgasga主要由数据高速缓冲区、共享池、重做日志缓冲区、大型池、java池、流池和其他结构
15、组成。(2)pgapga由排序区、会话区、游标区和堆栈区组成。oracle后台进程进程随数据库实例的启动而启动,它们协调服务器进程的工作,优化系统的性能。可以通过初始化参数文件中参数的设置来确定启动后台进程的数量。后台过程包括dbwr、lgwr、ckpt、smon、arch、reco、lckn、dnnn。五、数据库服务工作模式与数据字典oracle数据库创建服务器进程来处理连接到数据库的用户进程的请求。根据工作方式的不同。可以分为专用服务器模式和共享服务器模式两种。如果要数据库运行在共享服务器模式,则需要进行数据库吃实话参数的配置。服务器进程与用户进程是一对一的关系。各个专用服务器进程之间是完
16、全独立的,它们之间没有数据共享。oracle数据库的数据字典是数据库在创建的过程中创建的,由一系列表和视图构成,这些表和视图对与所有的用户,都是只读。六、模式对象在oracle数据库中,用户数据是以对象的形式存在的,并以模式为单位进行组织。所谓模式是指一系列逻辑数据结构或对象的集合。模式与用户相对应,一个模式只能被一个数据库用户所拥有,并且模式的名称与这个用户的名称相同。表是数据库中最基本的对象,数据库中所有数据都以二维表的形式存在。在oracle数据库中,根据表生存周期的不同,可以分为永久性表和临时表;根据表中数据组织方式的不同,可分为标准表、索引化表、分区表及外部表等。(1)表的创建。创建
17、表使用createtable语句,语法为createtabletable_name(column_namedatatypecolumn_level_constraint,column_namedatatypecolumn_level_constraint,table_level_constraint)parameter_list;创建临时表。使用createglobaltemporarytable语句创建临时表,使用oncommit子句说明表的类型,默认为事务级别的临时表。(2)表约束。表创建后,可以通过altertable语句添加和删除约束。添加约束可以分为添加主键约束、添加唯一行约束、添加
18、检查约束、添加外键约束、添加空/非空约束。(3)修改表表创建后,可以对表进行修改,包括列的添加、删除、修改,表参数的修改,表的移动或重组,存储看哦哦你关键的分配与回收,表的重命名和约束的添加、删除、修改、激活、禁用。索引化表是一种特殊的表。要创建索引化表,必须在createtable语句中显式地指定organizationindex关键字,同时必须建立一个primarykey约束。分区表。所谓分区是指将一个巨型表或巨型索引分成若干个独立的组成部分进行存储和管理,每一个相对小的、可以独立管理的的部分。外部表是一种特殊的表,在数据库中只保存表的鼎,而数据以文字形式保存在数据库之外的操作系统中,数据
19、源文件与表之间维持映射关系。七、安全管理oracle数据安全控制机制包括以下六个方面。(1)用户管理为了保证只有合法的身份的用户擦能访问数据库。(2)权限管理用户登录数据库后,只能进行其权限范围内的操作。(3)角色管理通过角色方便地实现用户权限的授予与收回。(4)表空间的设置和配额通过设置用户的默认表空间、临时表空间和在临时表空间上的使用配额,可以有效的控制用户对数据库存储空间的使用。(5)用户资源限制通过概要文件,限制用户对数据库资源的使用。(6)数据库审计监视和记录用户在数据库中的活动。八、备份与恢复数据库备份就是数据库中部分或全部数据进行复制,形成副本,存放到一个相对独立的设备上,如磁带
20、、磁盘,以备将来数据库出现故障时使用。根据数据备份方式的不同,数据库备份分为物理备份和逻辑备份两类。武库备份是将组成数据库的数据文件、重做日志文件、控制文件、初始化参数文件等操作操作系统文件进行复制,将形成的副本保存到与当前系统独立的磁盘或磁带上。逻辑备份是指利用oracle提供的当初工具将数据库中的数据抽取出来存放到一个二进制文件中。以上就是我目前学习到有关oracle数据库的一些知识。虽然,现在只学习到oracle数据库的一些皮毛,但是我相信在以后的学习或工作将继续对oracle数据库做更加深刻的理解。扩展阅读oracle总结oracle一些概念linux中登录oracle的命令sqlpl
21、us用户名/密码showuser显示当前登录的身份.setpauseon(网页中分页)setpauseoff分页显示(sql*plus中在网页中是不分页).oracle中默认日期和字符是左对齐,数字是右对齐tableorviewdoesnotexist;表或示图不存在edit命令用于自动打开vi修改刚修执行过的sql的命令。查看表的结构(包含的字段):descs_dept(控制台);descdept(浏览器)查询selecttable_namefromuser_tables;(控制台)一、数据库基本概念1)数据库管理系统一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,oracle
22、、db2、mysql、msserver;2)数据库:按照数据结构来组织、存储和管理数据的仓库。3)数据4)表(table)数据库中的表与我们日常生活中使用的表格类似,它也是由行(row)和列(column)组成的。5)视图其实是一个虚拟的表,在数据库中并不实际存在。视图数据是由查询数据库表产生的,它限制了用户能看到和修改的数据。6)索引索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。7)存储过程存储过程是为完成特定的功能而汇集在一起的一组sql程序语句,经编译后存储在数据库中的sql程序。8)触发器触发器是一个用户定义
23、的sql事务命令的集合。当对一个表进行插入、更改、删除时,这组命令就会自动执行。9)er图实体关系图10)范式第一范式数据库表的每一列都是不可分割的基本数据项;第二范式要求实体的属性完全依赖于主关键字primarykeyselectcourse表(学号,姓名,年龄,课程名称,成绩,学分)1、数据冗余2、更新异常3、插入异常4、删除异常第三范式数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖;11)事务特性原子性、一致性、隔离性、持久性设置oracle事务隔离界别settransactionisolationlevelserializable;未提交读事务a可以读取事务b未提交的数据
24、。提交读事务a只能读取事务b提交了的数据可重复读在同一个事务a里,先后执行同一个查询语句,得到的结果是一样的。序列化读事务a在执行的时候不允许其他事务的执行,隔离级别最高。12)sql结构化查询语言,是操作关系型数据库中的对象。二、sql语句sqlstatement(sql语句)1)ddldatadefinationlanguage数据库定义语言create,alter,drop,truncate2)dmldatamanagementlanguage数据库操纵语言insert,upate,delete3)dcldatacontrollanguage数据库控制语言grantrevoke4)tcl
25、transactioncontrollanguage)数据库事务控制语言commit,rollback,savepoint5)select数据库查询语句select三、数据库查询1、查询操作1)投影操作只查询表的某些字段如:selectname,birthdayfromstudent;2)关联操作多个表操作3)选择操作根据条件筛选记录,可认为是添加了where子句2、查询语句selectdintinct*,columnalias,fromtablename;1)投影操作selecttable_namefromuser_tables;查询系统表desc表名;查看表的结构去重复数据distinct
26、例selectdistinctdept_id,titlefroms_emp;这样写的话,distinct会管到后面的所有字段,即对所有字段排序后,再排重。即排重的是dept_id和title的组合。在select语句中可以使用数学表达式。selectfirst_name,salary*12froms_emp;别名,三种方法1、selectfirst_namenamefroms_emp;2、selectfirst_nameasnamefroms_emp;3、selectfirst_namefirstnamefroms_emp;如果别名中有空格或大小写敏感,要把双引号括起来;父查询可调用子查询的别
27、名,当前查询调用当前别名需要看执行顺序;双引号别名调用时仍需双引号但是内部字母区分大小写;且识别空格,有多少是多少;多个空格在显示时只有一个空格,无空格则不显示,这是和使用相区别;只有双引号中能添加空格;若别名中有空格则加上”字符串拼接使用|符号selectfirst_name|last_namefroms_emp;(|无论哪里出现空格都对拼接无障碍且无空格显示)空值的处理-nvl(column,defaultvalue)函数selectfirst_name,12*salary*(1+nvl(commission_pct/100,0)froms_emp;nvl函数是指当第一个参数column如
28、果为空(null值)的话,oracle就会默认为第二个参数defaultvalue的值,如果第一个参数不为空的话,就选择第一个参数本身的值。内容区分大小写;2)选择操作:排序orderby字段|别名|字段位置升序(asc)|降序(desc)selectfirst_name,salaryfroms_emporderbysalary;默认的是升序排序字段的空值处理降序时null值排在前,升序时null排在后selectfirst_name,salaryfroms_emporderbyfirst_name,salarydesc;按first_name升序排序,如果first_name相同,再按sal
29、ary排序能够触发排序的关键字:distinct、orderby、groupby3、where子句where子句使用在select.from.后面,用来选择所需(符合条件的)的记录where后面跟的是表达式也就是xxx=xxx,xxxbetweenxandx,xxxin(x,x,x),like.等请注意selectcolumnsfromtablewhereclause是先from表再where条件,最后select出你要的字段。非数字类单引号引用;1)通配查询between.and.表示结果在这区间之间,betweenand是一个闭区间,也就相当于.=.。!=,=,这三个都是指不等于,且=,=
30、,这些运算符也可以使用。in(va1,val2,.)表示判断结果是否在这个枚举中存在,即每一个值都去匹配like表示字符串通配查询,%表示任意多个字符,_,表示任意一个字符。注意转义的用法likes_%escape;escape指定义什么是转义符,可以是任意的特殊符号,包括数字和字符串,但数字和字符串要是定义为转义符会不会对操作造成影响需要考虑考虑。2)逻辑符and表示只有两个或多个条件同时满足。or表示条件只要满足其中只一就可以。all表示条件都满足时。not表示是可以与以上的条件产生反效果。空值会对notin造成影响,也就是不等于任何值,但是空值例外,空值跟任何值比较都为空。notin不包
31、含空值,null不被算在内。不包含在里面的值可能是有空值但是空值会被notin排除在。isnull表示判断值是否为空。注意oracle中的字符串是严格区分大小写的。这里所谓的字符串是指数据表中的数据(信息)。select*,columnsalias,.在这里实现投影操作fromtable_namewhereclause查询条件注意:表示这部分内容可有可无orderbycolumns(asc|desc)排序子句注意:表示这部分内容可有可无;(|)选择其一四、单行函数1、字符函数lower(字段名)表示转小写,其中的参数可以是一个字符串常量或是一个字段名upper(字段名)表示转每个单词首字母大写
32、;initcap(字段名)表示首字母大写;concat(字段1,字段2)表示字符串拼接;(|)substr(字段名,起始位置,取字符个数)表示截取字符子串,位置是从1开始length(字段名)表示该字段的字符长度,打出字符串长度例selectsubstr(first_name,-2,2)subfroms_emp;(取后两个)selectsubstr(first_name,2,2)subfroms_emp;(取前两个)使用-表示取后面的字符串,取的时候仍是从左往右取。2、数值函数round(数据,保留小数点后几位)表示四舍五入可以用负数表示小数点前,0,表示小数点后第一位,也就是保留个位,-1表
33、示个位(保留到十位);小数点后面的位数可以为负数;从小数点处开始数,向左为负,向右为正。例selectround(136,1)fromdual;trunc(数据,保留的位数(小数点后位数))表示截取数字函数,截取个位之后补0;小数点后面的位数可以为负数;从小数点处开始数,向左为负,向右为正。在边截取整数位数字后补零;例selecttrunc(12456,1)fromdual;3、日期函数日期格式,全日期格式世纪信息,年月日,时分秒。缺省日期格式,日-月-年dd-mon-rr修改当前会话的日期格式,会按照指定的格式输出日期altersessionsetnls_date_format=yyyymm
34、ddhh24:mi:ss;返回当前日期sysdate例selectsysdatefromdual;selectsysdate+1fromdual;获得明天的日期,加1,单位是天日期是格式敏感的日期内置函数months_between(sysdate,addmonth(sysdate,5))/两个月有多少天。add_months(sysdate,-5)在系统时间基础上延迟5月add_months(sysdate,-5*12)在系统时间基础上延迟5年last_day(sysdate)一个月最后一天next_day(sysdate,friday)下个星期星期几round(sysdate,day)不是
35、四除五入,是过了中午的留下,不过的略掉trunc(sysdate,month)不到一月的都省略例round(25-may-95,month)01-jun-95round(25-may-95,year)01-jan-95trunc(25-may-95,month)01-may-95trunc(25-may-95,year)01-jan-954、不同数据类型间转换函数将字符转换成数字to_number(.)将数字转字符to_char(number,fmt)fmt是数字格式将字符串转成日期to_date(.,日期格式)例selectto_char(to_date(201*1103,yyyymmdd)
36、,dd-month-yy)fromdual;selectto_char(345789,9,99999)fromdept;变成一个字符串的格式,9是一种显示格式,运行结果3,45789除了9之外还可以写0,本位上有的话直接写,没有的话补0selectto_char(34578,000,000.000)fromdept;运行结果003,45780selectto_char(34578,fm$99,000.000)fromdept;去除前面的空格selectto_number(124)+3fromdept;有默认的转换即去掉to_number,不同类型的转换可以强行也可以自动(不是所有的都可以)格式
37、是9时9的整数个数不能小于数字的整数位数,小数部分没有的话会补00时0的整数个数不能小于数字的整数位数,前后没有的都补0改变nls_lang的值让输出结果的货币单位是¥或$,需修改环境变量,临时的即可setenvnls_langsimplifiedchinese_china.zhs16gbksetenvnls_langamerican_america.us7ascii在xp系统的浏览器或oracle的plsql中可使用下面指令修改语言环境,之后并且要输入commit提交altersessionsetnls_language=american;altersessionsetnls_languag
38、e=simplifiedchinese;5、关联操作等值查询表之间的连接是通过相等的字段值连接起来的查询称为等值连接查询。查询员工的名称,部门名称,地区名称selecte.first_name,,froms_empe,s_deptd,s_regionrwheree.dept_id=d.idandd.region_id=r.id;查询ben在那个部门那个地区上班selecte.first_name,,froms_empe,s_deptd,s_regionrwheree.dept_id=d.idandd.region_id=r.idandlower(
39、e.first_name)=ben;非等值连接:连接条件使用除等于运算符以外的其它比较运算符,比较被连接的列的列值。这些运算符包括、=、e,s_empmwheree.manager_id=m.id(+);有(+)表示本方会为对方补空值注意条件(+)跟在要全部选出的一方,即一方比一方多余的记录要输出的加(+),不能使用in和or;fromt1,t2wheretc1=tc2(+)把t1表中匹配不上的记录重新找回来fromt1,t2wheretc1(+)=tc2把t2表中匹配不上的记录重新找回来selfjoin自连接fromt1,t2wheret1。c1=t2。c2(innerjoin)fromt1
40、,t2wheret1。c1=t2。c2(+)(outerjoin)t1表中匹配不上的记录找回来wheret1。c1(+)=t2。c2t2表中匹配不上的记录找回来outerjoin=innerjoin+匹配不上来的;五、组函数1、groupby表示分组函数,having表示对查询结果进行过滤where子句用来筛选from子句中指定的操作所产生的行,不能跟组函数groupby子句用来分组where子句的输出having子句用来从分组的结果中筛选行2、组函数a)avg查询平均值b)count查询记录条件,参数可以是任何类型,忽略空值;多少条记录不包含空值;c)max查询最大值,字符串从左边第一个开始
41、比,第一相同就比第二个,第一个不相同大的徘前面;d)min查询最小值e)sum查询数字的和,貌似只用于数字,反正字符串不能用;所有组函数的计算都会忽略空值avg、sum只能用于数值类型3、注意groupby子句也会触发排序操作,会按分组字段排序,即使用orderby查询提成平均值selectavg(nvl(commission_pct,0)froms_emp;查询员工分布在几个不同的部门selectcount(distinctdept_id)froms_emp;查询42部门的平均工资selectavg(salary)salaryfroms_empwheredept_id=42;查询不同部门的平
42、均工资selecte.dept_id,avg(salary)froms_empegroupbye.dept_id;查询不同部门不同职位的平均工资selecte.dept_id,e.title,avg(salary)froms_empegroupbye.dept_id,e.title;注意:当使用groupby语句时,select后面的只能是组函数和groupby后面的字段,若不使用groupby语句时,select后面的可以是普通字段或者全部是组函数查询不同部门不同职位的平均工资(要求显示部门名称),e.title,avg(salary)froms_empe,s_dep
43、tdwheree.dept_id=,e.title;查询不同部门的平均工资(要求显示部门名称)根据部门编号和部门名称分组selecte.dept_id,,avg(salary)froms_empe,s_deptdwheree.dept_id=d.idgroupbye.dept_id,;求42部门的平均工资selecte.dept_id,max(),avg(salary)froms_empe,s_deptdwheree.dept_id=d.idandd.id=42groupbye.dept_id4、sql结构select*,c
44、olumn1alias1,.fromtable_namewhereclause查询条件groupbyhavingorderbyclause排序子句5、子查询就是可以嵌在任何的sql语句中的select语句,把子查询的结果当做范围再区查询一遍在select语句中嵌套子查询时,会先执行子查询。一般的会将子查询放在运算符的右边注意在使用子查询时,要注意这个运算符是单行的(也就是只能是单值),还是多行运算符(范围,多值,in)。配合使用子查询返回的结果必须符合运算符的用法查询和smith做同样工作的员工selectlast_namefroms_empwheretitle=(selecttitlefro
45、ms_empwherelower(last_name)=smith)andlower(last_name)smith;selectlast_namefroms_empwheretitlein(selecttitlefroms_empwherelower(last_name)=smith)andlower(last_name)smith;如果能保证子查询结果为单值可以用=,如果不确定可以用in查询大于32部门平均工资部门的平均工资selectdept_id,avg(salary)froms_empgroupbydept_idhavingavg(salary)(selectavg(salary)f
46、roms_empwheredept_id=32);查询哪些人不是领导selectfirst_namefroms_empwhereidnotin(selectmanager_idfroms_empwheremanager_idisnotnull);哪些员工的工资和本部门的平均工资一样selectfirst_name,dept_id,salaryfroms_empwhere(dept_id,salary)in(selectdept_id,avg(salary)froms_empgroupbydept_id);6、rownum实现分页oracle查询前十条语句select*from(selecta.
47、*,rowmunrnfrom(select*froms_emp)awhererowmun=1;查询1020条记录select*from(selecta.*,rownumrnfrom(select*froms_emp)a)wherernbetween10and20;from,where后面可以跟子查询:selectfirst_name,salaryfroms_empt1,(selectdept_id,avg(salary)avgsalaryfroms_empgroupbydept_id)t2wheretdept_id=tdept_idandtsalarytavgsalary;rownum对于一个
48、查询返回的每一行,rownum伪列返回一个数值代表的次序。rownum伪列特点1)要么等于1要么小于某个值,不能直接等于某个值,不能大于某个值2)常用于分页显示返回的第一行的rownum值为1,第二行的rownum值为2,依此类推。通过使用rownum伪列,用户可以限制查询返回的行数如select*froms_empwhererownum引用完整性约束2、fk(foreignkey外键约束)至少存在两张表把外键所在的表称子表,其引用的表称为父表,外键的一些规范约束,是在子表中设置外键,一定是与父表的主键对应先建父表,后建子表先删子表,再删父表3、uk(uniquekey唯一约束)唯一可以为空4
49、、notnull非空约束所谓的约束是指在建表的时候对字段设置,当插入(insert)数据时会根据约束对插入的数据进行检查,例如某一字段为notnull,若插入该字段的记录(数据)是一个null值,就会报擦插入数据错误。把er图关系模式转化成表关系一对多多的那边做外键多对多用中间表把两个表连起来,学生表-课程表是多对多关系,需要建立一个中间表,学生选课表,这个包含两个表的主键做为它的自己的联合主键一对一外键加个唯一约束范式第一范式(1nf):在关系模式r中的每一种具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称r是第一范式的关系。第一范式简单的说就是要求属性具有原子性,不可以再分,第
50、一范式面临的问题?引出第二范式第二范式(2nf)如果关系模式r(u,f)中的所有非主属性都完全依赖于任意一个候选关键字(可以使组合式的主键),则称关系r是属于第二范式。第二范式简单的说,就是每个表都有个主键,其他字段完全依赖于该主键,第二范式的问题?引出第三范式。第三范式(3nf)如果关系模式r(u,f)中的所有非主属性对任何候选关键字(即主键)都不存在传递依赖,则称关系r是属于第三范式。数据库定义语言a)数据库对象tableviewindexsequenceb)建表定义表的数据结构数据类型varchar(n)可变类型,按实际数据的长度存储char(n)定长,按定义的长度存储number(m,
51、n)数值类型,可以定义宽度,也可以不定义宽度,默认缺省为38date日期类型,一定不能定义宽度char类型是一个固定长度的类型,会补空位;varchar和varchar2都是可变的,varchar是sql的标准,再别的数据库中都有,varchar2是oracle自身的标准。char类型最多的字符是4000个!建表的时候请注意字段与字段之间用“,”分割,最后一个字段不需要“,”标示,所谓字段如下的c1、c2等,数据是指数据表实际存在的信息,可通过insert、update等实现数据信息持久createtablesunzw_test(-创建表c1varchar2(10),c2char(10),c3
52、number(3),c4date);insertintosunzw_testvalues(sunzw,123,200,to_date(201*11412:34:12,rrrrmmddhh24:mi:ss);-要注意数据格式和精确度createtablesunzw_test(c1varchar2(10)constraintssunzw_test_pk_c1primarykey,-把c1设为主键,列级约束c2char(10),c3number(3),c4date);createtablesunzw_test(c1varchar2(10),c2char(10),c3number(3),c4date,
53、constraintssunzw_test_pk_c1primarykey(c1)-表级约束);注意定义联合主键时,只能用表级约束createtablesunzw_test(c1varchar2(10),c2char(10),c3number(3),c4date,constraintssunzw_test_pk_c1(约束名可有可无)primarykey(c1,c2);约束notnull约束(这个字段不允许为空)createtablesunzw_test(c1numbernotnull,c2number);-为c1定义了非空约束notnull约束只能定义为列级约束unique唯一约束createtablesunzw_test(c1numberprimarykey,c2numberunique);-为c2定义唯一约束唯一约束可以为空,唯一约束不考虑空值联合主键约束,这时只能用表级约束createtablesunzw_test(c1number,c2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国中铁集团校园招聘面试宝典与模拟题集
- 2025年装卸搬运服务项目合作计划书
- 护理消化道早癌课件
- 2025年贵金属靶材项目建议书
- 2025年低熔点金属胶项目建议书
- 抢救课件教学课件
- 抢修站员工安全培训课件
- 2025年军迷用品项目发展计划
- 抗癫痫药和抗惊厥药课件
- 轮胎考试题及答案
- (完整版)电除颤操作评分标准
- 1.8.1项目实施成果规范要求
- 《中华人民共和国职业分类大典》电子版
- 2022学校校服选用工作自查整改报告
- 2019修订《城市规划设计计费指导意见》
- 星级酒店工程部培训课件精品ppt
- 五年级下册数学开学第一课.ppt课件
- 填充墙施工正确和错误做法图文对照解说
- 数字电子技术基础:第9章 Verilog HDL基本语法
- 建筑设计费请款单文本格式
- 滨州熔盐储能项目建议书(范文模板)
评论
0/150
提交评论