文档章节

oracle数据库的笔记

m243043962
 m243043962
发布于 2017/08/16 17:46
字数 2108
阅读 5
收藏 0

数据类型
int :整数型 
number(m,n)  : m :总长度,n小数点后面的位数 
number(m) :整数位 ,没有小数 
number :默认是最大值 。

字符串类型 
char (m) :m  :长度 ,字节  一个汉字两个字节 。
2000  
varchar2(m)
4000 

日期类型 
date :日 月  年 。


添加
insert into 表名 (列名,列名) values  (值,值) ;


删除
delete from 表名 where 条件 ; 


修改

update 表名 set 列名 = 值 where 条件 ; 

查询 
select * from 表名 ; 


SQL :数据结构查询语言 
1.DDL:数据定义语言 
以create  alter drop 开头的 
修改表 
alter table 表名  add 列名  数据类型 ; 
alter table 表名  drop column 列名  ;


2.DML :数据操作语言
以 insert  delete  update 开头的语句 。


3.DCL:数据控制语言 
grant revoke 
4.DQL :数据查询语言   select 

5.事务性控制命令 
commit  rollback 

编写规则:
1.表名  列名 关键字 不区分大小写
2.where后面条件的值需要区分大小写 。


运算符 
算数运算符 
比较运算符
逻辑运算符 
any :一些 
> any 大于最小的。
< any 小于最大的。 

> all :大于最大的。
< all :小于最小的。

between and 在什么  之间 。  数字,日期 。
in  在列表里面  。in('a','b','c') ;
like :模糊查询 
% :任意长度的任意字符串
_ :一个长度的任意字符串。
not  取反 

distinct 过滤重复数据 
distinct * 表示的是所有列都重复才进行过滤 。


as :别名  给列起别名  可以省略

单行函数 
upper :小写转大写 
lower :大写转小写。
ltrim :去掉字符串左右两边空格
rtrim
trim
concat :连接两个字符串 
abs :取绝对值 。
floor :向下取整
ceil :向上取整 
sysdate :数据库系统当前时间 
to_char :日期和字符串之间进行互相转换 。转换的时候需要指定格式 。
to_date 

聚合函数 
count :统计有效数据的数量 
count(*) :统计这个表的行数 
count(列名) :统计这一列的有效数据,不包含空值 。
max :求最大值 
min :求最小值
avg :求平均值,但是只能用在数字列。
sum :求和 只能用在数字列上 

group by  分组 。把内容相同的分为一组 。
当查询中出现了group by 分组的时候,select 显示额列,要么是group by 分组列,要么是聚合函数列。

对分组之后的数据进行二次过滤,需要使用having 

where 后面不能跟聚合函数 。

select deptno ,count(*) from emp group by deptno 

多表查询 
1.from后面跟上多个表名 ,用逗号隔开 。
2.需要多个表之间有相同意义的字段。

select * from emp , dept where emp.depnto = dept.d_id ; 
在emp表中有的,在dept表中也存在的才查询出来 。
两个表中都存在的才查询出来,称之为内连接 。

外连接 :需要以一张表基表 ,基表的数据会全部显示 ,并且显示与另外一张表匹配的内容 ,若存在不匹配的内容,用空格填充 。
1.左外连接
left join on  

2.右外连接
right join  on

左外连接写的sql ,也可以使用右外连接来改写 。

表名换一下,将left 换成right 就可以了 


在oracle中针对外连接有一种特有的写法 。使用(+) 
(+ )在哪个表后面表示哪个表是匹配表 。


3.全外连接 
其实就是现实两表匹配的内容,还有两表不匹配的内容 。
full  join 


表约束 :其实就是对表的一种限制性的行为,当不满足表的约束,那么对表的dml操作 (insert delete update) ,将不能成功 。

6类 
default 默认约束 
not null非空约束
unique  唯一约束 :不能重复,可以为空 
primary key  主键约束 :不能重复,不能为空 
check   检查约束 ,现在某一列在某个区间范围内 。
foreign key :外键约束 ,需要有两张表,因为外键需要依赖住表的主键存在 ,当给某一列设置了外键之后,就相当于限制了这一列的取值范围 ,只能从主表的主键列中取值 。

一个表上可以存在多个外键列 。

外键的作用是什么呢 ?
保证了数据的完整性 。


使用代码来添加约束 
alter table 表名 add  constraint 约束名 约束类型 (列名) ;
外键约束
references 主表(主键)


oracle中的伪列 

rownum   rowid
rownum :其实就是行号 , 如果要使用 rownum需要从1 开始 。

使用rownum的作用,主要用来分页 。
select * from 
(select rownum rn , emp.* from emp ) t
where t.rn > pageSize * (n-1) and t.rn <= pageSize * n

pageSize :表示的是每页显示的行数
n :表示的是页数 。


rowid :物理意义上的,绝对不会重复的。 
主要用来删除重复数据 。
1.使用distinct 关键字来删除 。
操作步骤 。  s7
1.先查询出不重复的数据 ,放到临时表中 。
select distinct(*) from s7

create table s8
as
select distinct * from s7 
2.删除原表的数据 。
delete from s7 ;
commit ; 

truncate table s7 ; 
3.将临时表的数据插入到原表中 。
insert into s7  select * from s8 ;  
4.删除临时表 。作为无痕操作 
drop table s8 ;

rowid 
1.首先按照重复的列来进行分组 。

select sid,max(rowid) from s7 group by sid ;


select * from s7 where rowid not in ('fdfsafs','fdsafds','fdasdfsa')


delete from s7 where rowid not in ('fdfsafs','fdsafds','fdasdfsa') ;


