为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 黑马程序员:ORACLE数据库day1

黑马程序员:ORACLE数据库day1

2018-05-18 6页 pdf 4MB 8阅读

用户头像

is_179289

暂无简介

举报
黑马程序员:ORACLE数据库day1黑马程序员:ORACLE数据库day1第1章一、ORACLE简介1.1(一)什么是ORACLEORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。ORACLE通常应用于大型系统的数据库产品。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。ORACLE数据...
黑马程序员:ORACLE数据库day1
黑马程序员:ORACLE数据库day1第1章一、ORACLE简介1.1(一)什么是ORACLEORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。ORACLE通常应用于大型系统的数据库产品。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。ORACLE数据库具有以下特点:(1)支持多用户、大事务量的事务处理(2)数据安全性和完整性控制(3)支持分布式数据处理(4)可移植性1.2(二)ORACLE体系结构北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90901.2.11.数据库Oracle数据库是数据的物理存储。这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是Oracle就只有一个大数据库。1.2.22.实例一个和内存结构(MemoryStructures)组成。一个数据库可以有n个实例。O1.2.3r3.数据文件(dbf)acl数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真e正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数实据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文例件,如果要删除某个数据文件,只能删除其所属于的表空间才行。(O1.2.4r4.表空间a表空间是Oracle对物理数据库上相关数据文件(ORA或者DBF文件)的c逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在l逻辑e上相关联的一组结构。每个数据库至少有一个表空间(称之为system表空间)。In每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件s(datafile)t。一个数据文件只能属于一个表空间。an有一系列的后台进程(北京市昌平区建材城西路金燕龙办公楼一层BackguoundProcesses)电话:400-618-9090注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!1.2.55.用户用户是在表空间下建立的。用户登陆后只能看到和操作自己的表,ORACLE的用户与MYSQL的数据库类似,每建立一个应用需要创建一个用户。北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090第2章二、ORACLE安装与配置2.1(一)VMware挂载windowsserver2003打开“资源”文件夹中的windows2003文件夹,双击扩展名为vmx的文件即可将windows2003系统挂载到VMware中北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90902.2(二)网络配置2.2.11.创建虚拟网卡VMware中选择菜单“编辑”--“虚拟网络编辑器”弹出的窗口中,点击“添加网络”按钮,名称为VMnet2,确定北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090设置为仅主机方式,并设定子网IP为192.168.80.0北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90902.设定虚拟操作系统的网络网卡右键点击虚拟操作系统,选择“设置”菜单项,弹出以下窗口北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090点击网络适配器,选择自定义,VMnet22.2.23.设定虚拟操作系统的IP地址在虚拟机的操作系统中设定IP地址为192.168.80.10北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090设置本地的操作系统的虚拟网卡VMnet的IP为192.168.80.6(与虚拟机中的操作系统的IP地址处于同一IP网段)在本地操作系统打开命令行,用ping命令测试网络是否连接成功2.3(三)安装ORACLE数据库将“资源”文件夹ORACLE安装包解压拷贝到虚拟机的系统中并北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090双击解压目录下的setup.exe,出现安装界面,如下:输入口令和确认口令,如:itcast,点击下一步,出现如下进度条,注:此口令即是管理员密码。北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090点击“下一步”,出现“概要”界面,点击“安装”。北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090出现安装进度条,等待安装完成,如下图:安装完成后,自动运行配置向导,如下图,等待其完成:北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090完成后,出现“口令管理”界面,如下图:点击“确定”,如下图:安装结束,点击“退出”。北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090此时可以命令提示符下进行测试安装结果输入:sqlplussystem/itcastitcast为你安装时输入的密码北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90902.4(四)SQLPlus远程连接ORACLE数据库将“资源”文件夹中的instantclient_12_1拷贝到D盘根目录进入命令提示符,进入该目录,输入如下命令连接远程的ORACLE北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90902.5(五)PLSQLDeveloper安装与配置(1)安装资源文件夹PLSQL+Developer10.0.3.1701注意事项:安装目录不能有中文和空格,否则连接不上将上边的目录改为D:\PLSQLDeveloper(2)配置客户端路径在弹出的登陆窗口中,点取消,Tools->>Preferences北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090(3)编辑ORA文件在ORACLE的以下安装目录中找到tnsnames.ora文件,拷贝到本地电脑的D盘根目录。打开tnsnames.ora文件编辑,修改下图红色方框处北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090(4)设置环境变量TNS_ADMIN为D盘根目录(tnsnames.ora所在目录)(5)进入系统输入用户名system密码itcast即可进入到软件主界面。北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090(6)中文编码设置查看服务器端编码SQL:selectuserenv('language')fromdual我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK计算机->属性->高级系统设置->环境变量->新建设置变量名:NLS_LANG,变量值:第1步查到的值,我的是AMERICAN_AMERICA.ZHS16GBK第3章三、项目案例:《自来水公司收费系统》3.1(一)项目介绍与需求XXX市自来水公司为更好地对自来水收费进行规范化管理,决定委托传智播客.黑马程序员开发《自来水公司收费系统》。考虑到自来水业务数量庞大,数据并发量高,决定数据库采用ORACLE数据库。主要功能包括:1.、基础信息管理:(1)业主类型设置(2)价格设置(3)区域设置(4)收费员设置(5)地址设置北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90902、业主信息管理:(1)业主信息维护(2)业主信息查询3、收费管理:(1)抄表登记(2)收费登记(3)收费记录查询(4)欠费用户清单4、统计分析:(1)收费日报单(2)收费月报表.......3.2(二)表结构设计3.2.11.业主类型表(T_OWNERTYPE)字段名类型(位数)是否必填IDNUMBER是主键NAMEVARCHAR2(30是类型名称)2.价格表(T_PRICETABLE)字段名类型(位数)是否必填说明北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090IDNUMBER是主键PRICENUMBER(10,2)是价格OWNERTYPEIDNUMBER是业主类型IDMINNUMNUMBER(10,2)是区间数开始值MAXNUMNUMBER(10,2)是区间数截止值3.区域表(T_AREA)字段名类型(位数)是否必填说明IDNUMBER是主键NAMEVARCHAR2(30是区域名称)4.收费员表(T_OPERATOR)字段类型(位数)是否必填说名明IDNUMBER是主键NAMEVARCHAR2(3是操作员名称0)5.地址表(T_ADDRESS)字段名类型(位数)是否必填说明IDNUMBER是主键NAMEVARCHAR2(30是地址名称)AREAIDNUMBER是区域IDOPERATORIDNUMBER是操作员ID北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90906.业主表(T_OWNERS)字段名类型(位数)是否必填说明IDNUMBER是主键NAMEVARCHAR2(30是业主名称)ADDRESSIDNUMBER是地址IDHOUSENUMBERNUMBER是门牌号WATERMETERVARCHAR2(30是水表编号)ADDDATEDATE是登记日期OWNERTYPEIDNUMBER是业主类型ID7.收费台账(T_ACCOUNT)字段名类型(位数)是否必填说明IDNUMBER是主键OWNERIDNUMBER是业主编号OWNERTYPEIDNUMBER是业主类型AREAIDNUMBER是所在区域YEARCHAR(4)是账务年份MONTHCHAR(2)是账务月份NUM0NUMBER上月累计数NUM1NUMBER本月累计数北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090USENUMNUMBER本月使用数METERUSERIDNUMBER抄表员METERDATEDATE抄表日期MONEYNUMBER(10,2)应缴金额ISFEECHAR(1)是是否缴费FEEDATEDATE缴费日期FEEUSERIDNUMBER收费员上述7张表的物理模型如下:3.3(三)创建表空间北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090createtablespacewaterbossdatafile'c:\waterboss.dbf'size100mautoextendonnext10m解释:waterboss为表空间名称datafile用于设置物理文件名称size用于设置表空间的初始大小autoextendon用于设置自动增长,如果存储量超过初始大小,则开始自动扩容next用于设置扩容的空间大小3.4(四)创建用户createuserwateruseridentifiedbyitcastdefaulttablespacewaterbosswateruser为创建的用户名identifiedby用于设置用户的密码defaulttablesapce用于指定默认表空间名称3.5(五)用户赋权grantdbatowateruser给用户wateruser赋予DBA权限后即可登陆北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090第4章四、表的创建、修改与删除4.1(一)创建表语法:CREATETABLE表名称(字段名类型(长度)primarykey,字段名类型(长度),.......);4.1.1数据类型:1.字符型(1)CHAR:固定长度的字符类型,最多存储2000个字节(2)VARCHAR2:可变长度的字符类型,最多存储4000个字节(3)LONG:大文本类型。最大可以存储2个G4.1.22.数值型NUMBER:数值类型例如:NUMBER(5)最大可以存的数为99999NUMBER(5,2)最大可以存的数为999.99北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90904.1.33.日期型(1)DATE:日期时间型,精确到秒(2)TIMESTAMP:精确到秒的小数点后9位4.1.44.二进制型(大数据类型)(1)CLOB:存储字符,最大可以存4个G(2)BLOB:存储图像、声音、视频等二进制数据,最多可以存4个G实例:创建业主表createtablet_owners(idnumberprimarykey,namevarchar2(30),addressidnumber,housenumbervarchar2(30),watermetervarchar2(30),adddatedate,ownertypeidnumber);其它表的创建见资料“自来水收费系统建表语句.txt”北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90904.2(二)修改表1.增加字段语法:ALTERTABLE表名称ADD(列名1类型[DEFAULT默认值],列名1类型[DEFAULT默认值]...)为业主表增加两个字段,语句:追加字段ALTERTABLET_OWNERSADD(REMARKVARCHAR2(20),OUTDATEDATE)2.修改字段语法:ALTERTABLE表名称MODIFY(列名1类型[DEFAULT默认值],列名1类型[DEFAULT默认值]...)修改两个字段的类型,语句:修改字段ALTERTABLET_OWNERSMODIFY(REMARKCHAR(20),OUTDATETIMESTAMP)3.修改字段名语法:ALTERTABLE表名称RENAMECOLUMN原列名TO新列名北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090语句:ALTERTABLET_OWNERSRENAMECOLUMNOUTDATETOEXITDATE4.删除字段名删除一个字段ALTERTABLE表名称DROPCOLUMN列名删除多个字段ALTERTABLE表名称DROP(列名1,列名2...)语句:删除字段ALTERTABLET_OWNERSDROPCOLUMNREMARK4.3(三)删除表语法:DROPTABLE表名称第5章五、数据增删改5.1(一)插入数据语法:INSERTINTO表名[(列名1,列名2,...)]VALUES(值1,值2,...)北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090执行INSERT后一定要再执行commit提交事务向业主表插入数据:insertintoT_OWNERSVALUES(1,'张三丰',1,'2-2','5678',sysdate,1);语句中的sysdate是系统变量用于获取当前日期,点击齿轮的图标后,再点击下图的绿色图标,此图标为commit我们再次录入一条数据,语句如下:insertintoT_OWNERSVALUES(2,'赵大侃',1,'2-3','9876',sysdate,1);commit;5.2(二)修改数据语法:UPDATE表名SET列名1=值1,列名2=值2,....WHERE修改条件;执行UPDATE后一定要再执行commit提交事务需求:将ID为1的业主的登记日期更改为三天前的日期updateT_OWNERSsetadddate=adddate-3whereid=1;commit;5.3(三)删除数据语法1:北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090执行DELETE后一定要再执行commit提交事务需求:删除业主DELETEFROM表名IDWHERE为2的业主信息删除条件;deletefromT_OWNERSwhereid=2;commit;语法2:TRUNCATETABLE表名称比较truncat与delete实现数据删除?1.delete删除的数据可以rollback2.delete删除可能产生碎片,并且不释放空间3.truncate是先摧毁表结构,再重构表结构第6章六、JDBC连接ORACLE6.1(一)创建工程,引入驱动包在下图目录中可以找到驱动包ORACLE的JDBC驱动包,拷贝到工程即可使用创建java工程waterboss,建立lib文件夹,将ojdbc.jar拷贝到此文件夹,然后add北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090buildpath6.2(二)BaseDao我们通常编写BaseDao负责加载驱动,获取数据库连接,关闭资源,代码如下:packagecn.itcast.waterboss.dao;importjava.sql.SQLException;/***基本数据访问类*@authorAdministrator**/publicclassBaseDao{//加载驱动static{try{Class.forName("oracle.jdbc.driver.OracleDriver");}catch(ClassNotFoundExceptione){e.printStackTrace();}}/***获取数据库连接*@return*@throwsSQLException*/publicstaticjava.sql.ConnectiongetConnection()throwsSQLException{returnjava.sql.DriverManager.getConnection(北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090"jdbc:oracle:thin:@192.168.80.10:1521:orcl","wateruser","itcast");}/***关闭资源*@paramrs*@paramstmt*@paramconn*/publicstaticvoidcloseAll(java.sql.ResultSetrs,java.sql.Statementstmt,java.sql.Connectionconn){//关闭结果集if(rs!=null){try{rs.close();}catch(SQLExceptione){e.printStackTrace();}}//关闭执行对象if(stmt!=null){try{stmt.close();}catch(SQLExceptione){e.printStackTrace();}}//关闭执行对象if(conn!=null){try{conn.close();}catch(SQLExceptione){e.printStackTrace();}}}北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090}JDBC驱动为:oracle.jdbc.OracleDriver连接字符串(瘦连接):jdbc:oracle:thin:@虚拟机的IP:1521:orcl6.3(三)业主增删改代码编写1.创建实体类packagecn.itcast.waterboss.entity;importjava.util.Date;/***业主实体类*@authorAdministrator**/publicclassOwners{privateLongid;//编号privateStringname;//业主名称privateLongaddressid;//地址编号privateStringhousenumber;//门牌号privateStringwatermeter;//水表编号privateDateadddate;//登记日期privateLongownertypeid;//业主类型IDpublicLonggetId(){returnid;}publicvoidsetId(Longid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090this.name=name;}publicLonggetAddressid(){returnaddressid;}publicvoidsetAddressid(Longaddressid){this.addressid=addressid;}publicStringgetHousenumber(){returnhousenumber;}publicvoidsetHousenumber(Stringhousenumber){this.housenumber=housenumber;}publicStringgetWatermeter(){returnwatermeter;}publicvoidsetWatermeter(Stringwatermeter){this.watermeter=watermeter;}publicDategetAdddate(){returnadddate;}publicvoidsetAdddate(Dateadddate){this.adddate=adddate;}publicLonggetOwnertypeid(){returnownertypeid;}publicvoidsetOwnertypeid(Longownertypeid){this.ownertypeid=ownertypeid;}}2.创建Dao类实现增删改packagecn.itcast.waterboss.dao;importjava.sql.SQLException;北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090importcn.itcast.waterboss.entity.Owners;/***业主数据访问类*@authorAdministrator**/publicclassOwnersDao{/***新增业主*@paramowners*/publicstaticvoidadd(Ownersowners){java.sql.Connectionconn=null;java.sql.PreparedStatementstmt=null;try{conn=BaseDao.getConnection();stmt=conn.prepareStatement("insertintoT_OWNERSvalues(?,?,?,?,?,?,?)");stmt.setLong(1,owners.getId());stmt.setString(2,owners.getName());stmt.setLong(3,owners.getAddressid());stmt.setString(4,owners.getHousenumber());stmt.setString(5,owners.getWatermeter());stmt.setDate(6,newjava.sql.Date(owners.getAdddate().getTime()));stmt.setLong(7,owners.getOwnertypeid());stmt.execute();}catch(SQLExceptione){e.printStackTrace();北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90906.3.1}finally{BaseDao.closeAll(null,stmt,conn);}}/***修改业主*@paramowners北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090*/publicstaticvoidupdate(Ownersowners){java.sql.Connectionconn=null;java.sql.PreparedStatementstmt=null;try{conn=BaseDao.getConnection();stmt=conn.prepareStatement("updateT_OWNERSsetname=?,addressid=?,housenumber=?,"+"watermeter=?,adddate=?,ownertypeid=?whereid=?");stmt.setString(1,owners.getName());stmt.setLong(2,owners.getAddressid());stmt.setString(3,owners.getHousenumber());stmt.setString(4,owners.getWatermeter());stmt.setDate(5,newjava.sql.Date(owners.getAdddate().getTime()));stmt.setLong(6,owners.getOwnertypeid());stmt.setLong(7,owners.getId());stmt.execute();}catch(SQLExceptione){e.printStackTrace();6.3.2}finally{BaseDao.closeAll(null,stmt,conn);}}北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090/***删除业主*@paramowners*/publicstaticvoiddelete(Longid){java.sql.Connectionconn=null;java.sql.PreparedStatementstmt=null;try{conn=BaseDao.getConnection();北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090stmt=conn.prepareStatement("deletefromT_OWNERSwhereid=?");stmt.setLong(1,id);stmt.execute();}catch(SQLExceptione){e.printStackTrace();}finally{BaseDao.closeAll(null,stmt,conn);}}}第7章七、数据导出与导入当我们使用一个数据库时,总希望数据库的是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故障后,希望能重构这个完整的数据库该处理称为数据库恢复,而要进行数据库的恢复必须要有数据库的备份工作。7.1(一)整库导出与导入整库导出命令expsystem/itcastfull=y添加参数full=y就是整库导出北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-9090执行命令后会在当前目录下生成一个叫EXPDAT.DMP,此文件为备份文件。如果想指定备份文件的名称,则添加file参数即可,命令如下expsystem/itcastfile=文件名full=y整库导入命令impsystem/itcastfull=y此命令如果不指定file参数,则默认用备份文件EXPDAT.DMP进行导入如果指定file参数,则按照file指定的备份文件进行恢复impsystem/itcastfull=yfile=water.dmp7.2(二)按用户导出与导入按用户导出expsystem/itcastowner=wateruserfile=wateruser.dmp按用户导入impsystem/itcastfile=wateruser.dmpfromuser=wateruser北京市昌平区建材城西路金燕龙办公楼一层电话:400-618-90907.3(三)按表导出与导入expwateruser/itcastfile=a.dmptables=t_account,a_area按表导出用tables参数指定需要导出的表,如果有多个表用逗号分割即可按表导入impwateruser/itcastfile=a.dmptables=t_account,a_area黑马程序员郑州中心编著
/
本文档为【黑马程序员:ORACLE数据库day1】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索