1、Oracle简介(了解,基本使用)Oracle又名“甲骨文”,一个生产中间件和数据库的较大生产商。其发展依靠了IBM公司。常用的数据库有Oracle、MySQL、SQLserver(不建议使用)。2009年后,收购SUN公司,取得编程语言领域的领导地位。云服务主要靠硬件的支撑。2、Oracle数据库的安装(重点)2.1介绍安装空间预留5个G空间。Oracle的主要版本:Oracle8、Oracle8i:i指的是Internet,向网络发展,1CD大小Oracle9i:前者稳定版本,3CD,常用Oracle10g:表示开始基于网格计算推出的数据库,1CD谓网格技术,拿百度搜索为例,现在我们需要搜索一款叫做“EditPlus”的文本编辑器软件,当我们在百度搜索框中输入“EditPlus”进行搜索时,会得到百度为我们搜索到的大量关于它的链接,此时,我们考虑一个问题,如果在我所处的网络环境周边的某个地方的服务器就提供这款软件的下载(也就是说提供一个下载链接供我们下载),那么,我们就没必要去访问一个远在地球对面的某个角落的服务器去下载这款软件。如此一来就可以节省大量的网络资源。使用网格技术就能解决这种问题。我们将整个网络划分为若干个网格,也就是说每一个使用网络的用户,均存在于某一个网格,当我们需要搜索指定资源时,首先在我们所处的网格中查找是否存在指定资源,没有的话就扩大搜索范围,到更大的网格中进行查找,直到查找到为止。Oracle11g:前者稳定版,约2G,主流推广,课程使用注意:安装前须关闭病毒防火墙Oracle12C:表示云计算的概念2.2安装对于Oracle而言,软件本身提供的只是一个平台,在平台之上进行数据库管理:创建和配置—服务器类—数据库安装类型(默认单机选择单实例)—高级安装—企业版—基目录D:\app\zcl(zcl为用户名)—一般事务—全局数据库名称stone,其中服务标示符SID与之相同(一般如此),SID是程序开发中使用的服务编号,如没有SID则程序将无法进行数据库的连接—字符集(UTF-8),示例方案打勾,出现测试数据供学习—所有用户口令oracleadmin在Oracle中主要有2个管理员用户:SYS超级管理员、SYSTEM普通管理员。密码要求,进入“口令安装”界面:修改4个用户名及密码超级管理员:sys/change_on_install实际工作中不可用此;普通管理员:system/manager同上;普通用户:scott/tiger需要解锁大数据用户(示例方案数据库)sh/sh需要解锁。安装完成后自动注册相关服务,建议手动方式,对于Oracle开发使用较多服务:监听服务(OracleOraDb11g_home1TNSListener):当需要通过程序连接数据库进行开发时打开。学习时可以不启动实例服务(OracleServiceSTONE):在Oracle平台下可以创建多个数据库,每创建一个都会自动建立一个数据库的服务,命名“OracleServiceSID”2.2卸载停止所有数据库服务,启动卸载程序,会有残留和注册表文件无法删除(开机进入安全模式F8删除和regedit删除相关的Oracle注册表)3、SQLPLUS基本命令(重点)SQLPLUS是Oracle操作的主要工具。安装完成后,在运行窗口输入“sqlplus.exe”命令,启动Oracle数据库操作窗口:用户:Scott密码:tiger3.1显示格式化操作(学习中使用)在数据库中最重要的组成就是数据表(表的结构就是行、列集合),那么可以查询一个emp的数据表:SELECT*FROMemp;(命令行中右键即可复制),此时进入的显示界面效果不好须进行格式化操作:设置每行显示的数据长度:SETLINESIZE300;另外可能还要修改窗口的大小设置每页显示的数据行数:SETPAGESIZE30;需要注意的是,上述连个参数的设置只在当前的命令行有效,命令行窗口重启或者开启了第二个窗口需要重新设置,对程序无效。oracle中分为两种情况,单纯的sql语句不区分大小写,但是如果查询某个字符的话就需要区分大小写。1、如以下情况,是不区分大小写的,查询结果都是一致的:select*fromemp;SELECT*FROMEMP;2、如在emp表中查询ename为“SMITH”(不含引号)的信息,就必须注意大小写:select*fromempwhereename='SMITH';3.2调用记事本命令进行SQL程序编写时,很多行的编写,只有在分号出现才表示命令的结束。一般会调用本机的记事本程序,用户直接按照“ed文件名称”如(edmldn)会出现如下:创建后,用户可以直接使用文件的的程序代码“@文件名称”(如@mldn,如果后缀是.sql则可以不写)。如果要执行某一文件,必须输入完整路径,如@D:\mldn。*.sql文件为数据库脚本文件。3.3切换用户4个用户的切换:在SQLPlus中可以通过命令使用其他账户进行数据库的连接,如,当前连接的用户是scott,我们需要使用sys进行连接,则可以这么操作:conn用户名/密码[assysdba];这里需要说明的是,sys是超级管理员,当我们需要使用sys进行登录的时候,那么需要额外的加上assysdba表示sys将以管理员的身份登录。“showuser”查看当前登录用户是谁。当我们使用sys以sysdba的角色登录时,其密码可以随意输入,不一定是我们设置的统一口令。所以,我们得出结论,在管理员登录时,只对用户进行验证,而普通用户登录时,执行用户和密码验证。查看指定数据库的所有表名称呢?select*fromtab;在开发过程中查看某张表的表结构,这个操作可以这样实现:descemp;在SQLPlus中,我们可以输入“/”来快速执行上一条语句。例如,在命令行中我们执行了一条这样的语句:select*fromemp;但是我们需要再次执行该查询,就可以输入一个“/”就可快速执行。3.4调用本机命令在sqlplus中可以直接调用DOS命令如copy命令:Copy源文件路径目标文件路径;如copyd:\my.txtd:\hello.tet;在本机使用时加HOST:hostcopyd:\my.txtd:\hello.tet;范例:调用本机的copy命令hostcopyd:\my.txtd:\hello.txt;4、简单查询(开始SQL语法讲解)4.1scott用户的主要数据表(重点,背)传统的数据库之中采用的是表作为存储的基本单元,在一个数据库里面会存在有大量的数据表。而在整个学习之中scott用户是主要的数据来源,所以首先来观察一下此用户下的四张数据表及其表结构。范例:要想查询一个用户的所有表,使用如下命令SELECT*FROMtab;此时显示一共有四张表:dept、emp、salgrade、bonus,下面来观察四张的表结构(查看表结构语法:DESC表)。1、部门表:dept2、雇员表:emp3、工资等级表:salgrade每位雇员都有自己的工资数据,那么工资在公司之中会划分等级。4、工资表:bonus其中三张数据表(emp、dept、salgrade)都存在有数据,但是只有bonus表之中不包含任何的数据。4.2SQL简介(了解)SQL(StructuredQueryLanguage,结构查询语言)是一个功能强大的数据库语言。SQL通常用于与数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL是在七十年代的时候由IBM研发出来的,其目的是为了统一数据库的操作方式。实际上最初的数据库环境非常不乐观,因为各个数据库的生产商都有着自己的数据操作标准。后来在80年代的时候Oracle公司开始将Oracle数据库提供了SQL的支持(Oracle是世界上最早支持SQL标准的大型数据库)。到了今天,几乎所有的数据库都支持了SQL,而这样可以大大的简化程序开发人员的困难(学习的时候只学习标准SQL)。PS:SQL的操作属于长期以来历史的发展产物,同时也是现在有可能依然被延续下去的技术,不过在SQL产生初期有一部分人员认为SQL并不方便(传统的基于行、列的数据表的存储结构不方便)于是最早产生了一个NOSQL技术(不使用SQL),但是到现在为止NOSQL翻译为“NotOnlySQL”,其中代表作:MongoDB(Node.JS,taobao),采用的是一种文档的方式进行存储的。SQL功能强大,概括起来,它可以分成以下几组:(前2者为主学习)·DML(DataManipulationLanguage,数据操作语言)——指的是实现数据库的查询与更新操作,其中针对于数据库的查询有部分人员会将其称为DQL,因为最麻烦的部分就是查询。·DDL(DataDefinitionLanguage,数据定义语言)——定义数据库对象,例如:在一些系统设计人员的工作里面需要进行数据表的定义。·DCL(DataControlLanguage,数据控制语言)——控制用户的操作权限,一般由DBA负责。4.3简单查询(重点,控制列)对于查询一共分为:简单查询、限定查询、多表查询、统计查询,四类的查询,其中简单查询是初步,而简单查询的语法如下:SELECT[DISTINCT]*|列[别名],列[别名],...执行顺序2、控制要显示的数据列FROM表名称[别名];执行顺序1、确定查询的数据来源数据表的组成是行与列,而简单查询的最大特征在于会将一张数据表之中的全部数据行进行显示,而用户可以通过控制SELECT来控制显示的数据列。其中几个参数的作用如下:·DISTINCT:表示去掉重复行数据;·“*”:表示查询所有的列,如果不想查询所有列,则编写具体的列名称。范例:查询所有雇员的信息(所有雇员一定包含行和列的所有数据)SELECT*FROMemp;范例:查询每个雇员的编号(empno)、姓名(ename)、职位(job)、基本工资(sal)SELECTempno,ename,job,salFROMemp;通过以上的查询可以清楚的发现,数据表所有行都显示,而列只显示需要的部分。除了这样的基本查询操作之外,在进行简单查询的过程之中,SELECT后面的子句之中也可以进行各种数学计算(+、-、×、÷)范例:查询每个雇员的编号、姓名、基本年薪SELECTempno,ename,sal*12FROMemp;但是现在有个问题出现了,发现计算处的列名称很怪异,并没有像其它的列意思明确,所以此时可以起一个别名。范例:为查询列起别名SELECTempno编号,ename姓名,sal*12年薪FROMemp;SELECTempno,ename,sal*12incomeFROMemp;此处的程序是为了演示才采用了中文的处理方式,但是在开发之中一定要记住:回避中文。范例:现在查询每个雇员的编号、姓名、职位、年薪,而且每位雇员,每个月有200元的饭食补助、200元的汽车补助,夏天四个月有每月300元的高温补贴、年底的时候可以领到15个月的基本工资。SELECTempno,ename,job,(sal+400)*12+300*4+sal*3incomeFROMemp;四则运算的过程之中,也一定有自己的优先顺序,按照先乘除后加减的顺序完成。范例:查询所有雇员的职位SELECTjobFROMemp;非常明显的发现,此时的查询结果之中出现了重复的数据,因为多个雇员一定从事于同一职位,那么如果要想消除掉重复列,则可以使用DISTINCT关键字处理,此关键字只能够出现在SELECT子句之中。范例:去掉重复数据列SELECTDISTINCTjobFROMemp;虽然此时可以消除重复数据,但是对于重复的数据是有一个基本的原则:只有在所有列的数据都重复的情况下才叫做重复数据。范例:关于重复消除的小问题——查询每个雇员的姓名、职位SELECTDISTINCTename,jobFROMemp;以上的操作都属于SQL的基本操