java基础知识总结8(数据库篇1)
Posted 听风暖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础知识总结8(数据库篇1)相关的知识,希望对你有一定的参考价值。
一、 Oracle的安装(windowXP、win7、Linux)和卸载
1.1 Oracle的安装
1.1.1 在WindowsXP、Win7下安装
第一:解压win32_11gR2_database_1of2、win32_11gR2_database_2of2,生成detabase目录
第二:安装oracle
A、点击setup图标即可,注意:安装目录不要含有中文
B、在弹出的第一个界面中取消更新选择项,点击下一步
C、在弹出的警告框中选择是
D、选择创建和配置数据库选项,下一步
E、选择桌面类安装,点击下一步
F、弹出的窗口中输入全局数据库名:orcl
输入管理口令:bluedot
默认的管理员是:sys和system
G、点完成,开始安装数据库,出现进度条
H、口令管理
I、设置口令
J、完成安装
1.2 Oracle的卸载:
1、 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。
2、 开始->程序->Oracle - OraHome81->Oracle Installation Products-> Universal Installer,单击“卸载产品”-“全部展开”,选中除“OraDb11g_home1”外的全部目录,删除。
3、 运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。
4、 运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口(以oracle或OraWeb开头的键)。
5、 运行refedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有Oracle入口。e
6、 删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。
7、 删除HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs中所有以oracle开头的键。
8、删除HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI中除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键。
9、我的电脑–>属性–>高级–>环境变量,删除环境变量CLASSPATH和PATH中有关Oracle的设定。
10、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标。
11、删除所有与Oracle相关的目录(如果删不掉,重启计算机后再删就可以了)包括:
1.C:\Program file\Oracle目录。
2.ORACLE_BASE目录(oracle的安装目录)。
3.C:\WINDOWS\system32\config\systemprofile\Oracle目录。
4.C:\Users\Administrator\Oracle或C:\Documents and Settings\Administrator\Oracle目录。
5.C:\WINDOWS下删除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。
6.C:\WINDOWS下的WIN.INI文件中若有[ORACLE]的标记段,删除该段。
12、如有必要,删除所有Oracle相关的ODBC的DSN
13、到事件查看器中,删除Oracle相关的日志 说明: 如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装,安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了。
二、 用户管理
2.1 创建用户
注:创建用户只能在管理员下完成
CREATE USER 用户名 IDENTIFIED BY 密码。
|-CREATE USER demo IDENTIFIED BY 123456;
2.2 用户分类
|-管理员和普通用户
|-管理员
|-超级管理员:sys/bluedot
|-管理员:system/bluedot
|-普通用户:scott/tiger
hr/hr
|–常见角色:sysdba、sysoper
2.3 用户登录
2.3.1 在命令行窗口登录[c/s]
步骤:
运行 sqlplus /nolog
conn demo/123456
2.3.2 另外的一种登录方式【B/S】
输入网址—-https://localhost:1158/em
输入用户名密码进入主界面
2.4 修改用户密码
注:修改密码必须要在级别高的用户下进行修改
ALTER USER 用户名 IDENTIFIED BY 密码;
conn sys/bluedot as sysdba
ALTER USER demo IDENTIFIED BY 654321;
2.5 查询用户
2.5.1查看用户信息
1、SELECT * FROM DBA_USERS;——–查看所有用户的详细信息
2、SELECT * FROM ALL_USERS;——-查看所有用户简要信息
3、SELECT * FROM USER_USERS;————查看当前用户的所用信息
2.5.2 查看用户或角色系统权限(直接赋值给用户或角色的系统权限)
SELECT * FROM DBA_SYS_PRIVS;———-全部
SELECT * FROM USER_SYS_PRIVS; ———当前用户
2.5.3 查看角色(登录用户拥有的角色)所包含的的权限
SELECT * FROM ROLE_SYS_PRIVS;
2.5.4 查看用户对象权限
SELECT * FROM DBA_TAB_PRIVS;
SELECT * FROM ALL_TAB_PRIVS;
SELECT * FROM USER_TAB_PRIVS;
2.5.5 查看所有角色
SELECT * FROM DBA_ROLES;
SELECT * FROM DBA_ROLE_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;
2.5.6 查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
SELECT * FROM V$PWFILE_USERS;
2.5.7 查看Oracle提供的系统权限
SELECT name FROM SYS.SYSTEM_PRIVSILEGE_MAP;
2.6 密码失效
提示用户第一次连接的时候需要修改密码,让用户的密码到期
|- ALTER USER 用户名 PASSWORD expire ;
2.7 授权
GRANT 权限/角色 TO 用户
给 demo 用户以创建 session 的权限:GRANT create session TO demo;
角色:————-角色就是一堆权限的集合
Create role myrole;
Grant create table to myrole;
Drop role myrole; 删除角色
1.CONNECT, RESOURCE, DBA
这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。
2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE 这些角色主要用于访问数据字典视图和包。
3.EXP_FULL_DATABASE, IMP_FULL_DATABASE 这两个角色用于数据导入导出工具的使用。
GRANT 权限(select、update、insert、delete) ON schema.table TO 用户
|- GRANT select ON scott.emp TO test ;
|- Grant all on scott.emp to test; –将表相关的所有权限付给 test
|- Grant update(ename) on emp to test; 可以控制到列(还有 insert)
2.8 收权
REVOKE 权限/角色 ON schema.table FROM 用户
|- REVOKE select ON scott.emp FROM test ;
2.9 锁住一个用户
ALTER USER 用户名 ACCOUNT LOCK|UNLOCK
|- ALTER USER test ACCOUNT LOCK ;
|- ALTER USER test ACCOUNT UNLOCK ;
2.10 删除用户
|-DROP USER 用户名;
|-Drop user demo;
如果该用户下面已经存在表等一些数据库对象。则必须用级联删除
|-DROP USER 用户名 CASCADE;
|-Drop user demo cascade;
备注:帮助
help index
help conn ——–显示具体的
eidt—————进入编辑文档
三、 Oracle的体系结构
3.1 Oracle数据库的整体架构 (DBA)
┌──────────────────────────────┐
┌────┐ │ Instance │
│ User │ │ ┌──────────────────────────┐ │
│ process│ │ │ ┌────────┐ SGA │ │
└────┘ │ │ │ Shared Pool │ │ │
↓ │ │ │ ┌─────┐ │ ┌────┐ ┌────┐ │ │
↓ │ │ │ │Library │ │ │Database│ │ Redo │ │ │
┌────┐ │ │ │ │ Cache │ │ │Buffer │ │ Log │ │ │
│ Server │ │ │ │ └─────┘ │ │Cache │ │ Buffer │ │ │
│process │ │ │ │ ┌─────┐ │ │ │ │ │ │ │
└────┘ │ │ │ │Data Dict │ │ └────┘ └────┘ │ │
↓ │ │ │ │ Cache │ │ │ │
→→→→→→│ │ │ └─────┘ │ │ │
│ │ └────────┘ │ │
│ └──────────────────────────┘ │
│ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌───┐│
│ │PMON│ │SNON│ │DBWR│ │LGWR│ │CHPT│ │OTHERS││
│ └──┘ └──┘ └──┘ └──┘ └──┘ └───┘│
└──────────────────────────────┘
↑ ↓
┌─────┐ ┌───────────────────┐
│Parameter │ │┌───┐ ┌────┐ ┌────┐│
│ file │ ││Data │ │control │ │Redo Log││ ┌─────┐
└─────┘ ││files │ │ files │ │ files ││ │Archived │
┌─────┐ │└───┘ └────┘ └────┘│ │Log files │
│ Password │ │ Database │ └─────┘
│ file │ │ │
└─────┘ └───────────────────┘
由上图可知,Oracle数据库由实例和数据库组成。
3.2 数据库存储结构
3.2.1 数据库存储结构
Oracle数据库有物理结构和逻辑结构。数据库的物理结构是数据库中的操作系统文件的集合。数据库的物理结构由数据文件、控制文件和重做日志文件组成。
1、数据文件:数据文件是数据的存储仓库。
2、重做日志文件:重做日志文件包含对数据库所做的更改记录,在发生故障时能够恢复数据。重做日志按时间顺序存储应用于数据库的一连串的变更向量。其中仅包含重建(重做)所有已完成工作的最少限度信息。如果数据文件受损,则可以将这些变更向量应用于数据文件备份来重做工作,将它恢复到发生故障的那一刻前的状态。重做日志文件包含联机重做日志文件(对于连续的数据库操作时必须的)和归档日志文件(对于数据库操作是可选的,但对于时间点恢复是必须的)。
3、控制文件:控制文件包含维护和验证数据库完整性的必要的信息。控制文件虽小,但作用非常大。它包含指向数据库其余部分的指针:联机重做日志文件和数据文件的位置,以及更新的归档日志文件的位置。它还存储着维护数据库完整性所需的信息。控制文件不过数MB,却起着至关重要的作用。
除了三个必须的文件外数据库还能有其它非必须的文件如:参数文件、口令文件及归档日志文件。
1、实例参数文件:当启动oracle实例时,SGA结构会根据此参数文件的设置内置到内存,后台进程会据此启动。
2、口令文件:用户通过提交用户名和口令来建立会话。Oracle根据存储在数据字典的用户定义对用户名和口令进行验证。
3、归档重做日志文件:当重做日志文件满时将重做日志文件进行归档以便还原数据文件备份。
3.2.2 Oracle数据库结构的16个要点(表空间–>段–>区–>块)
1、一个数据文件只能归到某一个表空间上,每个表空间可以含一个或多个数据文件。包括系统数据和用户数据。
2、表空间是包括一个或多个数据文件的逻辑结构。用于存放数据库表、索引、回滚段等对象的磁盘逻辑空间
3、数据库文件是存放实际数据的物理文件。包括实例和数据库。
4、数据文件可以在创建表空间时创建,也可以以增加的方式创建。
5、数据文件的大小一般与操作系统限制有关。
6、控制文件是Oracle的重要文件,主要存放数据文件、日志文件和数据库的基本信息,一般在数据打开时访问。
7、日志文件在数据库活动时使用。
8、临时表空间是用于存放排序段的磁间;临时表空间由一个或多个临时文件组成。
9、归档日志文件由归档进程将联机日志文件读出并写到一个路径上的文件。
10、Oracle实例由一组后台进程和内存结构组成。
11、Oracle实例的内存结构常叫系统全局区,简称SGA。
12、DBA_开头的数据字典存放的字符信息都是大写,而V
16、SGA分为数据缓冲区、共享池和日志缓冲区。
3.2.3 Oracle逻辑结构及表空间
1.ORACLE逻辑结构
ORACLE将数据逻辑地存放在表空间,物理地存放在数据文件中。
一个表空间任何一个时刻只能属于一个数据库。
数据库——表空间——段——区——ORACLE块
每个数据库由一个或多个表空间组成,至少一个。
每个表空间基于一个或多个操作系统的数据文件,至少一个,一个操作系统的数据文件只能属于一个表空间。一个表空间可以存放一个或多个段 segment。
每个段由一个或多个区段extent组成。
每个区段由一个或多个连续的ORACLE数据库块组成。
每个ORACLE数据块由一个或多个连续的操作系统数据块组成。
每个操作系统数据文件由一个或多个区段组成,由一个或多个操作系统数据块组成。
⑴、表空间(tablespace)
表空间是数据库中最大的逻辑单位,每一个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空间相联系。每一个数据库都有一个SYSTEM表空间,该表空间是在数据库创建或数据库安装时自动创建的,用于存储系统的数据字典表,程序系统单元,过程函数,包和触发器等,也可用于存储用户数据表,索引对象。表空间具有在线(online)和离线(offline)属性,可以将除SYSTME以外的其他任何表空间置为离线。
⑵、段(segment)
数据库的段可以分为四类:数据段、索引段、回退段和临时段。
⑶、区
区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储与段中,它由连续的数据块组成。
⑷、数据块
数据块是数据库中最小的数据组织单位与管理单位,是数据文件磁盘存储空间单位,也是数据库I/O的最小单位,数据块大小由DB_BLOCK_SIZE参数决定,不同的Oracle版本DB_BLOCK_SIZE的默认值是不同的。
⑸、模式对象
模式对象是一种应用,包括:表、聚簇、视图、索引序列生成器、同义词、哈希、程序单元、数据库链等。
最后,在来说一下Oracle的用户、表空间和数据文件的关系:
一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。用户和表空间没有隶属关系,表空间是一个用来管理数据存储的逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
总结:解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。
2.两类表空间:
系统SYSTEM表空间 非系统表空间 NON-SYSTEM表空间
系统SYSTEM表空间与数据库一起建立,在系统表空间中有数据字典,系统还原段。可以存放用户数据但是不建议。
非系统表空间NON-SYSTEM表空间 由管理员创建。可以方便管理。
3.3 实例的整体架构
实例整体架构图:
┌──────────────────────────────┐
│ Instance │
│ ┌──────────────────────────┐ │
│ │ ┌────────┐ SGA │ │
│ │ │ Shared Pool │ │ │
│ │ │ ┌─────┐ │ ┌────┐ ┌────┐ │ │
│ │ │ │Library │ │ │Database│ │ Redo │ │ │
│ │ │ │ Cache │ │ │Buffer │ │ Log │ │ │
│ │ │ └─────┘ │ │Cache │ │ Buffer │ │ │
│ │ │ ┌─────┐ │ │ │ │ │ │ │
│ │ │ │Data Dict │ │ └────┘ └────┘ │ │
│ │ │ │ Cache │ │ │ │
│ │ │ └─────┘ │ │ │
│ │ └────────┘ │ │
│ └──────────────────────────┘ │
│ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌───┐│
│ │PMON│ │SNON│ │DBWR│ │LGWR│ │CHPT│ │OTHERS││
│ └──┘ └──┘ └──┘ └──┘ └──┘ └───┘│
└──────────────────────────────┘
实例由内存和后台进程组成,它暂时存在于RAM和CPU中。当关闭运行的实例时,实例将随即消失。数据库由磁盘上的物理文件组成,不管在运行状态还是停止状态,这些文件就一直存在。因此,实例的生命周期就是其在内存中存在的时间,可以启动和停止。一旦创建数据库,数据库将永久存在。通俗的讲数据库就相当于平时安装某个程序所生成的安装目录,而实例就是运行某个程序时所需要的进程及消耗的内存。
Oracle的内存架构包含两部分系统全局区(SGA)和程序全局区(PGA)。
3.3.1 程序全局区
3.3.2 系统全局区
在操作系统提供的共享内存段实现的内存结构称为系统全局区(SGA)。SGA在实例启动时分配,在关闭时释放。在一定范围内,可以在实例运行时通过自动方式或响应DBA的指令,重新调整11g实例中的SGA及其中的组件的大小。
由上图可知SGA至少包含三种数据结构:数据库缓冲区缓存、日志缓冲区及共享池。还可能包括:大池、JAVA池。可以使用show sga,查看sga的状态。
1、共享池
a.库缓存是内存区域,按其已分析的格式存储最近执行的代码。分析就是将编程人员编写的代码转换为可执行的代码,这是oracle根据需要执行的一个过程。通过将代码缓存在共享池,可以在不重新分析的情况下重用,极大地提高性能。
b.数据字典缓存有时称为“行缓存”,它存储最近使用的对象定义:表、索引、用户和其他元数据定义的描述。
c.PL/SQL区:存储的PL/SQL对象是过程、函数、打包的过程、打包的函数、对象类型定义和触发器。
2、数据库缓冲区
数据库缓冲区是oracle用来执行SQL的工作区域。
3、日志缓冲区
日志缓冲区是小型的、用于短期存储将写入到磁盘上的重做日志的变更向量的临时区域。日志缓冲区在启动实例时分配,如果不重新启动实例,就不能在随后调整其大小。
后台进程有:
1、PMON—–程序监控器
2、SMON—–系统监控区
3、DBWR—–数据写进程
4、LGWR—–日志写进程
5、CKPT—–检查点进程
6、Others—归档进程
四、SQL语法基础(DDL、DCL、TCL、DML)
SQL 全名是结构化查询语言(Structured Query Language),是用于数据库中的标准数据查询语言,IBM 公司最早使用在其开发的数据库系统中。1986 年 10 月,美国 ANSI 对 SQL 进行规范后,以此作为关系式数据库管理系统的标准语言 (ANSI X3. 135-1986),1987 年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对 SQL 规范作了某些编改和扩充。所以,实际上不同数据库系统之间的 SQL 语言不能完全相互通用
DML 语句(数据操作语言)Insert、Update、 Delete、Select
DDL 语句(数据定义语言)Create、Alter、 Drop
DCL 语句(数据控制语言)Grant、Revoke
TCL 事务控制语句 Commit 、Rollback、Savepoint
4.1 入门语句
普通用户连接: Conn scott/tiger
超级管理员连接: Conn “sys/bluesot as sysdba”
Disconnect; 断开连接————-disc
Save c:\1.txt 把 SQL 存到文件
Ed c:\1.txt 编辑 SQL 语句
@ c:\1.txt 运行 SQL 语句
Desc emp; 描述 Emp 结构
Select * from tab; 查看该用户下的所有对象
Show user; 显示当前用户
如果在 sys 用户下: 查询 Select * from emp; 会报错,原因:emp 是属于 scott,所以此时必须使用:select * from scott.emp; / 运行上一条语句
4.2 DDL(数据定义语言)—-改变表结构
4.2.1 创建表
CREATE TABLE name (
tid VARCHAR2(5),
tname VARCHAR2(20),
tdate DATE,
as VARCHAR(7,2)
);
4.2.2 添加一列
ALTER TABLE 表名 ADD 列名 属性;
ALTER TABLE student ADD age number(5);
4.2.4 删除一列
ALTER TABLE table_name DROP COLUMN column_name;
ALTER TABLE student DROP COLUMN age;
4.2.5 修改一列的属性
ALTER TABLE table_name MODIFY column_name type;
修改列名
ALTER TABLE table_name RENAME COLUMN columnname TO newname;
修改表名
ALTER TABLE table_name RENAME TO newname;
4.2.6 查看表中数据
DESC table_name;
4.2.7 删除表
DROP TABLE table_name;
4.3 DCL(数据控制语言)
4.3.1 授权
GRANT 权限/角色 TO 用户
给 demo 用户以创建 session 的权限:GRANT create session TO demo;
角色:————-角色就是一堆权限的集合Create role myrole;
Grant create table to myrole;
Drop role myrole; 删除角色
1.CONNECT, RESOURCE, DBA
这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。
2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE 这些角色主要用于访问数据字典视图和包。
3.EXP_FULL_DATABASE, IMP_FULL_DATABASE 这两个角色用于数据导入导出工具的使用。
GRANT 权限(select、update、insert、delete) ON schema.table TO 用户
|- GRANT select ON scott.emp TO test ;
|- Grant all on scott.emp to test; –将表相关的所有权限付给 test
|- Grant update(ename) on emp to test; 可以控制到列(还有 insert)
4.3.2 收权
REVOKE 权限/角色 ON schema.table FROM 用户
|- REVOKE select ON scott.emp FROM test ;
4.4 TCL(事务控制语言)
事务的概念:事务是一系列对数据库操作命令的集合,它有边界(commit—commit)
事务的特征:A ——原子性—–不可分割性——-要么执行要么不执行
C——一致性—–rollback
I——-隔离性—–锁的机制来保证的,锁有粒度【表、行】———只读、修改锁
上锁—SELECT * FROM DEMO1 FOR UPDATE;
释放——commit、rollback
D —–持久性——-commit
系统时间—–sysdate
to_date(‘2013/11/09’,‘yyyy/mm/dd’)——–修改日期格式
转换函数
1、To_char
select to_char(sysdate,’yyyy’) from dual;
select to_char(sysdate,’fmyyyy-mm-dd’) from dual;
select to_char(sal,’L999,999,999’) from emp;
select to_char(sysdate,’D’) from dual;//返回星期
2、To_number
select to_number(‘13’)+to_number(‘14’) from dual;
3、To_date
Select to_date(‘20090210’,‘yyyyMMdd’) from dual;
4.4.1 ROLLBACK
回滚——回滚到它上面的离它最近的commit
4.4.2 COMMIT
提交———–将数据缓冲区的数据提交到文件中去
4.4.3 SAVEPOINT——保存点
回滚点例子:
INSERT INTO DEMO1(TID,TNAME) VALUES(11,’AS’);
SAVEPOINT P1;
INSERT INTO DEMO1(TID,TNAME) VALUES(22,’AS’);
INSERT INTO DEMO1(TID,TNAME) VALUES(33,’AS’);
SAVEPOINT P2;
INSERT INTO DEMO1(TID,TNAME) VALUES(44,’AS’);
ROLLBACK TO P2;
COMMIT;
INSERT INTO DEMO1(TID,TNAME) VALUES(55,’AS’);
ROLLBACK TO P1;———-无法回滚
————查询结果:11,22,33 由于55没有提交所以没有写入文件
4.5 DML(数据操作语言)———改变数据结构
4.5.1 insert 语句
INSERT INTO table_name() VALUES();
INSERT INTO table_name VALUES();
插入空值时,用三种格式
1、INSERT INTO demo VALUES(”);
2、INSERT INTO demo VALUES(’ ‘);
3、INSERT INTO demo VALUES(NULL);
INSERT INTO demo(tid,tname,tdate) VALUES(1,null,sysdate);
INSERT INTO demo(tid,tname,tdate) VALUES(1,”,to_date(sysdate,’yyyy-mm-dd’));
INSERT INTO demo VALUES(1,”,to_date(‘2013/11/11’,’yyyy/mm/dd’));
注意:
1、字符串类型的字段值必
以上是关于java基础知识总结8(数据库篇1)的主要内容,如果未能解决你的问题,请参考以下文章