1. 课程介绍
  • 1. 约束(掌握)
  • 2. 序列(掌握)
  • 3. 索引(掌握)
  • 4. 视图(掌握)
  • 5. 存储过程(掌握)
  • 6. 自定义函数(掌握)
  • 7. 触发器(掌握)
  1. 数据库对象的命名规则

1、对象名称必须以字母开头

2、有效的字符包括数字、字母和三个特殊字符(# _ $)

3、不要使用oracle的保留字作为对象名称

4、同一用户下的对象不能同名,即使是不同的对象类型

5、1-30个字符之间

  1. ALTER TABLE  ddl语句

3.1.  增加字段,添加外键约束

ALTER TABLE table

ADD    (column datatype [DEFAULT expr]

[, column datatype]...);

3.2.  修改字段

ALTER TABLE table

MODIFY      (column datatype [DEFAULT expr]

[, column datatype]...);

3.3.  删除字段

ALTER TABLE table

DROP  column        (columns);

  1. 约束

4.1.  主键(唯一+非空),唯一,非空,外键,check(mysql不支持)

1、NOT NULL  非空

2、UNIQUE Key       唯一键

3、PRIMARY KEY    主键(非空且唯一)

4、FOREIGN KEY     外键

5、CHECK                 检查

4.2.  好处

保存数据之前(jdbc层发出请求,直接在数据库插入)会验证数据是否正确

只有保存成功,数据就正确

4.3.  坏处

影响插入\修改的效率

  1. 约束的名称

5.1.  创建表的时候添加列级约束

SYS_C005456 由oracle自动取名

5.2.  创建表的时候添加表级约束

5.3.  创建表的时候添加表级外键约束

5.4.  ALTER TABLE增加约束

5.5.  软件公司怎样使用约束

一般软件公司在开发阶段都添加约束,系统上线删除约束,从而提供性能

  1. 序列

6.1.  作用

处理主键的自动生成

6.2.  Mysql主键

自动自增AUTO_INCREMENT,自增的值存储到表的ddl语句

6.3.  创建序列

CREATE SEQUENCE [user.]sequence_name

[increment by n]

[start with n]

[maxvalue n|]

[minvalue n ];

[cache]

[NOCYCLE|CYCLE]

INCREMENT BY: 指定序列号之间的间隔,该值可为正的或负的整数,但不可为0。序列为升序。忽略该子句时,缺省值为1。

START WITH:指定生成的第一个序列号。在升序时,序列可从比最小值大的值开始,缺省值为序列的最小值。对于降序,序列可由比最大值小的值开始,缺省值为序列的最大值。

MAXVALUE:指定序列可生成的最大值。

MINVALUE:指定序列的最小值

          NOCYCLE:一直累加,不循环

CYCLE:累加到最大值循环

6.4.  获取主键的并发

默认序列里面缓存20个,根据情况进行适当修改

cache:默认值是20

序列里的缓冲是大量并发提取序列值时提升性能的一种手段



由于序列操作是原子操作,如果没有缓冲,序列的访问将只能由一个事务独占,独占期间阻塞其它事务的访问,且一定会涉及硬盘操作。这样如果有对一个序列的大量并发操作的话,系统性能将会下降。




缓冲是指事先成批的提取序列值,缓冲在内存中,供多个事务同时访问(每个事务占一个缓冲的序列值),且访问期间如果没有用尽缓冲是不用写硬盘的,可在大幅度提高并发访问序列的性能。但带来的问题是序列值可能不连续(但肯定保证唯一),如并发访问序列值后有些事务回滚等操作,都会带来缓冲序列值的不连续或丢失

6.5.  怎样使用序列

insert into
employees_test(id,fullname)

values (seq_test.nextval,'xxxxxx0000');

6.6.  建议

一般一个表对应一个序列

6.7.  查看用户定义的序列

select t.sequence_name,t.min_value,t.max_value,

t.increment_by  from user_sequences t

6.8.  修改序列

alter sequence
SEQ_TEST

cache 50;

6.9.  删除序列

DROP SEQUENCE [user.]sequence_name;

  1. 索引

7.1.  作用

方案(schema)中的一个数据库对象

在数据库中用来加速对表的查询

通过使用快速路径访问方法快速定位数据,减少了磁盘的I/O

与表独立存放,由 Oracle数据库自动维护

索引类似于一本书的目录

7.2.  自动创建的索引

如果表创建了主键,或者创建唯一约束,自动创建一个唯一索引

7.3.  哪些值可以创建索引?

1,外键一般要创建索引

2,经常使用的查询条件(放到where后面的)要创建索引。

如果使用like ‘%’操作,有些查询不会使用索引。

like 'a% 
'a_'会使用索引

like 
'%a'不会使用索引,可以通过把'a%'         name=abc      name=cba

select * from employees where reverse(name)
like reverse('%abc');

like '%a%' 不会使用索引,造成全表扫描,看数据库表的数量的大小,500万以下

dba:晚上加班,分库(读数据库,写数据库)分表(往年数据变成一张只读表,今年的数据也是一张表)

3,索引不是越多越好(建立一个索引,使insert速度慢3倍,在加一个在慢2倍)

4,不要在可选值很少的属性上面创建索引:性别等;

5、对于那些定义为text, image和bit数据类型的列不应该增加索引

6、当修改性能远远大于检索性能时,不应该创建索引(分库分表:把往年查询的数据放到一个只读的表空间)

7.4.  手动创建索引

在一列或者多列上创建索引.

CREATE INDEX index

ON
table (column[, column]...);

7.5.  删除索引

  1. 视图

视图也就是虚表,实际上视图就是一个命名的查询,用于改变基表数据的显示。

8.1.  作用

可以限制对数据的访问

可以使复杂的查询变的简单

提供了数据的独立性

提供了对相同数据的不同显示

可以提供查询性能,直接运行在数据库服务器

8.2.  创建视图

8.3.  行内视图

行内视图是在SQL语句中使用的一个带有别名的子查询.

在主查询FROM 子句中的子查询就是行内视图.

行内视图不是数据库的对象,所以不需要显式的创建.

  1. 表空间

就算有建表的权限,也不能建表,因为没有使用表空间的权限

一般来讲,普通用户都是使用USERS表空间,也可以自己创建

9.1.  默认有那些表空间

9.2.  逻辑概念

9.3.  物理概念

9.4.  表空间的作用

1.控制数据库占用的磁盘空间;

2、Dba可以将不同类型的数据对象部署到不同的位置,这样有利于提高i/0性能,并有得于备份和恢复管理;

9.5.  创建表空间

表空间包含段,段包含区,区包含块

Create tablespace ts1 datafile 'd:\xxx.xml'
size 20m uniform size 128k

Uniform表示区的大小为128K。

每个文件有一定的限制,不要超过500M/1G。

9.6.  建表的时候,指定放置在表空间

Create table test1(id number(4),name
varchar2(50)) tablespace ts1;

9.7.  授予it拥有ts1的表空间权限

System登录

ALTER USER "IT"

QUOTA UNLIMITED

ON "TS1"

9.8.  疯狂复制

9.9.  扩容表空间

9.9.1.  
增加新的数据文件    原文件已经500M/1G

Alter tablespace ts1 add datafile
'd:\data0102.dat' size 20m;

9.9.2.  
增加已有的数据文件

Alter database datafile 'd:\xxx.xml' resize
50m;

9.9.3.  
自动扩展

ALTER DATABASE

DATAFILE 'D:\TEST\DATA1.DBF' AUTOEXTEND

ON NEXT  512K MAXSIZE  1024M

9.10.        
如果原来存储的位置,空间不够

先移动XXX.XML移动到其他有空间盘

9.10.1.       
脱机

Alter tablespace ts1 offline;

9.10.2.       
剪切到其他有空间盘

Ctrl+x 
Ctrl+v

9.10.3.       
修改存储位置

ALTER DATABASE

RENAME FILE 'D:\XXX.XML' TO 'e:\XXX.XML'

9.10.4.       
联机

Alter tablespace ts1 online;

9.10.5.       
扩容

ALTER DATABASE

DATAFILE 'E:\XXX.XML' AUTOEXTEND

ON NEXT 
20M MAXSIZE  1024M;

  1. 存储过程

10.1.        
为什么需要存储过程-提高性能

转账业务:在同一个银行之间进行转账

2个账户,没有被冻结,是否有余额

A.2个账户是否存在   2条select语句

B.是否被冻结         就用上面

C.是否有余额         就用上面

D.转账               2条update语句

Jdbc:建立连接,实例化语句,发出sql,关闭资源  跑4次

把上面的所有业务逻辑,在数据库里面相当于封装到一个方法,存储过程

步骤A:

在存储过程发出2条sql,

把sql语句的结果加入一个数据库的游标对象CURSOR(类似于java.sql.ResultSet)里面

如果能够遍历游标对象,跳到步骤B

否:返回账户不存在

步骤B:

发出2个update请求,进行转账

Jdbc:建立连接,实例化语句,发出sql,关闭资源  跑1次

10.2.        
创建存储过程语法

10.3.        
创建一个没有返回值的存储过程

10.4.        
创建一个有返回值的存储过程

有返回值的存储在命令窗体不能执行

10.5.        
Java调用存储过程

  1. 自定义函数(必须要有返回值)

11.1.        
语法

11.2.        
自定义函数里面不能写dml语句

函数中不允许DML语句

形参必须为IN

11.3.        
Java调用函数

  1. 触发器

监控如果发出了insert语句或者update、delete语句,触发一个事情

12.1.        
分类

12.2.        
语句级触发器

一个dml语句,只触发一次

12.3.        
行级触发器

一个dml语句,可以触发多次

Update 更新,delete 删除 12行,触发12次

12.4.        
模式触发器

当前用户受限制:必须先删除模式触发器

system管理员不受限制

  1. 见多识广800条sql

13.1.        
子查询分类

如果子查询里面需要用到主查询的表进行关联查询,就叫相关子查询

13.1.1.       
相关子查询

子查询不能单独执行

Select * from table1 a

Where salary >(select avg(salary) from  table b where a.xxid=b.id)

13.1.2.       
无关子查询

子查询可以单独执行

Select * from table

Where salary >(select avg(salary)
from  table)

13.2.        
神奇函数

13.3.        
横向汇总和纵向汇总

  1. 课程总结

14.1.        
重点

  1. 约束
  2. 序列
  3. 索引
  4. 视图
  5. 存储过程
  6. 触发器
  7. 自定义函数

Oracle-序列-存储过程-视图-索引-触发器的更多相关文章

  1. Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器

    ---视图 ---视图的概念:视图就是提供一个查询的窗口,来操作数据库中的数据,不存储数据,数据在表中. ---一个由查询语句定义的虚拟表. ---查询语句创建表 create table emp a ...

  2. Oracle数据库游标,序列,存储过程,存储函数,触发器

    游标的概念:     游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理, ...

  3. oracle 序列、视图、索引

    序列 创建 在sequences里 作用 生成自动增长(或减少)的整数值 经常添加数据时使用,可控性好 写法:序列名.nextval  获取下一个序列值 序列名.currval  获取当前序列值,不常 ...

  4. MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  5. MySQL— 索引,视图,触发器,函数,存储过程,执行计划,慢日志,分页性能

    一.索引,分页性能,执行计划,慢日志 (1)索引的种类,创建语句,名词补充(最左前缀匹配,覆盖索引,索引合并,局部索引等): import sys # http://www.cnblogs.com/w ...

  6. MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称

    MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称   INFORMATION_SCHEMA.TABLES INFORMATION_SCHEMA. ...

  7. MySQL知识补充(表字段操作、视图、触发器、事物、存储过程、内置函数、流程控制、索引、慢查询)

    今日内容概要 表字段操作补充(掌握) 视图(了解) 触发器(了解) 事务(掌握) 存储过程(了解) 内置函数(了解) 流程控制(了解) 索引(熟悉) 内容详细 1.表字段操作补充 # 1.添加表字段 ...

  8. MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁

    浏览目录: 1.视图 2.触发器 3.存储过程 4.函数 5.事物 6.数据库锁 7.数据库备份 1.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视 ...

  9. Oracle_PL/SQL(6) 触发器(序列、视图)

    序列1.创建序列create sequence seq_alog start with 1 increment by 1 maxvalue 999999999999999999999999999 mi ...

随机推荐

  1. 禅道的bug提交

  2. Linux学习之iostat命令详解

    我们可以用iostat 命令来监视系统输入/输出.设备负载,这通过观察与它们的平均传送速率相关的物理磁盘的活动时间 来实现.iostat 命令生成的报告可以用来更改系统配置,从而更好地平衡物理磁盘和适 ...

  3. 记阿里云 RDS MySQL 的一个大坑

    花了一个下午的时间,终于把一个阿里云 RDS MySQL 的一个大坑填上了,解决方法令人匪夷所思!绝对会让各位看官感到大吃一惊,阿里云 RDS MySQL 居然有这样 xx 的大坑! 问题 最近应业务 ...

  4. Java基础学习之面向对象(4)

    目录 1.面向对象概述 1.1.类与对象的关系 1.2.类的具体描述 2.面向对象的三大特性 2.1.继承 2.2.多态 2.3.封装 1.面向对象概述 1.1.类与对象的关系 有对象吗,没有的话我给 ...

  5. 将Java项目打包成exe文件

    第一步:参照我之前的博客:利用IDEA把项目打包成jar包第二步:下载安装exe4j软件第三步:新建文件夹,把jre,exe文件的图标,本项目的jar包以及项目用到的jar包都放到同一目录下[很重要] ...

  6. flex:align-items和align-content的区别

    属性值 align-items的属性值有:baseline.center.flex-end.flex-start.stretch.inherit.initial.unset align-content ...

  7. react路由初探(2)

    对着官网的例子反正是没有搞出来,所以搜了一大堆,最终搞出来了,记录一下 import React from 'react'; // 首先我们需要导入一些组件... (这个是中文网示例,按这个做,报一大 ...

  8. 如何建一个SAM

    部分改编自OI WIKI 先从一个简单的问题入手: 给定一个串,构造一个图,使其能够表示它的所有子串. 显然一个子串就是一个后缀的前缀.所以一个很显然的方式就是把所有后缀扔进trie里. 比如当前串是 ...

  9. Acwing 734. 能量石

    贪心(微扰) + dp 这道题还是比较难的,前置知识: 贪心的微扰(邻项交换)证法,例题:国王游戏,耍杂技的牛 01背包 算法1:暴力\(O(T * n! * n)\) 可以\(dfs\)全排列枚举所 ...

  10. 转载-没有IE就没有伤害!浏览器兼容性问题解决方案汇总

    普及:浏览器的兼容性问题,往往是个别浏览器(没错,就是那个与众不同的浏览器)对于一些标准的定义不一致导致的.俗话说:没有IE就没有伤害. 贴士:内容都是自己总结的,不免会出现错误或者bug,欢迎更正和 ...