oracle常用语法详解(2)

一.dml,ddl,dcl三者的区别

dml包括select,dpdate,insert,delect,就像它们的名字一样,这4条命令是对数据库数据进行操作

ddl主要命令drop,alter,create等,DDL主要是用来定义或改变表的结构

dcl数据库控制功能,用来设置或更改数据库用户或角色权限的语句

二。drop,delect,truncate三者的区别

drop属于DDL语句 立马执行,不仅删除表的数据而且表的结构也会删除

delect属于dml 语句 需要先把删除的数据放到回滚段中,可以回滚,删除的时候可以按照条件删除,会触发触发器

truncate属于ddl语句 会立马执行,只删除数据,不会删除表建构,删除数据时候不会放到回滚段中,会立马删除,不会触发触发器

注意:上面提到了 drop和truncate删除后无法回滚,那么如何找回这些数据呢?

用drop删除以后:show recyclebin;(在回收站中找回内容)

flash back table emp to before drop;(闪回)

如果回收站中有两个相同的表,闪回的时候是闪回的最后一个,遵循后进先出额度原则

误删除的数据也可以恢复:

inser into emp select * from emp as of timestamp to_time stamp('2016-07-31 16:54:00','YYYY-MM-DD HH24:MI:SS');

(21)修改表结构

<1>增加新的一列:add

alter table emp add(kills number)

<2>修改列

alter table emp modify(name varchar2(300))

<3>删除列 drop

alter table emp drop column kills

当然执行删除列时需要权限

(22)《1》索引:一种用于提升查询效率的数据库对象,通过快速定位数据方法,减少磁盘I/O操作,索引信息与表独立存放

  《2》索引的分类:1.聚集索引:物理位置上真正排序了 索引顺序和物理顺序一致

     2.非聚集性索引:物理位置上并没有排序

《3》创建索引的两种方式:1.自动创建——在定义主键或唯一键约束时 系统自动在相应的字段上创建唯一性索引

   2.手动创建=用户可以在其它列上创建非唯一的索引,以加速查询

《4》索引的优缺点

       优点:1.大大加快了数据的检索速度

        2.创建唯一性索引,保证数据库中每一行数据的唯一性

       3.加速表与表之间的连接

       4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

 缺点 :1.索引需要占物理空间

   2.当对表中的数据进行增删该查时候,索引也需要动态维护,降低了数据的维护速度

创建索引的语法:

create index 索引名 on 表名(字段)

索引名一般以index_开头

  oracle中的索引

1.B树索引

2.降序索引

3.函数索引

create index index_emp_ename on emp(lower(ename))

sekect* from emp where lower(ename)='smith'

使用 set autotrace on;把执行计划打开

4.位图索引

在查询低基数字段上使用位图索引可以提高查询性能

 删除索引语法: drop index 索引名

《6》创建索引的原则

1. 在where group by  order by 子句中出现最频繁的列上

2.在连接条件上加索引

3.在5M一下的表中,查询返回的结果在5%左右数据时  使用索引

(23)序列: oracle 产出的不间断的一个唯一数字用作主键

《1》创建主键

create sequence seq-article minvalue 0 start with 0 increment by1;

《2》插入数据

insert into article values(seq-article.nextval,'内容1‘,'内容2');

(24)约束

《1》主键约束

primary key : 不能重复,不能为空,字段约束

eg: id  number primary key;

<2> 非空约束  not null

eg: name varchar2(30) not null;

<3> 唯一约束

unique

name varchar2(30) unique;  通过关键字unique 给name加上唯一约束,值不能重复,增加name时,name就不能重复了

<4>检查性约束 check

age number check (age between 0 and 150);

<5>默认约束

garde number(1) default;

<6> 外键约束

pid number references person(pid) on delete cascade;

--建立约束:book_pid_fk,与person中的Pid为主-外键关系

--constraint book_pid_fk foreign key(pid) references person(pid);

<7>级联删除

create sequence seq-article minvalue 0 start with 0 increment by 1 on delete cascade;

(25)伪列 rownum

每一张表都有一列字段名叫rownum,数据类型number 每一个字段用来表示一列

select* from emp where rownun<=5;

口诀:小于直接查,大于加行号

select * from (select e.*,rownum r from emp e) where r>=6 and r<=10;

面试题:各种类型的分页语句

1.oracle  使用rownum

select* from emp where rownum<=5

2.mysql

 select * from limit 0,5

3.sql server

select top 5* from emp;

(26) 三范式

《1》定义:规则

《2》数据库模型

  1.层次型(树形结构)

 2.网状

3. 关系型数据库

关系型数据库ER图

entity 实体

relationship 关系

实体用矩形表示,实体属性使用椭圆表示,实体之间关系用菱形表示

4面向对象数据库

第一范式:

1.要有主键 2.列不可分:每个主键都是原子属性

第二范式

如果表中有组合组键的时候和,非主键字段不能够依赖于部分主键

第三范式

不能有传递依赖

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值