重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一 ORACLE的表的分类 REGULAR TABLE 普通表 ORACLE推荐的表 使用很方便 人为控制少 PARTITIONED TABLE 分区表 人为控制记录的分布 将表的存储空间分为若干独立的分区 记录按一定的规则存储在分区里 适用于大型的表 二 建表 CREATE TABLE 表名 (EMPNO NUMBER( ) NAME VARCHAR ( )) PCTFREE PCTUSED STORAGE (INITIAL K NEXT K MAXEXTENTS PCTINCREASE ) TABLESPACE 表空间名称 [LOGGING|NOLOGGING]所有的对表的操作都要记入REDOLOG ORACLE建议使用NOLOGGING [CACHE|NOCACHE] 是否将数据按照一定的算法写入内存 关于PCTFREE 和PCTUSED A 行迁移和行链接 B PCTFREE 制止INSERT 为 UPDATE留FREE 空间 C PCTUSED 为恢复INSERT操作 而设定的 三 拷贝一个已经存在的表 CREATE TABLE 新表名 STORAGE( ) TABLESPACE 表空间 AS SELECT * FROM 老表名 当老表存在约束 触发的时候 不会拷过去 四 修改表的参数 ALTER TABLE 名称 PCTFREE PCTUSED STOAGE(MAXEXTENTS ) 五 手工分配空间 ALTER TABLE 名称 ALLOCATE EXTENT(SIZE K DATAFILE ) SIZE选项 按照NEXT分配 表所在表空间与所分配的数据文件所在的表空间必须一样 六 水线 水线定义了表的数据在一个BLOCK中所达到的最高的位置 当有新的记录插入 水线增高 当删除记录时 水线不回落 减少查询量 七 如何回收空间 ALTER TABLE 名称 DEALLOCATE UNUSED [KEEP [M|K]] 当空间分配过大时 可以使用本命令 如果没有加KEEP 回收到水线 如果水线《MINEXTENTS的大小回收到MINEXTENTS所指定的大小 八 TRUNCATE 一个表 TRUNCATE TABLE 表名 表空间截取MINEXTENT 同时水线重置 九 DROP 一个表 DROP TABLE 表名 [CASCADE CONSTRAINTS] 当一个表含有外键的时候 是不可以直接DROP的 加CASCADE CONSRIANTS将外键等约束一并删掉 十 信息获取 dba_object dba_tables:建表的参数 DBA_SEGMENTS: 组合查询的连接字段 DBA_TABLES的table_name+dba_ojbect的object_name+dba_segments的SEGMENT_NAME 第十一章 索引的管理 一 索引的分类 逻辑上 单列索引 复合索引 唯一索引 非唯一索引 物理上 B TREE OR BITMAP B TREE (NORMAL和反向索引) 二 CREATE INDEX CREATE INDEX 名称 ON 表名(列名) PCTFREE STORAGE( ) TABLESPACE 名称 没有定义PCTUSED 索引是按照一定存储的 如果通过PCTUSED允许恢复对BLOCK的INSERT操作 可能影响INDEX的效率 三 建立索引的注意事项 索引对查询性能有提高 但对DML语句有影响 索引也应该放在一个专用的表空间 定义索引的EXTENT的大小时 = *DB BLOCK 建立索引时 应采用 NOLOGGING 方式 四 修改索引 ALTER INDEX 名称 STORAGE(新值) 五 分配空间给索引 ALTER INDEX 名称 ALLOCATE EXTENT(SIZE K DATAFILE ) 六 重建索引 提高查询性能 当一个索引重建时 老的索引会在新索引建立完成后 被删除 新索引建立过程中 老的索引仍可用于查询 硬盘的开销大 七 DROP一个索引 DROP INDEX 名称 八 信息获取 DBA_INDEXES:建索引的参数 DBA_IND_COLUMNS: 第十二章 用户的管理 一 ORACLE的安全域 TABLESPACE QUOTAS 表空间的使用定额 DEFAULT TABLESPACE 默认表空间 TEMPORARY TABLESPACE 指定临时表空间 ACCOUNT LOCKING 用户锁 RESOURCE LIMITE 资源限制 DIRECT PRIVILEGES 直接授权 ROLE PRIVILEGES 角色授权先将应用中的用户划为不同的角色 二 创建用户时的清单 选择一个用户名称和检验机制 A 看到用户名 实际操作者是谁 业务中角色 选择合适的表空间 决定定额 口令的选择 临时表空间的选择 先建立一个临时表空间 然后在分配 不分配 使用SYSTEM表空间 CREATE USER 授权 A 用户的工作职能 B 用户的级别 三 用户的创建 命令 CREATE USER 名称 IDENTIFIED BY 口令 DEFAULT TABLESPACE 默认表空间名 TEMPOARAY TABLESPACE 临时表空间名 QUOTA M ON 表空间名 [PASSWORD EXPIRE] 当用户第一次登陆到ORACLE 创建时所指定的口令过期失效 强迫用户自己定义一个新口令 [ACCOUNT LOCK] 加用户锁 QUOTA UNLIMITED ON TABLESPACE 不限制 有多少有多少 [PROFILE 名称] 受PROFILE文件的限制 四 如何控制用户口令和用户锁 强迫用户修改口令 ALTER USER 名称 IDENTIFIED BY 新口令 PASSWORD EXPIRE 给用户加锁 ALTER USER 名称 ACCOUNT [LOCK|UNLOCK] 注意事项 A 所有操作对当前连接无效 B 的操作适用于当用户忘记口令时 五 更改定额 命令 ALTER USER 名称 QUOTA ON 表空间名 ALTER USER 名字 QUOTA (数值)K|M|UNLIMITED ON 表空间名 使用方法 A 控制用户数据增长 B 当用户拥有一定的数据 而管理员不想让他在增加新的数据的时候 C 当将用户定额设为零的时候 用户不能创建新的数据 但原有数据仍可访问 六 DROP一个USER DROP USER 名称 适合于删除一个新的用户 DROP USER 名称 CASCADE 删除一个用户 将用户的表 索引等都删除 对连接中的用户不好用 七 信息获取 DBA_USERS:用户名 状态 加锁日期 默认表空间 临时表空间 DBA_TS_QUOTAS:用户名 表空间名 定额 两个表的连接字段 USERNAME GRANT CREATE SESSION TO 用户名 第十三章 PROFILE的管理(资源 文件) 一 PROFILE的管理内容 CPU的时间 I/O的使用 IDLE TIME(空闲时间) CONNECT TIME(连接时间) 并发会话数量 口令机制 二 DEFAULT PROFILE 所有的用户创建时都会被指定这个PROFILE DEFAULT PROFILE的内容为空 无限制 三 PROFILE的划分 CALL级LIMITE 对象是语句 当该语句资源使用溢出时 A 该语句终止 B 事物回退 C SESSION连接保持 SESSION级LIMITE 对象是 整个会话过程 溢出时 连接终止 四 如何管理一个PROFILE CREATE PROFILE 分配给一个用户 象开关一样打开限制 五 如何创建一个PROFILE 命令 CREATE PROFILE 名称 LIMIT SESSION_PER_USER CPU_PER_SESSION IDLE_TIME CONNECT_TIME 六 限制参数 SESSION级LIMITE CPU_PER_SESSION:定义了每个SESSION占用的CPU的时间 ( / 秒) SESSION_PER_USER:每个用户的并发连接数 CONNECT_TIME:一个连接的最长连接时间(分钟) LOGICAL_READS_PER_SESSION: 一次读写的逻辑块的数量 CALL级LIMITE CPU_PER_CALL:每个语句占用的CPU时间 LOGICAL_READS_PER_CALL: 七 分配给一个用户 CREATE USER 名称 PROFILE 名称 ALTER USER 名称 PROFILE 名称 八 打开资源限制 RESOURCE_LIMT:资源文件中含有 ALTER SYSTEM SET RESOURCE_LIMIT=TRUE 默认不打开 九 修改PROFIE的内容 ALTER PROFILE 名称参数 新值 对于当前连接修改不生效 十 DROP一个PROFILE DROP PROFILE 名称 删除一个新的尚未分配给用户的PROFILE DROP PROFILE 名称 CASCADE 注意事项 A 一旦PROFILE被删除 用户被自动加载DEFAULT PROFILE B 对于当前连接无影响 C DEFAULT PROFILE不可以被删除 十一 信息获取 DBA_USERS: 用户名 PROFILE DBA_PROFILES: lishixinzhi/Article/program/Oracle/201311/18833
为管城等地区用户提供了全套网页设计制作服务,及管城网站建设行业解决方案。主营业务为网站制作、做网站、管城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
oracle入门知识
一个表空间只能属于一个数据库每个数据库最少有一个控制文件(建议 个 分别放在不同的磁盘上)
每个数据库最少有一个表空间(SYSTEM表空间)
建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起 以提高使用效率 只应存放数据字典
每个数据库最少有两个联机日志组 每组最少一个联机日志文件
一个数据文件只能属于一个表空间一个数据文件一旦被加入到一个表空间中 就不能再从这个表空间中移走 也不能再加入到其他表空间中
建立新的表空间需要建立新的数据文件
MIT后 数据不一定立即写盘(数据文件)
一个事务即使不被提交 也会被写入到重做日志中
oracle server可以同时启动多个数据库
一套操作系统上可以安装多个版本的ORACLE数据库系统(UNIX可以 NT不可以)
lishixinzhi/Article/program/Oracle/201311/16610
Oracle主要数据类型
概述 各种数据库所支持的数据类型大同小异 与标准SQL语言中的数据类型可能略有出入
类型 varchar 可以在声明字段时设置它的长度上限 而且使用它之后 就不必再考虑空格的存在
若插入的字符串的长度低于长度上限 系统就会自动将其缩减为字符串的真实长度
number(m n) 既可以用来表示整型 也可以表示浮点型 但m不可以超过 如果n为 或者省略n 就代表它是整数
date 用来存放日期和时间
blob 通常是在应用程序中使用到它 而不是在数据库中利用SQL指令直接使用
比如通过JDBC技术访问数据库 读写blob或clob类型的字段 即读写长的字符串信息等等
char 它是一种定长的字符类型 在Oracle数据库不区分字符和字符串 它们被统称为字符型或文本型
所谓定长的字符型是指 插入的字符串若没有达到约定的字段长度 系统就会在字符串尾部自动补空格
同样 读取时的字段长度永远是声明时的字段长度 而且在比较字符串内容的时候 也需要考虑到空格的过滤
nchar 它也是定长的字符串类型 它是SQL语言标准中规定的 通常采用Unicode编码来保存不同国家或不同语言的字符
varchar SQL标准在定义varchar时并没有保证能够向前和向后兼容 即有可能随着语言标准的修改而产生不兼容的问题
所以Oracle定义了同varchar型类似的varchar 型 就是为了在Oracle以后的版本中 都永远支持varchar 类型
Oracle这么做就是为了确保此类型向前后兼容 以达到能够在Oracle系列数据库中进行数据的导入和导出的目的
long 它和varchar 的差别在于 它不支持对字符串内容进行检索 即查询时不可以对它的内容进行条件查询
而varchar 和char nchar型等等都可以在查询的时候直接检索字符串的内容
补充 select * from v$nls_parameters;数据库的配置信息以数据表的形式存在 通常称其为关于数据的数据或数据字典
实际上它查询的是数据字典中的一个视图 其中NLS_CHARACTERSET对应的是当前的数据库字符集
缺省均为使用数据库字符集 教程中使用的是安装时默认的ZHS GBK字符集 即汉字占 个字节 英文占 个字节
而NLS_NCHAR_CHARACTERSET对应的是nchar或nvarchar 类型所采用的辅助字符集 即AL UTF 字符集
实际上AL UTF 是一种 位定长的Unicode编码的字符集 而数据库字符集以及这种国家字符集都可以修改
但数据库字符集修改后可能会面临很严重的后果 除非是数据库管理员 普通用户不必对这方面进行深究
数据库中的数据导入导出的时候 如果源数据库和目标数据库所采用的字符集不同 也很容易出问题
函数
概述 函数可以认为是能够完成相对独立的功能的一段代码的集合 Oracle函数相当于其它语言中的方法或过程
Oracle函数可以分为单行函数和多行函数两大类 Oracle函数都是有返回值的
所谓的单行函数是针对查询结果中的每一行都起作用 都会返回一个结果
多行函数也就是所谓分组函数 是针对一组查询的记录 或者说多行 返回一个结果
单行 操作数据项 接受参数并返回处理结果 对每一返回行均起作用 可修改数据类型 可嵌套使用
单行函数分为字符函数 数值函数 日期函数 转换函数 通用函数
多行 也称分组函数 即对一组数据进行运算 针对一组数据(多行记录)只能返回一个结果
多行函数包括avg() count() max() min() sum()等
比如select avg(sal) max(sal) min(sal) sum(sal) max(hiredate) min(hiredate) from emp;
续一 使用Oracle的系统函数中的单行函数可实现诸多功能 如对数据进行计算 控制数据的输出格式
设置和改变日期的显示格式 进行数据类型转换 使用NVL等函数处理空值 实现IF THEN ELSE多路分支逻辑等等
续二 转换函数不会改变表中数据的字段类型和值 它就相当于将数据复制了一份 所转换的是复制之后的数据
数据类型转换包括隐含转换和显式转换两种方式 建议使用显式的数据类型转换 确保SQL语句的可靠性
续三 通用函数适用于包括空值在内的任何类型数据 通常用来实现空值的处理 空值的过滤或设置缺省值等
通用函数包括nvl() nvl () nullif() coalesce() case表达式 decode()等
嵌套 单行函数可以嵌套使用 嵌套层次无限制 分组函数最多可嵌套两层 嵌套函数的执行顺序是由内到外
单行比如select empno lpad(initcap(trim(ename)) ) 姓名 job sal from emp;
多行比如select max(avg(sal)) from emp group by deptno; 其实这里再使用分组函数就没有意义了
说明 通常数据库层面提供的函数 只是进行数据的简单的处理 或者说是只能实现极为常规的功能
所以就不应该 或者说是不要指望在数据库查询的层面来实现特别复杂的业务逻辑
如果应用程序的逻辑跟数据库混在一起的话 会不利于代码的维护和更新
而且也不利于数据库的管理 包括数据移植 数据库导入导出等等
日期类型
概述 在计算机操作系统或者各种高级编程语言中 日期通常会被保存成一个长整数 通常记录的是毫秒
Oracle内部以数字格式存储日期和时间信息 世纪 年 月 日 小时 分钟 秒
缺省的日期格式是DD—MON—YY 可使用sysdata函数获取当前系统日期和时间
运算 日期型数据可以直接加或减一个数值 结果认为日期 约定的该数值代表的是相加减的天数
两个日期型数据可以相减 结果为二者相差多少天 二者不能 因为日期相加是没有意义的
NVL()函数
概述 它用于将空值null替换为指定的缺省值 适用于字符 数字 日期等类型数据
格式 NVL(exp exp ) 如果表达式exp 值为null 则返回exp 值 否则返回exp 值
举例 select empno ename sal m sal+nvl(m ) from emp;
select empno ename job nvl(job No job yet ) from emp;
NVL ()函数
概述 它用于实现条件表达式功能
格式 NVL (exp exp exp ) 如果表达式exp 值不为null 则返回exp 值 否则返回exp 值
举例 select empno ename sal m nvl (m sal+m sal) 总收入 from emp;
NULLIF()函数
概述 它用于数据等价性比较并根据比较结果返回null或其中一个被比较的数值 实际开发中应用并不是很多
格式 nullif(exp exp ) 如果表达式exp 与exp 的值相等 则返回null 否则返回exp 的值
举例 select name 原名 nullif(pen_name name) 化名 from author;
COALESCE()函数
概述 它用于实现数据“接合”功能
格式 coalesec(exp exp ) 依次考察各参数表达式 遇到非null值即停止并返回该值
若表达式均为null值 则返回null 通常最后一个表达式都是能确保不是空值的字段
举例 select empno ename sal m coalesec(sal+m sal ) 总收入 from emp;
CASE表达式
概述 它用于实现多路分支结构
格式 case exp when parison_exp then return_exp
[when parison_exp then return_exp
when parison_expn then return_expn
else else_exp]
end
举例 select empno ename sal
case deptno when then 财务部
when then 研发部
when then 销售部
else 未知部门
end 部门
from emp;
说明 CASE中的每一个表达式(如deptno 财务部等)都可以是复合而成的
这种对齐方式的书写是为了增加可读性 当然也可以把代码写在同一行上
其中case到end之间的整体就相当于普通查询中的一个字段 end后面的“部门”是别名
DEDODE()函数
概述 和case表达式类似 它也用于实现多路分支结构
格式 decode(col|expression search result
[ search result ]
[ default])
举例 select empno ename sal
decode(deptno 财务部
研发部
销售部
未知部门 )
部门
from emp;
COUNT()函数
格式 count(*)返回组中总记录数目
count(exp)返回表达式exp值非空的记录
count(distinct(exp))返回表达式exp值不重复的 非空的记录数目
举例 select count(*) from emp; 缺省的情况下 整个表就是一组
select count(m) from emp; 返回emp表中m字段不为空的记录(行)数目
select count(distinct(deptno)) from emp; 查找deptno值为非空且不重复的记录数目
分组函数与空值
概述 分组函数省略列中的空值 可使用NVL()函数强制分组函数处理空值
举例 select avg(m) from emp; 等价于sum(m)/count(m)
select sum(m) from emp; 计算表中非空的m值的总和
select avg(nvl(m )) from emp; 等价于avg(nvl(m ))/count(*)
GROUP BY子句
概述 它用于将表中数据分成若干小组
格式 select column group_function(column)
from table
[where condition]
[group by group_by_expression]
[order by column];
举例 select deptno avg(sal) from emp group by deptno;
说明 出现在SELECT列表中的字段 如果不是包含在组函数中 那么该字段必须同时在GROUP BY子句中出现
包含在GROPY BY子句中的字段则不必须出现在SELECT列表中 子句执行顺序是where→group by→order by缺省按升序排列
补充 select deptno job avg(sal) from emp group by deptno job order by deptno desc; 基于多个字段的分组
select deptno avg(sal) from emp; 非法
注意 如果没有GROUP BY子句 SELECT列表中不允许出现字段(单行函数)与分组函数混用的情况
WHERE中不允许使用分组函数 如select deptno avg(sal) from emp where avg(sal) group by deptno; 非法
这跟子句执行的顺序有关 where子句最先执行 在执行where子句的时候还没有执行过group by子句
于是程序不知道这是在分组 也不曾计算过avg(sal)的组内平均工资 所以在where子句中不允许使用分组函数
由于还没有执行过group by子句 所以此时就不确定如何怎么分组以及分多少个组
所以where子句中只能进行初级过滤 此时可以使用HAVING子句实现对平均工资的过滤
HAVING子句
概述 它用于过滤分组
格式 select column group_function(column)
from table
[where condition]
[group by group_by_expression]
[having group_condition]
[order by column];
举例 select deptno job avg(sal)
from emp
where hiredate = to_date( yyyy mm dd )
group by by deptno job
having avg(sal)
lishixinzhi/Article/program/Oracle/201311/19087
其实Oracle并不复杂,要有信心学好。
第一个阶段:掌握Oracle的安装、NET配置、熟练运用Oralce的相关操作。
第二个阶段:表、视图、触发器、序列的创建。注意Oracle的表是对应用户的。另外Oracle一个服务就相当与一个数据库。SQLServer是一个服务,可以建多个库。
第三个阶段:学习Oracle的异常处理,性能优化、各种备份机制。
最后给你ACE高手的网站
1、SQL是必知的,无论那个方向,入门只需要一份简单的文档就可以,网上很多。
2、确定方向:
数据库维护管理方向:国内已经出了几本书,找一本,翻烂它,也可以入门
数据分析开发方向:主要是高级的SQL技巧
数据处理开发方向:存储过程、函数、包等
3、多看视频,播布客、驴子上都有一些。这个用来做知识拓展深化
4、没有项目实践可以考虑参加机构的培训(虽然可以侃侃价,但成本还是不低的)
oracle是块结构语言,oracle程序划分成几个部分,并在每个部分中写入逻辑代码块,每个块由三个子部分组成。
声明部分:此部分是以关键字DECLARE开头。这是一个可选部分,并定义了程序中要使用的所有变量,游标,子程序和其他元素。
可执行命令部分:此部分包含在关键字BEGIN和END之间,这是一个强制性部分。由程序的可执行oracle语句组成。应该有至少一个可执行代码行,可以只是一个NULL命令,表示不执行任何操作。
异常处理部分 :此部分以关键字EXCEPTION开头。这是一个可选部分,包含处理程序中错误的异常。
每个oracle语句以分号(;)结尾。使用BEGIN和END可以将oracle块嵌套在其他oracle块中。以下是Poracle块的基本结构。
Hello World示例:
END;行表示oracle块的结尾。要从oracle命令行运行代码,需要在代码的最后一行之后键入/字符。当上述代码在oracle提示符下执行时,它会产生以下结果:
oracle标识符:oracle标识符是常量,变量,异常,过程,游标和保留字。标识符包括一个字母,可选地后跟多个字母,数字,美元符号,下划线和数字符号,不得超过30个字符。
默认情况下,标识符不区分大小写。例如,可以使用integer或INTEGER来表示一个数值。 不能使用保留关键字作为标识符。
扩展资料
oracle注释程序:注释可以在编写的oracle代码中包含的说明性文字,并帮助其他人阅读源代码。所有编程语言都允许某种形式的注释。
oracle支持单行和多行注释。注释中的所有字符都被oracle编译器忽略。oracle单行注释以分隔符开头 --(双连字符),多行注释由/*和*/括起来。
当上述代码在oracle提示符下执行时,会产生以下结果:
oracle变量的名称由可选的字母,数字,美元($)符号,下划线和数字符号组成,不能超过30个字符。 默认情况下,变量名不区分大小写。不能将保留的oracle关键字用作变量名称。
oracle编程语言允许定义各种类型的变量,如:日期时间数据类型,记录,集合等,我们将在后面的章节中介绍。 在本章中仅学习基本的变量类型。