- 浏览: 540031 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (168)
- java基础 (22)
- 面向对象编程 (2)
- 集合 (4)
- I/O操作 (5)
- 多线程 (9)
- java高级特性 (8)
- 网络编程 (0)
- sql基础 (23)
- JDBC (1)
- 数据结构与算法 (20)
- 软件测试 (1)
- 程序员小知识 (2)
- WEB开发 (15)
- 其他 (11)
- Struts (3)
- Hibernate (8)
- Spring (4)
- 设计模式 (5)
- java基础快速总结 (1)
- 正则表达式 (3)
- UML (3)
- XML操作 (0)
- 编译原理 (1)
- tomcat (2)
- EJB (0)
- javascript (4)
- 个人系统设计 (1)
- Extjs (3)
- 面试题总结 (4)
- 技术大综合 (2)
- 最经需要搞好多的开源软件,集中下 (0)
- java重写hashcode的分析(转) (1)
最新评论
-
jerry.zhao:
ybzshizds 写道这种用工厂模式解决的办法其实还是有一个 ...
InitialContext和lookup -
小土豆内特:
static class Queue
java实现队列 -
leizisdu:
感谢楼主讲解、分享!
工厂模式 -
kchiu:
写了没什么用
EXT组件xtype简介 -
u010271301:
大哥 能描述的跟详细点么?
浅谈write(byte[] b)和write(byte[] b,int off,int len)的区别
数据表基本操作
数据库的数据逻辑上是存储在表空间中,物理上是存储在数据文件中。
创建数据表
CREATE TABLE TABLE1(ID NUMBER(3) NOT NULL,NAME VARCHAR2(20) NULL);
或
CREATE TABLE TABLE1 AS SELECT ID,NAME FROM TABLE2;
注意:如果查询涉及到Long数据类型,那么CREATE TABLE ...AS SELECT 不会工作。
修改数据表
增加列
ALTER TABLE TABLE1 ADD createDate DATE;
修改列
ALTER TABLE TABLE1 MODIFY NAME VARCHAR(30);
注意:大部分时候列的值为空才能修改。
删除数据列
ALTER TABLE TABLE1 DROP COLUMN NAME ;
更改表名
RENAME oldname TO newname;
删除表
DROP TABLE TABLE1;
清空表数据
TRUNCATE TABLE TABLE1;
注意区别
区别
1。delete from后面可以写条件,truncate不可以
2。delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少
3。delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页
4。当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。truncate始终锁定表和页,而不是锁定各行。
5。如果有identity产生的自增id列,delete from后仍然从上次的数开始增加,即种子不变,而truncate后,种子会恢复初始
6。truncate不会触发delete的触发器,因为truncate操作不记录各个行删除
约束
非空约束 NO TNULL(简单不用演示)
唯一 UNIQUE
column_name data_type constraint 约束名 unique//单列数据
constraint 约束名(多列) unique using index tablespace(table_name) storage(stored clause)
添加约束
alter table 表名 add constraint 约束名 unique(列名) using index tablespace 表空间名
主键 PRIMARY
列名后面直接加上主键约束
itemid varchar2(20) constraint pk_items primary key
如果主键约束保护多个列,必须作为一个表约束创建
constraint pk_items primary key(itemid,itemname) using index tablespace(table_name) storage(stored clause)
禁用或删除
alter table items drop primary key;
alter table items disable primary key
外键 FOREIGN KEY
alter table invency
add constraint fk_invency_items
foreign key(itemid) references items(itemid);
条件 CHECK
条件列约束不保护log数据类型和数据列和对象、嵌套表、varry、ref等
constraint chk_status check(status in('正常','出差','休假'));
约束的维护
禁用约束 alter table 表名 disable constraint 约束名
启用约束 alter table 表名 enable constraint 约束名
删除约束 alter table 表名 drop constraint 约束名
序列的创建
create sequence sequence1
increment by 1
start with 1
maxvalue 10000
minvalue 1
nocycle
cache 20或nocache
noorder //不指定排序
;
sequence1.currval
sequence1.nextval
drop sequence sequence1;
--------------------------------------------------------------------------------------------
索引
如果没有建立索引的话,那么查询该表的任何记录都会通过顺序地逐行扫描得到,这会导致大量的磁盘i/o,从而会大大降低数据库系统的效率,索引通常用于提高查询效率。当然过多的索引也会使更新、插入、删除操作花费更多的时间。
B-tree索引(如唯一索引、主键索引)也就是B-树索引。基本上这些索引存储的是所在的列值以及用来查找自身行的指向实际数据表的指针。
注意:如果索引是创建在多个列上的话,那么第一列非常重要。第一列会单独扫描。后面列不会。
函数索引(基于函数建立的)
反转键索引(不能对位图索引和索引组织表进行反转键索引)
位图索引(为相异值很少的列创建的),一般而言,只有当对表中值相宜度较小的多个不同的列都使用位图索引,这样位图索引才会有用。
位图连接索引
压缩索引
降序索引(可以显著优化order by x,y,z desc子句查询)
分区索引
其他:索引组织表、簇索引、域索引、隐藏索引、虚拟索引等
创建索引
创建不唯一索引
create index idx_itemname on item(name) tablespace 表空间名;
创建唯一索引
create unique index idx_itemid on item(id) tablespace 表空间名;
创建位图索引
create bitmap index idx_itemsdeleted on item(isdeleted) tablespace 表空间名;
创建反转键索引
create unique index reidx_delivey on delivey(did,date) tablespace 表空间名 reverse;
创建函数索引(既可以是普通的B-树索引,也可以是位图索引)
create index idx_sub on item(substr(itemid,1,4))tablespace 表空间名;
注意:
导入数据后再创建索引
不需要为很小的表创建索引
对于取值范围很小的字段(如性别)应当建立位图索引
限制表中的索引数目
为索引设置合适的pctfree值
存储索引的表空间最好单独设置
使用索引
全表扫描(Full table scan):就是顺序地访问表中的每条记录。oracle采用一次读入多个数据块的方式优化全表扫描。
索引扫描(index scan):可以采用基于rowid的方式访问以提高访问表的效率。rowid包含了表中记录的物理位置。oracle采用索引实现了数据和存放数据的物理位置rowid之间的联系。通常索引提供了快速访问rowid的方法,因此基于索引列的查询就可以得到性能上的提高。
索引唯一扫描(index unique scan)
索引范围扫描(index range scan)使用于2种情况:范围的索引、非唯一性的索引
注意:全表扫描需要读入的数据块数等于该表的实际数据块数
oracle评价使用索引的代价时有2个重要的数据
CF:每读入一个索引块要对应读入多少个数据块
FF:sql语句所选择的结果集占总的数据量的百分比
一般的估算公式是:FF*(CF+索引块个数)
索引不是越多越好
很多时候,单列索引不如复合索引
用于多表连接的字段,加上索引列会很有用
----------------------------------------------------------------------------------
Meger更新
meger into t1 using t on(条件)
when matched then ××××
when not matched then ××××
oracle常用函数和命令
1、set linesize 100; 设置长度
2、set pagesize 30; 设置每页显示数目
3、em a.sql 打开记事本
4、@ a 执行文件a中的代码,可指定文件的路径 @d:a.txt
5、conn 用户名/密码 根据用户名和密码连接数据库 如果连接超级管理员(sys) 则应加上as sysdba;
6、show user; 显示当前连接的用户
7、select * from tab; 得到当前用户下的所有表
8、desc temp; 查看表结构
9、/ 继续执行上一个查询语句
clear scr; 清屏
字符函数
10、select upper('coolszy') from dual; 将小写字母转换成大写,dual 为一虚表
11、select lower('KUKA') from dual; 将大写字母转换成小写
12、select initcap('kuka') from dual; 将首字母大写
13、select concat('Hello',' world') from dual; 连接字符串,但没有||好用select concat('Hello','world') from dual;
14、select substr('hello',1,3) from dual; 截取字符串
15、select length('hello') from dual; 求字符串长度
16、select replace('hello','l','x') from dual; 替换字符串
17、select substr('hello',-3,3) from dual; 截取后三位
补充:trim、lpad、rpad、instr
数值函数
18、select round(789.536) from dual; 四舍五入,舍去小数
19、select round(789.536,2) from dual; 保留两位小数
20、select round(789.536,-1) from dual; 对整数进行四舍五入
21、select trunc(789.536) from dual; 舍去小数,但不进位
22、select trunc(789.536,2) from dual;
23、select trunc(789.536,-2) from dual;
24、select mod(10,3) from dual; 返回10%3的结果
补充:abs、ceil、floor、power、rand、sqrt、
日期函数
25、select sysdate from dual; 返回当前日期
26、select months_between(sysdate,'16-6月 -08') from dual; 返回之间的月数
27、select add_months(sysdate,4) from dual; 在日期上加上月数
28、select next_day(sysdate,'星期一') from dual; 求下一个星期一
29、select last_day(sysdate) from dual; 求本月的最后一天
补充、trunc、round
其中sysdate的格式
CC:世纪
WW:为一年中的周
W:为一个月中的周
D:为星期几
DDD:为一年中的第几天
YEAR:为年
MONTH:为月
DAY:为日
转换函数
30、select to_char(sysdate,'yyyy') year,to_char(sysdate,'mm'),to_char(sysdate,'dd') from dual;
31、select to_char(sysdate,'yyyy-mm-dd') from dual;
32、select to_char(sysdate,'fmyyyy-mm-dd') from dual; 取消月 日 前面的0
33、select to_char('20394','99,999') from dual; 分割钱 9表示格式
34、select to_char('2034','L99,999') from dual; 加上钱币符号
35、select to_number('123')*to_number('2') from dual;
36、select to_date('1988-07-04','yyyy-mm-dd') from dual;
其中日期格式
YYYY:完整的年份号码
YEAR:当前的年份拼出来
RR:年份中阿拉伯数字的最后2位
MM:2位数的月份
MONTH:当前的月份拼出来
MON:月份的前3个字母
DY:用3个字母来表示当前的星期数
DAY:当前星期数的全拼
DD:数字的月份日期值
HH24:二十四进制的小时数
MM:分钟数
SS:秒数
数字的显示格式
9 :代表一个数字
L:强制显示一个当地的货币符号
0:强迫0显示
.:显示一个小数点
$:显示美元符号
,:显示一个千位分隔符号
to_number函数
to_date函数
decode函数
decode(exp,sl,r1,s2,r2....sn,rn)可以理解成增强型的if else
greatest(n1,n2,n3,...n)返回序列中最大的值
least(n1,n2,n3,...n)返回序列中最小的值
nullif(c1,c2)如果两个指定的表达式相等,则返回空值。
nvl(c1,c2)如果c1为NULL,则NVL函数返回c2的值,否则返回c1的值。
注意事项:c1和c2必须为同一数据类型,除非显示的使用TO_CHAR函数。
nvl2(c1,c2,c3)如果参数表达式c1值为NULL,则NVL2()函数返回参数表达式c3的值;如果参数表达式c1值不为NULL,则NVL2()函数返回参数表达式c2的值。
通用函数
37、select nvl(null,0) from dual; 如果为null,则用0代替
38、select decode(1,1,'内容是1',2,'内容是2',3,'内容是3') from dual; 类似于 switch...case...
事务处理
39、commit; 提交事务
40、rollback; 回滚事务
41、select rownum from table; 在没一列前面显示行号
42、drop table 表名 cascade constraint
on delete casecade 当父表中的内容被删除后,子表中的内容也被删除
43、desc表名 显示表的结构
44、create user [username] identified by [password] 创建新的用户
45、grant 权限1、权限2...to 用户 给创建用户权限
ex:grant create session to [username] 此时只能连接到数据库
grant connect,resource to [username] 此时权限能满足要求
46、alter user [username] identified by [password] 修改用户密码
47、alter user [username] password expired 下次登录时提示修改密码
48、alter user [username] account lock 锁住用户
49、alter user [username] account unlock 解锁锁用户
50、grant select,delete on scott.emp to [username] 把scott下emp表的两个权限给用户
51、revoke select ,delete on scott.emo from [username] 回收权限
定量谓词
some、any、all
in 不如 exists 不如 连接查询
概念
子查询(标量子查询、比较子查询、相关子查询、嵌套子查询)
集合操作(union、union all、intersect、minus)
注意
对于blob、clob、bfile、varry或嵌套表类型的列,不能使用集合操作符
对于long类型的列,不能使用集合操作符union、intersect、minus
多表连接
基本连接(多个表之间用逗号隔开)
交叉连接(cross join)实际就是一个 inner join on true
自连接(对同一个表进行多次的引用)
自然连接 natural join
条件连接(有on条件)主要有内连接、外连接(左外、右外)、全外连接
层次化查询
select [level],exp......
from table_name
[where 条件]
[start with 开始条件]
[connect by prior 连接的条件]
发表评论
-
mysql基础知识
2015-06-27 11:47 4241.BIT[M] 位字段类型,M表示每个值的位数,范围从1 ... -
decode及nvl等函数的区别
2010-10-26 21:31 1995NULL指的是空值,或者非法值。NVL (expr1, exp ... -
三种ORACLE锁机制细化解析
2010-09-19 08:21 1884ORACLE锁机制主要是为了 ... -
常用的学生、课程、成绩、教师表的查询
2010-09-10 08:42 3586Student(S#,Sname,Sage,Ssex) 学 ... -
Oracle基础三
2010-09-04 10:49 1667视图的优点 视点集中、简化操作、定制数据、合并分割数据、逻辑 ... -
oracle日期操作方法
2010-09-01 07:54 1112在oracle中有很多关于日期的函数,如: 1、add_ ... -
IO的几个概念
2010-08-24 13:00 2471在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这 ... -
oracle基础一
2010-08-20 17:38 1346主码、外码 关系型数 ... -
数据库的查询优化方法分析
2010-08-18 17:26 36971. 尽量不要使用 or,使 ... -
sql经典语句
2010-08-18 10:31 21591.按姓氏笔画排序:Select * From TableNa ... -
sql中的注意点
2010-06-07 14:00 9921.注意not and or 优先级,先not ,再 and ... -
左连接查询的思考
2010-06-07 13:58 1183左连接查询 select u.Group_Id,u. ... -
oracle总结
2010-05-28 13:40 1513一.Oracle数据库中常用的数据类型 varchar2(长 ... -
ORACLE和SQL语法区别归纳
2010-05-28 13:36 1602SQL, ORACLE, 语法, 归纳, S ... -
isnull函数和 字段名 is null的区别
2010-05-27 16:21 2017select case when sc_amount is n ... -
sql语句常见总结
2010-05-11 11:33 1037主要是一些常用的,但是容易出错的 1.数据表别名的嵌套查询 ... -
union和unionall的区别
2010-05-07 10:11 1669sql union用法和sql union all用法,sql ... -
测试子查询
2010-04-21 16:42 13create table test( id varchar(1 ... -
呵呵,建标语句老是记不住,记下啊
2010-04-21 16:29 999好记性不如烂键盘 建表 create table test ... -
项目实战之sql的order by用法
2010-04-21 15:02 2114表名:projectinfo 字段名 project_id ...
相关推荐
oracle基础教程 课程说明 1 课程介绍 1 课程目标 1 相关资料 1 第1章 ORACLE数据库概述 2 1.1 产品概述 2 1.1.1 产品简介 2 1.1.2 基本概念 3 1.2 ORACLE系统结构 4 1.2.2 ORACLE物理结构 4 1.2.3 系统全局区 6 ...
#### 二、Oracle Database 11g 特性 1. **自动诊断与修复**:Oracle Database 11g 引入了自动诊断资源管理器(ADDM),这是一种强大的工具,能够自动检测并报告数据库运行时的问题。此外,它还支持自我修复特性,...
2. 选择安装位置和 Oracle_HOME 目录。 3. 配置 Oracle 网络监听器和数据库实例。 4. 创建数据库和 sys、system 用户。 5. 配置数据库参数和安全设置。 Oracle 数据库概念 Oracle 数据库是一种关系型数据库管理...
对于初学者来说,掌握Oracle基础知识是进入数据库领域的第一步。本文将深入浅出地介绍Oracle数据库的一些核心概念和基本操作,帮助你快速入门。 一、Oracle数据库系统概述 Oracle数据库是由美国Oracle公司开发的,...
一、Oracle基础SQL语句 SQL(Structured Query Language)是用于管理和操作数据库的语言。在Oracle中,主要的SQL语句包括: 1. SELECT语句:用于从数据库中检索数据,是最常用的SQL命令。你可以通过指定列名、表名...
以下是对Oracle基础知识的详细解析: **1. Oracle数据库概述** Oracle数据库是一个关系型数据库管理系统(RDBMS),它以数据表的形式存储和管理数据,每个表由列定义,数据以行的形式存储。Oracle 8i及以上版本还...
通过本Oracle基础教程PPT,你将逐步了解并掌握这些概念,为你的Oracle学习之路打下坚实基础。随着对Oracle的理解加深,你还可以进一步探索高级主题,如数据仓库、分布式数据库、RAC集群等。学习Oracle不仅是技术的...
"第2章 Oracle的体系结构"讲解了Oracle数据库的内部工作原理,包括数据库实例、内存结构、后台进程、数据文件、控制文件和日志文件等。理解这些组件及其相互作用对于日常的数据库管理和问题排查至关重要。 "第5章 ...
本资料“oracle基础知识回顾与练习.zip”是针对Oracle数据库的基础知识进行整理,采用纯SQL语句的形式,适合初学者及需要巩固基础的用户进行学习和实践。 1. SQL基础 SQL(Structured Query Language)是用于管理...
这篇“Oracle基础培训文档”旨在为初学者提供一个全面了解Oracle数据库的平台,帮助大家掌握其基本概念、操作和管理技巧。 首先,我们从基础开始,Oracle数据库的核心是SQL(结构化查询语言),它是用于管理和处理...
"Oracle基础教程.pdf" 提供了丰富的学习资源,共分为21章,涵盖了Oracle数据库的核心概念和技术。 第1章:Oracle简介 本章将介绍Oracle数据库的历史、特点和应用领域,以及它在现代企业级数据管理中的重要地位。你...
本文将基于"Oracle基础资料"这一主题,结合提供的压缩包文件"Oracle8i_9i数据库基础.doc",深入探讨Oracle数据库的基础知识,包括其核心概念、数据类型、SQL语句、表的创建以及备份恢复策略。 首先,Oracle数据库的...
本文将深入探讨Oracle基础知识,包括其架构、安装、数据类型、SQL语句、表空间管理以及备份与恢复策略。 一、Oracle数据库架构 Oracle数据库采用客户/服务器(Client/Server)模式,由多个组件构成。主要包括数据库...
以下将详细讲解Oracle基础知识,包括数据库管理、表的创建与维护、SQL查询技巧、权限管理以及PL/SQL编程等方面。 1. **Oracle数据库优势** Oracle数据库因其高性能、高可用性和安全性而受到青睐。它支持大规模并发...
二、Oracle数据库体系结构 Oracle数据库的体系结构主要分为以下几部分: 1. 实例(Instance):实例是Oracle运行时的内存结构,包括数据块缓存(Buffer Cache)、重做日志缓冲区(Redo Log Buffer)、共享池...
以上是Oracle基础训练的主要内容,通过深入学习和实践,你将能熟练掌握Oracle数据库的基础操作和高级特性。"Oracle基礎教程(一).ppt"至"Oracle基礎教程(三).ppt"中的材料将帮助你逐步掌握这些知识,为你的数据库管理...
oracle数组,常用函数,常用日期,数字,等等。
以上只是Oracle数据库初学者需要掌握的一些基础知识点,通过深入学习PPT和实例,你可以逐步提升自己的Oracle技术水平,为后续的进阶学习打下坚实基础。在实际操作中,不断实践和探索,将理论知识与实践经验相结合,...
在Oracle基础教程中结合VB示例,可以帮助开发者更好地理解如何使用VB与Oracle数据库进行交互。 本教程主要涵盖以下几个方面: 1. **Oracle数据库基础**:首先,你需要了解Oracle数据库的基本概念,如数据类型、表...