子查询的概念,
子查询:其实就是嵌套查询,在一个select里面在加上一个select 
为什么会出现子查询呢 ?
因为在很多情况下where后面条件值不是一个具体的值或者表达式,而是另外一个查询的查询结果 。在这种情况下我们就需要使用子查询了。

--删除重复数据 。
delete from s7 where rowid not in (select max(rowid) from s7 group by sid) ;


第三章 ,
序列(sequence)
序列:可以生成一串自动且连续增长的数字 ,目的是为了实现主键自动且唯一的增长 。


创建序列的语法 
create sequence 序列名 ;
start with 起始值 
maxvalue  最大值 
minvalue  最小值
increment by 步长 
cycle  ;

两种用法 
1.查看序列的下一个值 
select seq.nextval from dual; 
2.查看序列的当前值
select seq.currval from dual; 


索引(index)
索引:相当于目录,能够快速定位要访问数据所在的数据块,从而减少查询时间,提高查询效率。

语法
create index 索引名 on 表名 (列名)  ;

主键和唯一约束的列上是不需要创建索引,因为会自动创建。


缺点:
1.增加增删,改的时间 。
2.会占用物理空间(物理内存)
3.创建和维护索引需要时间。

哪些列上适合创建索引
1.在经常需要搜索的列上适合创建索引
2.在经常需要排序的列上
3.在经常需要分组的列上
4.在经常需要充当where条件的列上适合创建索引。

同义词 synonym :其实就是别名的意思 。
1.公共同义词
语法
create public synonym 同义词名  for 数据库对象名 ; 

为什么要创建公共同义词呢 ?
目的=就是为了让他人进行访问,可以不用授权。
一般情况下在创建完表之后,就创建一个和表同名的公共同义词。


公共同义词名 可以和 数据库对象名重复 。
私有同义词不可以重复。
 

2.私有同义词 

语法
create synonym 同义词名  for 数据库对象名 ; 

视图(view)
创建视图的语法 
create [or replace ] view 视图名 
as
select 语句 
[with read only] :只读视图 。
[with check option] :可以修改数据,但是修改之后的数据需要满足where条件  ;

视图的作用
1.简化sql语句 。
2.保护数据的安全性 。
3.执行某些必须使用视图的查询 。

--按照部门编号来进行升序排列
select * from emp  order by deptno ; 

--按照部门编号来进行升序排列,若部门编号相同,在每个部门内部按照薪资来降序排列
select * from emp  order by deptno , e_salary desc ; 

--按照多列排序的排序规则,首先按照第一列进行排序,若第一列相同,在按照第二列进行排序

select * from emp order by e_salary desc; 

空值默认是最大值。
对空值进行排序 ,使用 nulls first  和 nulls last 来排序 。

子查询的效率要高于表连接 。


 

© 著作权归作者所有

共有 人打赏支持
m243043962
粉丝 0
博文 70
码字总数 34357
作品 0
黄冈
程序员
怎样成长为一个真正的Oracle DBA (转载)

Oracle分两大块,一块是开发,一块是管理。 开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比...

y862318
2014/05/14
0
0
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

下午,一个同事从公司借的笔记本上面的Oracle数据库出现连接不上的问题,一直报: 非正常Oracle配置:SIDLISTLISTENER =(SID_LIST = ) 正常Oracle配置SIDLISTLISTENER =(SID_LIST = )...

fastjrun
2016/11/30
4
0
Oracle - 数据库的实例、表空间、用户、表之间关系

一直以来都没将Oracle数据库,实例,表空间,用户,表之间的关系搞清楚,虽然工作了有些时间,在工作中也用到Oracle开发,但却忙于项目没顾得上,今天抽空简单整理了下,主要是根据自己的理解...

Sheamus
2015/04/22
0
2
ORACLE启动的时候报ORA-00845的错误

一、事件背景: 新配置的ORACLE 11.2.0.3数据库在启动的时候报错:ORA-00845: MEMORY_TARGET not supported on this system,以下是根据metalink查找的问题原因及处理方法; 二、出现问题的平...

猎人笔记
2014/07/02
0
0
ORACLE学习笔记(二)​

DB Administration Tools Oracle Universal Installer(OUI) :OUI是用来安装、升级和删除Oracle软件。 Oracle Database Configuration Assistance(DBCA) :DBCA是一个图形界面的程序,可...

coolio
2014/10/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SingleNumber136 leetCode

Given a non-empty array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you im......

woshixin
23分钟前
0
0
String ,  StringBuffer ,  StringBuilder的区别

String , StringBuffer , StringBuilder的区别 String 首先,String 是用来表示一个字符串常量的,它是一个不可变对象,意味着,一旦我们创建了某个字符串之后,就不能再改变它的值了,我们可...

tsmyk0715
今天
2
0
区块链100讲:UTXO 和 Account 模型对比

在当前区块链世界中,主要有两种记录保存方式,UTXO 模式(Unspent Transaction Output) 和 Account 模式。Bitcoin 采用的是 UTXO 模型,Ethereum 采用的 Account 模型,同样 CITA 也采用了 ...

HiBlock
今天
1
0
Vue中路由管理器Vue Router使用介绍(三)

一、路由定义添加动态参数定义 1.路由定义项,使用:xx 方式 定义动态参数 { path:'/user/:id/:name', name:'user', component:()=>import('./views/User.vue') ...

tianma3798
今天
1
0
从ibdata文件恢复mysql数据

DROP TABLE 恢复【一】 Recover InnoDB dictionary Percona Data Recovery Tool 单表恢复

IT--小哥
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部