Oracle 10g学习笔记
掌握Java如何链接oracle数据库:
Connection url:jdbc:oracle:thin:@127.0.0.1:1521:orcl
Driver class:oracle.jdbc.driver.OracleDriver
oracle驱动包名:ojdbc14_g.jar
一、Oracle 10g的体系结构:
数据库是由一个或多个表空间组成的
l 表空间是由一个或多个数据文件组成,表空间中包含段
(表空间是SYSTEM用来存储数据字典和系统管理信息)
l 段(表、索引)由一个或多个盘区组成,段存在于表空间中
,但是在表空间中可以有许多数据文件中的数据;
l 盘区是在磁盘上连续的快的组,一个盘区在一个表空间中,且在表空间中单一的文件中
l 快是数据库中最小的分配单位,也是数据库使用的最小的I/O单元。
二、用户管理
1、在书上第2章:
管理员帐号:system/pengtian
例子帐号:scott/tiger
解锁;alter user scott account unlock //account:帐号
创建用户: create user oracle_admin identified by pengtian;
修改用户密码:alter user userName identified by newPasword
删除用户:drop user userName cascade;
授予用户权限:
基本语法:grant 权限1,权限2 to user
2、oracle 10g格式化查询结果:
2.1、column命令:
column[column_name|column_alias][option] //alias:别名
Column column_name heading 'new_column_name'--->改变列标题
Column column_name clear--->清除一列的所有格式
column column_name null ''-->指定为空值显示的内容
Column column justify[center/left/right]-->指定列的对齐方式
2.2、linesize命令:是用于设置一行数据可以容纳的字符数量,linesize的默认值为80
Set linesize 100-->设置一行数据可以容纳100个字符
Show linesize 可以查看当前linesize值
3、查询系统具有哪些权限:
ROLE_SYS_PRIVS 角色拥有的系统权限
ROLE_TAB_PRIVS 角色拥有的对象权限
USER_TAB_PRIVS_MADE 查询授出去的对象权限(通常是属主自己查)
USER_TAB_PRIVS_RECD 用户拥有的对象权限
USER_COL_PRIVS_MADE 用户分配出去的列的对象权限
USER_COL_PRIVS_RECD 用户拥有的关于列的对象权限
USER_SYS_PRIVS 用户拥有的系统权限
USER_TAB_PRIVS 用户拥有的对象权限
USER_ROLE_PRIVS 用户拥有的角色
4、管理表:
4.1、在创建表之前得通过超级管理用户授一系列的权限给新创建的用户----》然后需要修改表空间如下:
Alter user userName
Default tablespace users
Temporary tablespace temp;
----》修改表空间配额01
Alter user userName
Default tablespace users
Quota 10m on users
4.2、如何实现主键ID的自动增长:
5、修改表:首先得创建一个序列如:
create sequence book_id
minvalue 1
start with 1
increment by 1
然后插入数据库表中:
insert into tableName values(book_id.nextval,'');
查询序列名称
select sequence_name from user_sequences;
5.1增加一列
Alter table tableName
Add
(
newColumn columnTyp
)
5.2、删除一列
alter table book drop column bookname;
5.3、修改列的类型
alter table book
modify
(
author varchar2(10)
);
5.4、修改表名
alter table oldTableName rename to newTableName
5.5、修改列名alter table books rename column oldColumnname to newColumnName;
6、约束:
6.1、主键约束:
Alter table tableName add constraint constraint_name primary key(columnName1||columnName.......)
6.2、唯一约束:
Alter table tableName add constraint constraint_name unique(columnName)
6.3、check约束:
Alter table tableName add constraint constraint_name check(constraint condition)//如sex in('男','女')
6.4、外键约束:
Table 1:person(id,name,depno)
Table 2:department(depcode,depname)
Alter table person add constraint depno_fk foreign key(depno) references(depcode)
6.5、设置默认值:
Alter table tableName modify
(
columnName columnType default <expression>
)
6.6查看一个表中的约束语句:
select * from user_constraints where TABLE_NAME='table_Name'
6.7、删除一个约束:
alter table person drop constraint PERSON_KEY
//约束名不需要引号
7、SQL*Plus缓冲区:
7.1、定义:
就是SQL*Plus会在缓冲区或者内存区域中存储用户最近运行的命令,通过在缓冲区中存储这些命令,使用户就能够重新调用、编辑哪些最近输入的sql语句
7.2、SQL*Plus常用的编辑命令:
l C[hange]/old/new -->把旧文本old替换为新文本new
l A[ppend] text -->把指定的文本text附加到当前行的末尾
l L[ist] -->列出SQL缓冲区中的所有行
l L[list] n -->列出指定的行
l R以及/命令 -->显示并且运行缓冲区中的当前命令
7.3执行脚本文件命令:@filePath
7.4、spool命令:可以把sql*Plus中显示的内容保存到硬盘上去
如:
Spool filePath append
....
Sql*Plus屏幕上显示的内容
Spool off; -->关闭
8、select语句:select语句可以完成选择、投影、连接等运算
8.1、基本语法格式:
Select [distinct][*,column_name[alias],....]
From table_name
Where
Group by -->执行分组检索操作
Having -->指定分组检索的条件
Order by -->指定排序的条件 desc(降序排列) asc(升序排列 默认)
//distinct:删除副本,只允许在结果集中出现不同的值
//alias:副本
8.2、算术运算符:特别要主意空值的运算,空值既不是字符串中的空格,也不是数字中的零。任何包含了空值运算的表达式的结果依然是空值 【+,-,*,/,()】
8.3、比较运算符:
8.3.1、普通比较运算符:
=、>、>=、<、<=、<>或!=
8.3.2、特殊比较运算符:
Between....and 检索在两个值之间的内容(包含两端的值)
In 检索匹配列表中任意一个值的数据
Like '_%' 检索匹配字符样式的数据,_表示单个字符,%表示任意字符
Is null 检索空数据
8.4、逻辑运算符:
And-->or-->not(优先级从高到底)
8.5、合计计算:
select sum(sal) as 所发工资数,avg(sal) as 平均工资,max(sal) as 最高工资,min(sal) as 最低工资,empno from emp group by empno
8.6常用函数:
Nvl(columnName,value) 判断字段列名是否为空,如果columnName返回的值为空则则返回 value
value(value需是数字型),否则返回columnName
Lower(x)将x中的字符转换为小写
Upper(x)将x中的字符转换为大写
To_char(x,format)
To_date(x,foramt) to_date('2011-09-01','yyyy-mm-dd')
8.7日期与时间:
改变sql*plus界面日期显示的格式,默认是dd-mm-yyyy
日期数据格式是由nls_date_format系统参数来设置,系统参数存储在init.ora文件和spfile.ora文件中,可以通过alter session或者 alter system来改变nls_date_format数据格式
8.8、复制一个表中到另一个表中:
Create table newTableName as select * from copyTableName;
8.8、关于Oracle 10g的新特性 recyclebin(回收站)
Oracle10g提供了类似操作系统中的回收站功能。当drop table的时候,实际上只是将其重命名,并将table以及相关联的对象如index,constraint等放到回收站(RecycleBin)中,后续如果发现drop错了table,可以使用flashback table命名将回收站中的table还原,这就是Oracle10g的Flashback Drop功能。
查看回收站中的内容:select object_name,original_name from recyclebin
还原删除的内容:flashback table tableName to before drop rename to person
彻底删除一个表:purge table tableName
9、Oracle分页查询:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
)
WHERE RN BETWEEN 21 AND 40
10、存储过程:
create or replace procedure getName(name out varcahr2)--输出参数不需要定义长度
as
begin
statement
end;--需要有分号