首页 Oracle10g数据库建模与设计(共31页)

Oracle10g数据库建模与设计(共31页)

举报
开通vip

Oracle10g数据库建模与设计(共31页)目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc303232529"目录PAGEREF_Toc303232529\h1HYPERLINK\l"_Toc303232530"第1章数据库概述PAGEREF_Toc303232530\h1HYPERLINK\l"_Toc303232531"1.1数据库系统概述PAGEREF_Toc303232531\h1HYPERLINK\l"_Toc303232532"1.1.1信息、数据与数据库PAGEREF_Toc3...

Oracle10g数据库建模与设计(共31页)
目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc303232529"目录PAGEREF_Toc303232529\h1HYPERLINK\l"_Toc303232530"第1章数据库概述PAGEREF_Toc303232530\h1HYPERLINK\l"_Toc303232531"1.1数据库系统概述PAGEREF_Toc303232531\h1HYPERLINK\l"_Toc303232532"1.1.1信息、数据与数据库PAGEREF_Toc303232532\h1HYPERLINK\l"_Toc303232533"1.1.2数据管理技术的发展PAGEREF_Toc303232533\h2HYPERLINK\l"_Toc303232534"1.1.3数据库系统(DatabaseSystemDBS)的组成PAGEREF_Toc303232534\h2HYPERLINK\l"_Toc303232535"1.1.4数据库系统的模式结构PAGEREF_Toc303232535\h3HYPERLINK\l"_Toc303232536"1.1.5数据库系统的特点PAGEREF_Toc303232536\h4HYPERLINK\l"_Toc303232537"1.2数据模型PAGEREF_Toc303232537\h4HYPERLINK\l"_Toc303232538"1.3数据描述PAGEREF_Toc303232538\h5HYPERLINK\l"_Toc303232539"1.4关系数据库PAGEREF_Toc303232539\h6HYPERLINK\l"_Toc303232540"1.5数据库管理系统PAGEREF_Toc303232540\h6HYPERLINK\l"_Toc303232541"1.5.1几个常用的数据库管理系统PAGEREF_Toc303232541\h6HYPERLINK\l"_Toc303232542"1.5.2Oracle数据库简介PAGEREF_Toc303232542\h6HYPERLINK\l"_Toc303232543"1.5.3Oracle10g数据库系统及Navicat的安装PAGEREF_Toc303232543\h7HYPERLINK\l"_Toc303232544"1.6本章知识点总结PAGEREF_Toc303232544\h9HYPERLINK\l"_Toc303232545"第2章Oracle10g数据库的SQL语言与查询PAGEREF_Toc303232545\h10HYPERLINK\l"_Toc303232546"2.1SQL语言概述PAGEREF_Toc303232546\h10HYPERLINK\l"_Toc303232547"2.2Oracle10g数据库的数据类型、运算符和表达式PAGEREF_Toc303232547\h10HYPERLINK\l"_Toc303232548"2.2.1简单数据类型PAGEREF_Toc303232548\h10HYPERLINK\l"_Toc303232549"2.2.2运算符PAGEREF_Toc303232549\h10HYPERLINK\l"_Toc303232550"2.2.3表达式PAGEREF_Toc303232550\h10HYPERLINK\l"_Toc303232551"2.3Oracle10g的SELECT查询语句PAGEREF_Toc303232551\h10HYPERLINK\l"_Toc303232552"2.3.1简单查询(select…from结构)PAGEREF_Toc303232552\h10HYPERLINK\l"_Toc303232553"2.3.2带条件的简单查询(select…from…where…结构)PAGEREF_Toc303232553\h11HYPERLINK\l"_Toc303232554"2.3.3单表查询的应用PAGEREF_Toc303232554\h11HYPERLINK\l"_Toc303232555"2.3.4多表查询PAGEREF_Toc303232555\h12HYPERLINK\l"_Toc303232556"2.3.5子查询PAGEREF_Toc303232556\h12HYPERLINK\l"_Toc303232557"2.3.6作业PAGEREF_Toc303232557\h13第1章数据库概述1.1数据库系统概述信息、数据与数据库信息是一种已经被加工为特定形式的数据,数据是信息的载体和具体表现形式,信息不随数据形式的变化而变化。很多人认为数据就是数(数字组成),实际上数据的有很多种形式:文字、数字、声音、图像等。数据和信息时两个相互联系但又相互区别的概念,数据是信息的具体表现形式,信息时数据有意义的表现,而数据库是一个可以共享的、存储在计算机内的、有组织的数据集合。数据管理技术的发展数据管理技术的发展分为:人工管理、文件管理、数据库管理(分布式数据库管理、面向对象的数据库管理)等几个阶段。人工管理阶段文件管理阶段数据库管理阶段三个阶段数据管理技术比较1.1.3数据库系统(DatabaseSystemDBS)的组成数据库系统由计算机硬件、数据库管理系统(DBMS)(及其开发工具)、、数据库(DB)、应用程序和用户等几部分组成。1、硬件平台①有足够大的内存,存放OS、DBMS的核心模块、数据缓冲区和应用程序。②有足够大的磁盘,存放数据库,并进行数据备份。③有较高的通道能力,以提供高速的数据传输功能。2、软件平台①DBMS:是数据库的建立、使用和维护所必需的系统软件。②OS:支持DBMS的操作系统平台。③程序设计语言:与数据库系统有接口的程序设计语言及其编译系统,用于开发应用程序。④开发工具与环境:为数据库系统的开发和应用提供良好的环境。⑤应用程序:为特定应用环境而开发的数据库应用系统。3、人员1)数据库管理员(DataBaseAdministrator,简称DBA):数据库系统需要有专门的人员来监督和管理。DBA负责全面管理和控制数据库系统。具体职责包括:①决定数据库中的信息内容和结构②决定数据库的存储结构和存取策略③定义数据的安全性要求和完整性约束条件④监控数据库的使用和运行⑤负责数据库的改进和重组重构工作2)系统分析员负责应用系统的需求分析和 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 说明工作,要和用户以及DBA相互沟通,确定系统的硬件、软件配置,并参与数据库系统的概要设计。3)数据库设计员负责数据库中数据的确定、数据库各级模式的设计。数据库设计人员必须参加用户需求调查和系统分析,然后进行数据库设计。4)应用程序员负责设计和编写数据库应用系统的程序模块,并进行调试和安装。5)最终用户通过数据库应用系统的用户界面使用数据库。DBS:DBMS\DB\DBA1.1.4数据库系统的模式结构数据库系统的结构由内部级、概念级、外部级三级模式组成。1、内部级模式(内模式):最靠近物理存储器,是数据在数据库系统中的表示(即对数据的物理结构和存储方式的描述),是物理数据模型对数据的描述。2、概念级模式(模式):间于上述两者之间。它又称为逻辑模式,是用逻辑数据模型对一个单位的数据的描述,是数据库中的全体数据的逻辑结构和特性的描述。3、外部级模式(外模式):又称子模式或用户模式,是数据库用户看到的数据视图。最靠近用户,是用户和数据库的接口,设计有数据提供给用户的使用方式。支持以上三级模式的计算机程序就是数据库管理系统(DBMS)。数据库的三级模式结构图如下:4、三级模式构成了两个映射1)外模式/模式映象对于每一个外模式,数据库系统都有一个外模式/模式映象,它定义了该外模式与模式之间的对应关系。这些映象定义通常包含在各自外模式的描述中。当模式改变时,由数据库管理员对各个外模式/模式的映象作相应改变,可以使外模式保持不变,从而应用程序不必修改,保证了数据的逻辑独立性。2)模式/内模式映象数据库中只有一个模式,也只有一个内模式,所以模式/内模式映象是唯一的,它定义了逻辑结构与存储结构之间的对应关系。该映象定义通常包含在模式描述中。当数据库的存储结构改变了(例如采用了更先进的存储结构),由数据库管理员对模式/内模式映象作相应改变,可以使模式保持不变,从而保证了数据的物理独立性。1.1.5数据库系统的特点1、实现数据共享、减少数据冗余2、采用特定的数据模型3、具有较高的数据独立性4、有统一的数据控制功能1.2数据模型数据模型的作用是在计算机环境中把数据逻辑地组织成为数据库,使得用户能够有效地存取和处理数据。1、层次模型数据结构是有序的树型结构,基本特征是:(l)有且只有一个结点无双亲,该结点称为根结点;(2)其他结点有且只有一个双亲。R1是根结点,R2和R3是R1的子结点,因此它们是兄弟结点。R2、R4、R5是叶结点。2、网状模型  网状模型的特征是:(l)允许有一个以上的结点没有双亲;(2)结点可以有多于一个的双亲。3、关系模型1)关系模型中的数据在用户观点下的逻辑结构是二维表,而关系模型是建立在集合代数的基础上的。在网状和层次模型中的联系都是通过指针来实现的,而在关系模型中的基本数据结构是表格, 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 之间的联系是通过各个关系模式的关键码来体现的。以二维表格描述简单、易懂,用户只需简单查询语句就可以对数据库进行操作,并不涉及存储结构和访问技术的细节等。2)在关系模型中,关系具有以下基本特点:①关系必须规范化,属性不可分割。②在同一关系中不允许出现相同的属性名。③在同一关系中元组及属性的顺序可以任意。④任意交换两个元组(属性)的位置,不会改变关系模式。3)每个关系都有一个关系模式,它是该关系的关系名及其全部属性名的集合,一般表示为:关系名(属性名1,属性名2,……,属性名n)1.3数据描述1、计算机处理信息的过程首先从现实世界中抽象出大量描述客观事物的信息,再对这些信息进行整理、分类和规范,进而将规范化的信息数据化,最终实现由数据库系统存储、处理。即客观世界信息世界数据世界2、实体与属性3、实体之间的关系1)一对一的联系(1:1),如班长与班级2)一对多的联系(1:n),如班级与学生3)多对多的联系(m:n),如教师与学生1.4关系数据库1、关系数据库的定义关系数据库是建立在关系模型基础上的数据库,它由一些相关的表和其它的数据库对象组成。这个定义包含了如下几层含义:建立在关系模型基础上;2)信息被存放在表(二维表)中;3)表之间是相互联系的;4)除了表之外,还有其它的数据库对象如索引、视图、存储过程等。2、关系数据库的主要功能和特征1)数据定义,定义和删除数据库中的表、索引、视图等数据库对象。2)数据操纵,实现对数据库中数据的操作,基本的操作有查询、数据插入、数据删除和数据修改。3)数据控制,主要控制数据库的安全,包括操作权限的用户密码和存储权限等。4)事务管理。3、几个概念关系二维表;元组记录;属性字段;实体型、实体集。1.5数据库管理系统1.5.1几个常用的数据库管理系统ACCESS、SQLServer、FoxPro、Oracle、MySQL和Sybase等。ACCESS是美国Microsoft公司于1994年推出的微机数据库管理系统.它具有界面友好、易学易用、开发简单、接口灵活等特点,是典型的新一代桌面数据库管理系统。Oracle公司是全球最大的信息管理软件及服务供应商,成立于1977年,总部位于美国加州Redwoodshore。Oracle提供的完整的电子商务产品和服务包括:用于建立和交付基于Web的Internet平台;综合、全面的具有Internet能力的商业应用;强大的专业服务,帮助用户实施电子商务战略,以及设计、定制和实施各种电子商务解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。. SQL是英文StructuredQueryLanguage的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,最大区别:ACCESS的功能相对不是那么强大,主要是开发单机版软件中经常用到; SQLServer是目前应用比较广泛和普遍的一款数据库,是数据库发展的一个里程碑。 Oracle的功能是比较强大的,一般用于超大型管理系统软件的建立,现在的应用范围也已经比较广泛。1.5.2Oracle数据库简介1、什么是Oracle数据库oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多。不过,一般的中小型企业都比较喜欢用SQL数据库系统,它的操作很简单,功能也非常齐全。只是比较oracle数据库而言,在处理大量数据方面有些不如。2、Oracle数据库的发展历程(时间可能不太准确,但大致差不多)1977年,LarryEllison、BobMiner和EdOates等人组建了Relational软件公司(RelationalSoftwareInc.,RSI)。他们决定使用C语言和SQL界面构建一个关系数据库管理系统(RelationalDatabaseManagementSystem,RDBMS),并很快发布了第一个版本(仅是原型系统)。1979年,RSI首次向客户发布了产品,即第2版。该版本的RDBMS可以在装有RSX-11操作系统的PDP-11机器上运行,后来又移植到了DECVAX系统。1983年,发布的第3个版本中加入了SQL语言,而且性能也有所提升,其他功能也得到增强。与前几个版本不同的是,这个版本是完全用C语言编写的。同年,RSI更名为OracleCorporation,也就是今天的Oracle公司。1984年,Oracle的第4版发布。该版本既支持VAX系统,也支持IBMVM操作系统。这也是第一个加入了读一致性(Read-consistency)的版本。1985年,Oracle的第5版发布。该版本可称作是Oracle发展史上的里程碑,因为它通过SQL*Net引入了客户端/服务器的计算机模式,同时它也是第一个打破640KB内存限制的MS-DOS产品。1988年,Oracle的第6版发布。该版本除了改进性能、增强序列生成与延迟写入(DeferredWrites)功能以外,还引入了底层锁。除此之外,该版本还加入了PL/SQL和热备份等功能。这时Oracle已经可以在许多平台和操作系统上运行。1991年,OracleRDBMS的6.1版在DECVAX平台中引入了ParallelServer选项,很快该选项也可用于许多其他平台。1992年,Oracle7发布。Oracle7在对内存、CPU和I/O的利用方面作了许多体系结构上的变动,这是一个功能完整的关系数据库管理系统,在易用性方面也作了许多改进,引入了SQL*DBA工具和database角色。1997年,Oracle8发布。Oracle8除了增加许多新特性和管理工具以外,还加入了对象扩展(ObjectExtension)特性。2001年,Oracle9irelease1发布。这是Oracle9i的第一个发行版,包含RAC(RealApplicationCluster)等新功能。2002年,Oracle9irelease2发布,它在release1的基础上增加了集群文件系统(ClusterFileSystem)等特性。2003年9月,Oracle发布了Oracle10g  这一版的最大的特性就是加入了网格计算的功能。。该版本中Oracle的功能、稳定性和性能的实现都达到了一个新的水平。2007年7月11日,Oracle发布了Oracle11g  Oracle11g是甲骨文公司30年来发布的最重要的数据库版本根据用户的需求实现了信息生命周期管(InformationsLifecycleManagement)等多项创新。3、Oracle10g的技术特点1)网格化管理2)自动存储管理3)可移植的集群组建4)支持高速无限带宽网络5)计算资源供应6)共振Oracle10g数据库系统及Navicat的安装1、安装Oracle10g2、启动Oracle10g的方法1)用ms-dos启动:在开始菜单中找“运行SQL命令行”,在SQL>后输入连接数据库的命令“connect”,输入用户名、密码,密码是不回显的。在开始菜单中找“转至数据库主页”,启动oracle的企业管理器执行命令:selecttable_namefromuser_tables;User_tables是oracle数据库自己的一个数据词典3、安装Navicat:安装navicat成功后,创建连接,设置OCI,具体做法是:1)创建连接2)设置OCI,如果不设置则navicat下的命令行等不可用菜单toolsoptions…OCI选定OCI后,设置两个路径如下:OCIlibrary的路径:C:\oraclexe\app\oracle\product\\server\BIN\oci.dllSQL*Plus的路径:C:\oraclexe\app\oracle\product\\server\BIN\sqlplus.exeOracle安装成功后,新建一个用户root,用navicat把root.sql导入数据库1)创建用户的方法首先要用system或sys用户登录,得到:然后得到输入用户信息的界面:注意:把角色、直接授予的系统权限中所有的选项都选上。最后点击创建按钮,完成创建。2)对已经创建的用户还可以删除。3)用navicat把root.sql导入。1.6本章知识点总结1、数据管理技术发展的几个阶段:人工管理阶段、文件管理阶段、数据库管理阶段、分布式数据库管理、面向对象的数据库管理。2、DBS包括:DBMS、DB、DBA等。3、数据库系统的模式:外模式、模式(概念模式)、内模式,它们构成了“外模式/模式”和“模式/内模式”两个映射。4、数据模型:层次模型、网状模型、关系模型。5、关系模式的表示方法:关系名(属性名1,属性名2,……,属性名n)6、关系数据库,建立在关系模型基础上,而形成的数据库。7、几个概念:关系二维表;元组记录;属性字段8、常用的数据库管理系统:Oracle、MySQL、SQLServer、DB2、Sybase、FoxPro、ACCESS等等。第2章Oracle10g数据库的SQL语言与查询2.1SQL语言概述SQL(StructuredQueryLanguage)是一种结构化查询语言,简称为SQL。它是一种面向数据库的通用数据处理语言规范,能完成数据查询、插入修改删除数据、生成修改和删除数据库对象、数据库安全控制、数据库完整性及数据保护控制等。我们的重点是CRUD(create、research、update、delete)即增删改查。SQL的优点:1)非过程化语言(只需告诉系统做什么、而不需告诉它怎么做);2)统一的语言(DBMS为对数据库操作的全部任务都统一在SQL语言中);3)它是所有关系数据库的公共语言。2.2Oracle10g数据库的数据类型、运算符和表达式简单数据类型1、number(p,s),p是数字的整个位数,是小数点后的位数2、varchar2(n),表示可变长度的字符串且其最大长度为n,n不能超过4000。3、char(n),表示固定长度为n的字符串。4、date,表示日期,包括年份、月份。5、nvarchar2,不区分中英文,nvarchar2中存的英文字母也占两个字节。6、nchar,用Uicode字符集存储定长的字符数据。7、CLOB:存储<4GB单字节字符数据。(别用来存中文) 8、BLOB:用来存储<4GB无结构的二进制数据。9、timestamp10、binary_float11、binary_double2.2.2运算符1、算术运算符:+、-、*、/2、比较运算符:=、!=(<>)、<、>、<=、>=3、逻辑运算符:and、or、not4、范围运算符:between…and…、notbetween…and…5、列表运算符:in、notin6、is、notis2.2.3表达式1、算术表达式:用算术运算符连接的表达式。2、关系表达式:用比较运算符连接的表达式。3、逻辑表达式:用逻辑运算符连接的表达式。2.3Oracle10g的SELECT查询语句1)查什么;2)从哪里查;3)需要什么条件1、查看表结构的命令:describetablename;或desctablename;简单查询(select…from结构)1、基本格式如下SELECT{*|字段名列表}FROM表名;2、举例:1)select*fromstudent;//查询所有行所有列2)查询指定的某些列3)查询结果显示时,有它们的默认显示规则,如日期型和字符型的左对齐,数值型的右对齐。4)查询的时候可以使用算术运算符在select后,及对字段进行四则运算。selectstudentid,studentname,studentage+1fromstudent;||字符串连接运算符5)排重distinct6)给字段起别名selectstudentid学号,studentname姓名,studentsex性别fromstudent;或者selectstudentidas学号,studentnameas姓名,studentsexas性别fromstudent;2.3.2带条件的简单查询(select…from…where…结构)1、基本格式如下SELECT{*|字段名列表}FROM表名[WHERE{条件表达式}];2、具体实例1)单条件的查询查询工资高于3000元的教工信息select*fromteacherwheresalary>30002)组合条件的查询查询工资不低于3000元的女教工信息select*fromteacherwheresalary>=3000andsex='女'2.3.3单表查询的应用1、关键字DISTINCT的使用查询教师表看看有几个教研室2、关键字BETWEEN…AND…的使用查询总工资在[4000,7000]之间的教工信息selectteachername,salary+bonusas总工资fromteacherwheresalary+bonusbetween4000and7000;3、通配符%和_的使用(模糊查询)注意:转义字符的使用。like's\_%'escape'\':这里用到了转义字符,表示的意思是以“s_”开头的字符串,而s_%等价于s%select*fromscwherestudentidlike's\_%'escape'\';注意:进行模糊查询时用like关键字,而不用等号=4、关键字NULL和NOTNULL的使用查询没有奖金的教工信息字段名isnotnull对null或notnull查询时,不能用等号=而用is5、用ORDERBY子句为查询结果排序(多字段排序)6、字段运算查询(可以对字段进行简单的算术运算,如+、-、*、/)在navicat的命令行,可以使用“setlinesize300;”命令来设置当行显示字符的数量。7、别名的使用1)格式:字段名[AS]别名2)注意:(1)别名不改变数据库的值。(2)如果别名中含有特殊字符(如:空格)和特殊的要求(如:所有字母大写显示等)要用双引号“”把别名引起来。3)举例2.3.4多表查询多表查询是指查询结果要从两个以上的表中检索结果,这里仅仅介绍一种简单的多表查询。查询“李寻欢”所在部门的地址。查询“杨过”所在部门的电话。或者selectdepartmenttelfromdepartmentwheredepartmentidin(selectdepartmentidfromteacherwhereteachername='杨过');注意:1)字符串只能用单引号’’,而不能用双引号””,双引号有特殊的用途。2)in的用法3、分析总结:1)注意给表起别名。2)select的后字段名用“表名.字段名|表别名.字段名”表示,特别是查询结果中有的字段名在from后的表中都是相同的,那么这个字段名必须指出是哪个表的。如果没有这种现象,那么只用字段名即可。3)SQL标准指定当为表名创建别名后,SQL语句的其余部分必须使用该别名引用表(即不能再使用原始表名)。2.3.5子查询如果一个select命令(查询1)出现在另一个select命令(查询2)的一个子句中,则称查询1是查询2的子查询,又称为“嵌套查询”。外层的select语句称为“父查询”,内层的select语句称为“子查询”。子查询可以嵌套多层,子查询操作的数据表可以是父查询不操作的数据表。查询所有高于杨康工资的教师信息。select*fromteacherwheresalary>(selectsalaryfromteacherwhereteachername='杨康');查询出跟李寻欢在同一个教研室、而且工资大于王五的工资的所有教员的姓名和工资。练习:查询与李寻欢在同一个教研室工作的教师的姓名。查询不于低软件教研室任何一名教工工资的教工姓名SELECTTEACHERNAMEFROMTEAchERwheresalary>=all(selectsalaryfromteacherwherestaffroom='软件')检索已经开设课程的部门信息3、特点:1)子查询的结果仅返回一行(一个)记录,这时可以用算术比较符:>、=、<、>=、<=、in等。2)子查询的结果多于一行(多个)记录,这时要用in、some、any、all等。3)用notin时,子查询中不能有null作业1、检索没有预选课的课程信息。2、检索已经开设课程的部门信息3、检索有教工工资大于等于网络教研室教工工资的非网络教研室的名称。4、查询不低软件教研室所有教工工资的其他教工姓名第一天总结(Summary):一、数据库概述中知识点1、数据管理技术发展的几个阶段:人工管理阶段、文件管理阶段、数据库管理阶段、分布式数据库管理、面向对象的数据库管理。2、DBS包括:DBMS、DB、DBA等。3、数据库系统的模式:外模式、模式(概念模式)、内模式,它们构成了“外模式/模式”和“模式/内模式”两个映射。4、数据模型:层次模型、网状模型、关系模型。5、实体间的三种联系:1:1、1:N、M:N6、关系模式的表示方法:关系名(属性名1,属性名2,……,属性名n)7、关系数据库,建立在关系模型基础上,而形成的数据库。8、几个概念:关系二维表;元组记录;属性字段9、常用的数据库管理系统:Oracle、MySQL、SQLServer、DB2、Sybase、FoxPro、ACCESS等等。10、oracle10g及Navicat9的安装与使用二、第一天select查询总结SELECT[DISTINCT]{*,column[alias],...}FROMtable[WHEREcondition(s)][ORDERBY{column,expr,alias}[ASC|DESC]];即:SELECT排重*字段名别名FROM表名列表WHERE查询条件:><<>BETWEEN...AND...、IN、ISNULL、NOT、AND、OR、子查询ORDERBY字段1,字段2[ASC|DESC]第二天2.4Oracle10g单行函数和聚合函数函数是一种有0个或多个参数并且有一个返回值的程序,Oracle的函数主要分为两大类:单行函数和聚合函数(组函数)。SQL和PL/SQL中自带很多类型的函数,如字符、数字、日期、转换和混合型等多种函数用于处理单行数据,这些函数统称为单行函数,这些函数均可用于select、where、orderby等子句中。当需要对查询结果的数据行的同类信息合并在一起操作时,就需要用聚合函数来汇总这些数据行;oracle提供了基于组的多行函数,它们可以在select或select的having子句中使用。2.4.1单行函数单行函数对查询的表或视图的每一行返回一个结果行,分为:数值函数、字符函数、日期函数、转换函数等。单行函数也可以使用在update的set子句中、insert的values子句中、delete的where子句中等,但重点是用在select子句。哑表:dual是oracle提供一个特使的表,主要用于测试函数。.1NVL函数因为在我们的表中经常会有null值出现,而null无法参与其它的运算,如salary+null是非法的,为了解决这个问题,系统提供了NVL函数专门处理null。1)该函数的格式:NVL(x1,x2)其中x1,x2都是表达式,当x1的值为null时返回x2的值,否则返回x1的值。2)举例,找出问题所在先看上述语句会出现什么问题,解决办法如下:注意:x1、x2的数据类型要相匹配。.2字符串函数ASCII(c):返回字符c的ASCII码值(十进制数)。CHR(i):返回整数i对应的字符。CONCAT(C1,C2):连接字符串C1和C2。注意一个字符串的连接运算符:||,如:select'姓名:'||teachernamefromteacherINITCAP(C):返回字符串C,并将C中的每个单词的第一个字母大写,其它字母小写。INSTR(C1,C2,i,j):在一个字符串中搜索指定的字符,返回发现指定的字符的位置。C1是被搜索的字符串,C2是搜索的字符串,i是搜索的开始位置(默认为1),j是出现的次数(默认为1)例如:求“oracletraing”中从第1个字符开始‘tr’第2次出现的位置。Selectinstr(‘oracletraining’,’ra’,1,2)fromdual;LENGTH(C):返回字符串C的长度,注意一个汉字和一个字母的长度都是1LOWER(C):返回字符串C的所有字符为小写。UPPER(C):返回字符串C的所有字符为大写。LPAD(C1,[,C2]):C1、C2均为字符串,i为整数。在C1的左侧用C2补足长度i,可多次重复;如果i小于C1的长度,只返回i那么长的C1字符,其它的被截去;C2的缺省值为单空格。例如:在字符串‘幸福’的右边用‘*’补足到10个字符,然后在结果的左边用‘&’补足到17个字符。SQL>selectLPAD(Rpad('幸福',10,'*'),17,'&')FROMDUAL;说明:lpad是左填充,rpad是右填充。LTRIM(C)和RTRIM(C):分别是删除C的前导空格和删除C尾部空格。TRIM(C):既删除C的前导空格又删除C尾部的空格。SUBSTR(string,start,count):从母串string中取从start开始的count个字符作为一个子串返回。Replace(string,s1,s2):用s2替换出现在string中的s1字符串。如:selectreplace('aabbccddeeaaa','aa','AA')FROMDUAL;TRANSLATE(C1,C2,C3):它是分级替换的,具体做法如下:若在C1中能找到与C2全部相同的,就用C3把相应的字符全部代替。(第一级)结果:若在C1中能找到与C2部分相同的,就用C3中与C2对应位置上的字符代替(第二级)。可分如下三种情况:I)若C2长度等于C3的长度,做对应位置字符替换。结果:Ii)若C2长度大于C3的,相当于把C3的末尾加上几个空串直到与C2长度一样,然后再做对应位置字符替换。结果:Iii)若C2长度小于C3的,相当于只保留C3前面的与C2长度的字符串,然后再做对应位置字符替换。实际上这种情况与I)是一样的。结果:.3数值函数1)ABS(a):求指定数a的绝对值。2)EXP(n):返回e的n次幂。3)MOD(m,n):返回m除以n的余数。4)ROUND(n1,n2):n2>=0的正整数时返回n1所保留的小数位数,其余的被舍入掉;n2<0的负整数时,返回的是n1舍入小数点左边的n2位。5)SIGN(n):若n为负数返回-1;n为整数返回1;n为0,返回0。6)SQRT(n):返回n的平方根。7)TRUNC(n1,n2):n1、n2同ROUND函数,只是这个是按截尾法处理。.4日期函数1)ADD_MONTHS(D,I):返回日期D加上I个月后的结果,I可以是任意的整数,如果I含有小数,那么系统将小数部分截去。2)LAST_DAY(D):返回包含日期D的月份的最后一天。3)MONTHS_BETWEEN(D1,D2):返回D1和D2之间的月数目,如果D1和D2的日期相同、或者都是该月的最后一天,那么将返回一个整数,否则返回的结果将包含一个分数。selectmonths_between(sysdate+20,sysdate)FROMDUAL;的结果为:4)NEXT_DAY(d,dow):返回日期d后由dow给出的条件的第一天,dow使用当前会话中给出的语言指定了一周中的某一天,返回的时间分量与d的时间分量相同。例如:selectnext_day(sysdate,'星期二')fromdual;注意在oracle中文环境下,用中文“星期几”,若用英文(如Monday等)则测试不成功。ROUND(D[,FMT]):返回FMT指定格式的日期D。如:selectround(sysdate,'year')fromdual;6)TRUNC(D[,FMT]):返回FMT指定格式的日期D,用法同round函数。selectsysdate-trunc(sysdate,'year')fromdual--从年初到现在的天数7)SYSDATE没有参数,返回当前的系统日期和时间。应用:如果给教师根据年满某个工龄而涨工资,则可以用months_between(sysdate,workday)>工龄*12作为条件。.5转换函数转换函数是在日期、字符和数值之间的相互转换。to_char(number/date,’format-model’):按照format-model的格式把数值number或日期date转换为相应的字符串。1)例如:selectto_char(sysdate,'yyyy-mm-dd')fromdual;2)有关format-model的说明:(1)日期的显示格式:YYYY:4位年份YY:两位年份Year:年的英文全名如nineteennityeightMM:月的两位数字Month:月的英文全名如MAYMON:英文月的前三位简写如OCTDAY:星期几的英文全名如MondayDD:2位日期(2)数字的显示格式:9:代表一个数字位0:代表数字前面补0,如to_char(-1200,’000000.00’)的结果:.:小数点的位置,:标记数字位置的逗号L:根据数据库字符集加货币符号如to_char(-1200,’L9999.99’);结果:$:给浮点数增加$结果:To_char函数中format-model固定格式:9代表一个数字0强迫0显示$显示美元符号L强制显示一个当地的货币符号.显示一个小数点,显示一个千位分隔符号to_date(c[,’format-model’]) :c表示字符串,format-model表示一种特殊格式的字符串。返回format-model格式的字符串c所对应的日期。其实该函数将字符串c转换为date数据类型。如:to_number(c):c表示字符串,format-model表示一种特殊格式的字符串。返回format-model格式的数字。其实该函数将字符串c转换相应的数值。2.4.2聚合函数(组函数)2.4.2.1聚合函数的应用1、MAX(x):返回某个字段的所有值中的最大值。2、MIN(x):返回某个字段的所有值中的最小值。例如:查询教工中工资最高和最低的员工3、AVG(x):返回指定字段中的平均值。注意avg()函数只对数值型字段使用,即x的的数值类型只能是数值型的,如果空值,忽略不计。COUNT(*):返回查询中行的数目,*表示返回所有的行,用来统计一个表中有多少条记录(包含有空值的记录)。SUM(x):返回选择列表项目x的数值的总和。.2GROUPBY子句的应用聚合函数一般是处理那些已经分好组的数据,分组可以用groupby子句来完成。例如:统计各教研室的人数2、求各个教研室中的最高工资2.4.2.3HAVING与WHERE关键字的使用这两个都是条件子句,where主要与select搭配使用,而having只能出现在有groupby子句的sql语句中。注意,聚合函数不能出现where子句中。例题:1)查询教研室工资总和超过10000元的教研室2)查询除了助教外哪些教研室的工资总和多于8000元。2.4.2.4ORDERBY子句的使用使用orderby子句可以对查询结果进行排序,其中包括升序(asc,缺省值)和降序(desc)。举例:Oracle10g集合运算进行如下三种集合运算的条件:字段个数相同、对应列的类型匹配。Union并例如:结果是两个查询结果的并集,若有重复的记录,则只取它们中的一条。Intersect交结果为空3、Minus差两个集合A、B,A-B的结果是从A中去掉A与B共同的元素而剩余的元素。A-B=A-A∩B2.6作业统计每个班的学生数统计每个专业的学生数查询每个教研室中的最低或最高总工资,并按总工资降序排列。查询每个多于1人的教研室中最高和最低总工资,要求显示出教研室名、人数、最低工资和最高工资。查询至少有3人的教研室的名称及人数。求每个教研室的平均工资(要求看到教研室名称、人数和平均工资)。第二天总结单行函数聚合函数:min()、max()、sum()、avg()、count()等Select查询语句扩充SELECT[DISTINCT]{*,column[alias],...}FROMtable1,table2[WHEREcondition(s)][GROUPBYcolumn[HAVINGcondition(s)]][ORDERBY{column,expr,alias}[ASC|DESC]];三种集合运算:union、intersect、minusOracle第三天上午2.7深入多表查询2.7.1交叉连接(广义笛卡尔积):1、广义笛卡尔积是不带连接谓词的连接,两个表的广义笛卡尔积即是两表中元组的交叉乘积,其连接的结果会产生一些没有意义的元组,所以这种运算实际很少使用。2、举例select*fromstudent,score2.7.2等值与非等值连接查询1、等值连接:连接运算符为=的连接操作1)连接条件:[<表名1>.]<列名1>=[<表名2>.]<列名2>2)任何子句中引用表1和表2中同名属性时,都必须加表名前缀。引用唯一属性名时可以省略表名前缀。3)举例:查询每个学生及其选修课程的情况。select*fromstudentst,scorescwherest.studentid=sc.studentid或selectst.*,sc.*fromstudentst,scorescwherest.studentid=sc.studentid2、非等值连接查询:连接运算符不是=的连接操作1)格式:[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>或[<表名1>.]<列名1>BETWEEN[<表名2>.]<列名2>AND[<表名2>.]<列名3>2)比较运算符:>、<、>=、<=、!=2.7.3自身连接1、表与其自己进行连接,称为表的自身连接。2、需要给表起别名以示区别,由于所有属性名都是同名属性,因此必须使用别名前缀举例:1)查询每一门课程的先修课(即先修课的先修课)。分析:在Course表中,只有每门课的直接先修课信息,而没有先修课的先修课。要得到这个信息,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程。这就要将Course表与其自身连接。为清楚起见,可以为Course表取两个别名,一个是FIRST,另一个是SECOND。1)查询课程的先修课First别名看作是有先修课的一个表Second看作是一个普通的课程表得到如下结果:需要写的SQL语句为:2)查询teacher表中各个教师的领导者得到如下结果Sql语句如下:2.7.4内连接1、在通常的连接操作中即在内连接中,只有满足连接条件的元组才能作为结果输出。但是有时要用学生表为主体列出每个学生的基本情况及其选课情况,若某个学生没有选课,只输出其基本情况信息,其选课信息为空值即可,这时就需要使用外连接。2、外连接与内连接(普通连接)的区别:1)内连接操作只输出满足连接条件的元组2)外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出。3、内连接举例:查询每个教师开设课程的情况。1)实现方法12)实现方法2:这是一种新的格式Inner可以省略注意:innerjoin…on…其中inner可以省略不写,也是同样的效果。但是有一个问题:郭靖、张三、王五的信息呢?好,解决这个问题就得用外连接了。外连接1、外连接的表示方法为:1)在表名后面加外连接操作符(*)或(+)指定非主体表,注意oracle中只能用(+)。2)非主体表有一“万能”的虚行,该行全部由空值组成。3)虚行可以和主体表中所有不满足连接条件的元组进行连接。4)由于虚行各列全部是空值,因此与虚行连接的结果中,来自非主体表的属性值全部是空值。2、外连接有分为左外连接、右外连接和全外连接1)左外连接:左边表的信息全出现,而右边的表中仅出现满足条件的或2)右外连接:右边表中信息全出现,而左边的表中仅出现满足条件的。或注意:对于用(+)的左外连接和右外连接,若where子句中包含多个条件,则相应的其它条件中也要加(+)运算符。3)全外连接:左右表中的信息满足不满足条件都出现注意:(+)不适用于全连接。3、连接格式的总结:Select字段名列表From表1[inner]|[left/right/full[outer]]join表2on表1.字段名<连接条件>表2.字段名[[inner]|[left/right/full[outer]]join表3on表3.字段名<连接条件>表1|表2.字段名][……][where…][orderyby…];例如:查询学生所选的课程名、成绩或者2.7.6复合条件连接1、在连接查询中,若WHERE子句有多个连接条件,称为复合条件连接。例如查询学生所选的课程名、成绩,并且成绩在80分以上2、连接操作除了可以是两表连接,一个表与其自身连接外,还可以是两个以上的表进行连接,通常称为多表连接。例如:2.7.7作业1、查询教师表把领导者的id号和姓名显示出来2、查询查询出有先修课的课程号和课程名3、查询出还没有选课的学生信息4、统计出已选课学生的课程门数。5、查询班级和年龄都相同的学生信息总结交叉连接、等值连接与非等值连接、自连接、外连接、多条件查询连接查询的新格式:第三天下午第3章Oracle10g数据库建模与设计3.1数据库系统的开发过程数据库应用系统的开发是一项软件工程。一般可分为以下几个阶段:1)规划;2)需求分析;3)概念模型设计;4)逻辑设计;5)物理设计;6)程序编制及调试;7)运行及维护。3.1.1规划规划的主要任务就是作必要性及可行性分析。1)在收集整理有关资料的基础上,要确定将建立的数据库应用系统与周边的关系,要对应用系统定位,其规模的大小、所处的地位、应起的作用均须作全面的分析和论证。明确应用系统的基本功能,划分数据库支持的范围。2)分析数据来源、数据采集的方式和范围,研究数据结构的特点,估算数据量的大小,确立数据处理的基本要求和业务的规范标准。3)规划人力资源调配。对参与研制和以后维护系统运作的管理人员、技术人员的技术业务水平提出要求,对最终用户、操作员的素质作出评估。拟定设备配置方案。4)论证计算机、网络和其他设备在时间、空间两方面的处理能力,要有足够的内外存容量,系统的响应速度、网络传输和输入输出能力应满足应用需求并留有余量。要选择合适的OS,DBMS和其它软件。5)设备配置方案要在使用要求、系统性能、购置成本和维护代价各方面综合权衡。对系统的开发、运行、维护的成本作出估算。6)预测系统效益的期望值。拟定开发进度计划,还要对现行工作模式如何向新系统过渡作出具体安排。7)规划阶段的工作成果是写出详尽的可行性分析报告和数据库应用系统规划书。内容应包括:系统的定位及其功能、数据资源及数据处理能力、人力资源调配、设备配置方案、开发成本估算、开发进度计划等。8)可行性分析报告和数据库应用系统规划书经审定立项后,成为后续开发工作的总纲。3.1.2需求分析需求分析大致可分成三步来完成。(1)需求信息的收集,需求信息的收集一般以机构设置和业务活动为主干线,从高层中层到低层逐步展开。(2)需求信息的分析整理,对收集到的信息要做分析整理工作。数据流图(DFD,dataflowdiagram)是业务流程及业务中数据联系的形式描述。数据字典(DD,datadictionary)详细描述系统中的全部数据。数据字典包含以下几个部分:数据项:是数据的原子单位。数据组项:由若干数据项组成。数据流:表示某一数据加工过程的输入/输出数据。数据存储:是处理过程中要存取的数据。数据加工过程数据加工过程的描述包括:数据加工过程名、说明、输入、输出、加工处理工作摘要、加工处理频度、加工处理的数据量、响应时间要求等。数据流图既是需求分析的工具,也是需求分析的成果之一。数据字典是进行数据收集和数据分析的主要成果。(3)需求信息的评审.开发过程中的每一个阶段都要经过评审,确认任务是否全部完成,避免或纠正工作中出现的错误和疏漏。聘请项目外的专家参与评审,可保证评审的质量和客观性。评审可能导致开发过程回溯,甚至会反复多次。但是,一定要使全部的预期目标都达到才能让需求分析阶段的工作暂告一个段落。需求分析阶段的工作成果是写出一份既切合实际又具有预见的需求说明书,并且附以一整套详尽的数据流图和数据字典。3.1.3概念模型设计(E-R图)概念模型不依赖于具体的计算机系统,他是纯粹反映信息需求的概念结构。建模是在需求分析结果的基础上展开,常常要对数据进行抽象处理。常用的数据抽象方法是聚集和概括。E-R方法是设计概念模型时常用的方法,用设计好的E-R图再附以相应的说明书可作为阶段成果。概念模型设计可分三步完成:(1)设计局部概念模型(①确定局部概念模型的范围;②定义实体;③确定属性;④确定实体联系(1:1,1:N,M:N);⑤逐一画出所有的局部E-R图,并附以相应的说明文件。(2)设计全局概念模型,建立全局E-R图的步骤如下:①确定公共实体类型;②合并局部E-R图;③消除不一致因素;④优化全局E-R图;⑤画出全局E-R图,并附以相应的说明文件。(3)概念模型的评审,概念模型的评审分两部分进行:第一部分是用户评审;第二部分是开发人员评审。3.1.4逻辑设计(E-R图向关系模式的转换)逻辑设计阶段的主要目标是把概念模型转换为具体计算机上DBMS所支持的结构数据模型(关系数据模型)。逻辑设计的输入要素包括:概念模式、用户需求、约束条件、选用的DBMS的特性。逻辑设计的输出信息包括:DBMS可处理的模式和子模式、应用程序设计指南、物理设计指南。(1)设计模式与子模式,关系数据库的模式设计可分四步完成:①建立初始关系模式;②规范化处理;③模式 评价 LEC评价法下载LEC评价法下载评价量规免费下载学院评价表文档下载学院评价表文档下载 ;④修正模式。经过多次的模式评价和模式修正,确定最终的模式和子模式,写出逻辑数据库结构说明书。(2)编写应用程序设计指南根据设计好的模式和应用需求,规划应用程序的架构,设计应用程序的草图,指定每个应用程序的数据
本文档为【Oracle10g数据库建模与设计(共31页)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
千与千寻
十年从业经验,高级工程师
格式:doc
大小:500KB
软件:Word
页数:30
分类:企业经营
上传时间:2021-12-12
浏览量:3