Oracle数据库中的重要对象
数据库中的重要对象:表、视图、序列、函数、存储过程、索引、同义词
1、表:
用PL/SQL Developer 软件打开 Scott的DEPT表
查看SQL,可以看见DEPT表创建的脚本
-- Create table
create table DEPT
(
deptno NUMBER(2) not null,
dname VARCHAR2(14),
loc VARCHAR2(13)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
--主键约束
alter table DEPT
add constraint PK_DEPT primary key (DEPTNO)
using index
tablespace USERS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
-- Grant/Revoke object privileges
grant select on DEPT to HR;
2、视图
用PL/SQL Developer 软件打开 Scott的Views对象
选中要查看的视图,右键查看
就可以看到相应的视图语句
create or replace view avg_sal as
select b.dname as 部门,count(*) as 人数,round(avg(a.sal),2) as 平均工资 from emp a
join dept b on a.deptno =b.deptno
group by b.dname;
3、序列
用PL/SQL Developer 软件打开 Scott的SEQUENCE对象
选中要查看的视图,右键查看
create sequence computers_cmpno_seq
start with 1001
increment by 1
nomaxvalue
nocycle
nocache;
查看当前序列的值:
select computers_cmpno_seq.currval from dual;
下一个值:
select computers_cmpno_seq.nextval from dual;
调用序列的时候一般用.nextval;
insert into computers (COMPNO,COMPMODEL,buytime,price) values(computers_cmpno_seq.nextval,'Apple',sysdate,8888);
查看所拥有的序列
select * from USER_SEQUENCES;
4、函数
创建函数:(根据输入的员工号取得其对应的工资)
create or replace function get_empsal (emp_no number)
return number
is emp_sal number(7,2);
begin
select sal into emp_sal from emp
where empno=emp_no;
return (emp_sal);
end;
创建以后,可以用PL/SQL Developer 软件打开 Scott的Function对象
选中要查看的视图,右键查看以及测试
测试的时候:
begin
-- Call the function
:result := get_empsal(emp_no => :emp_no);
end;
输入值即可得到结果
也可以直接在数据库用语句测试:
select get_empsal(7566) from dual;
5、存储过程
create table COMPUTERS
(
compno NUMBER(4) not null,
compmodel VARCHAR2(64),
buytime DATE,
price NUMBER(7,2)
)
insert into Computers (COMPNO,compmodel,buytime,price) values (compNo_seq.nextval,'Think T60',sysdate,6666);
insert into Computers (COMPNO,compmodel,buytime,price) values (compNo_seq.nextval,'Accer 4750',sysdate,6666);
insert into Computers (COMPNO,compmodel,buytime,price) values (compNo_seq.nextval,'Think T80',sysdate,8888);
insert into Computers (COMPNO,compmodel,buytime,price) values (compNo_seq.nextval,'Accer 4750',sysdate,6666);
创建存储过程:
create or replace procedure DelComputer(cmp_no in number)
is
begin
delete from computers where computers.cmpno=cmp_no;
commit;
end;
创建以后,可以用PL/SQL Developer 软件打开 Scott的Procedure对象
选中要查看的视图,右键查看以及测试
测试的时候:
begin
-- Call the procedure
delcomputers(cmp_no => :cmp_no);
end;
也可以直接在数据库用语句测试:
execute DELCOMPUTERS(1002);
6、索引
对数据库表中的一列或多列的值进行排序的一种结构
创建一个测试的表:
create table TEST_INDEX
(
id NUMBER,
name VARCHAR2(200)
)
创建一个存储过程插入1千万条数据
create or replace procedure insert_data
is
temp varchar2(20) :='Test data';
begin
for i in 1..10000000 loop
insert into test_index(id,name) values (i,temp);
end loop;
commit;
end;
查询数据条数
select count(*) from test_index;
随机查询一条数据
select * from test_index where id='9943432';
在没有建索引的时候,查询一条数据耗时很久。
创建索引:
create index id_text_index on test_index(id);
再查询
select * from test_index where id='9943432';
查出结果时间大幅减少
删除索引、清空表数据、删除表
drop index id_text_index;
truncate table test_index;
drop table test_index;
7、同义词
现有对象的一个别名,分为:私有同义词和公有同义词
查看同义词的权限:
select * from session_privs where privilege like '%SYNONYM%';
没有该权限 则通过sys账号授权
grant create any synonym to scott;
创建同义词:
create synonym sg for salgrade;
sg即为salgrade的同义词
select * from sg;
创建公共同义词
首先需要用sys授权public synonym的权限
grant create public synonym to scott;
创建scott的emp表的公共同义词为emp
create public synonym emp for scott.emp;
其他能访问到scott的emp表的用户即可以直接访问emp
sys账号
select * from scott.emp;
select * from emp;查询结果一样。
删除同义词:
drop synonym sg;
drop public synonym emp;
Oracle数据库中的重要对象的更多相关文章
- Oracle数据库中的大对象(LOB)数据类型介绍
一.LOB数据类型的介绍 大对象(LOB)数据类型允许我们保存和操作非结构化和半结构化数据,如文档.图形图像.视频片段.声音文件和XML文件等.DMBS_LOB 包被设计用于操作 LOB 数据类型.从 ...
- Oracle数据库中调用Java类开发存储过程、函数的方法
Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日 浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...
- oracle 数据库中(创建、解锁、授权、删除)用户
上文我们已经建立了名为orcl66的数据库. 想要在数据库中创建.修改用户需要我们以管理员权限登录到数据库中. 首先我们通过sqlplus命令登录连接数据库. 输入sqlplus命令--用户名: sy ...
- Oracle数据库中字段定义为Char类型,Hibernate用该字段进行动态绑定参数查询,获取不到结果的问题
一.问题背景 产生环境:oracle数据库,hibernate操作 定义了一个表 create table STORE_INFORMATION ( id CHAR(32) not null, name ...
- ORACLE数据库中执行计划出现INTERNAL_FUNCTION一定是隐式转换吗?
ORACLE数据库中,我们会使用一些SQL语句找出存在隐式转换的问题SQL,其中网上流传的一个SQL语句如下,查询V$SQL_PLAN的字段FILTER_PREDICATES中是否存在INTERNAL ...
- 将Oracle数据库中的数据写入Excel
将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...
- --关于null在oracle数据库中是否参与计算,进行验证,
--关于null在oracle数据库中是否参与计算,进行验证,with td as (select null id,1 name from dual ),td1 as ( select null id ...
- 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor
批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11 之前写过一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便 SQLPRO ...
- Oracle数据库中SYS、SYSTEM、DBSNMP、SYSMAN四用户的区别
[转] SYS.SYSTEM.DBSNMP. Oracle 数据库中 SYS.SYSTEM.DBSNMP.SYSMAN 四用户的区别 用户: SYS 用户: SYS,默认密码为 CHANGE_ON ...
随机推荐
- Struts2 设置global timer
设置全局的timer需要在web.xml中添加servlet, 并设置load-on-startup 为 1, 然后在servlet的init()中开启timer, 具体代码如下: 1. web.xm ...
- 《Android进阶》之第六篇 Fragment 的使用2
最近通过学习,对fragment的使用有了新的认识. 一开始接触android的时候,很是受不了这个fragment,总感觉它把一个简单的事情搞复杂啦,所以每次新建工程的时候总是固执的选择empty ...
- MyBatis-3.2.2
note SqlSessionFactory 它是一个线程安全的 SqlSession 线程非安全,不能做类的公用变量 当数据库字段和实体对象名称不一至时,通过sql的字段命名别名,别名跟实体对象属性 ...
- C语言之变量和数据类型
常量:程序在运行过程中无法对值进行更改. 变量:是在计算机内存空间一种表示,声明变量将会向计算机内存申请存储空间,用于保存数据,计算机的CPU会从内存中加载数据. 声明变量: 数据类型 变量名[=值 ...
- Swoole笔记(三)
WebSocket 使用Swoole可以很简单的搭建异步非阻塞多进程的WebSocket服务器. WebSocket服务器 <?php $server = new swoole_websocke ...
- Open vSwitch中的datapath flow匹配过程
看OVS2.7的datapath表项匹配是一件很蛋疼的事情 数据结构看不懂 匹配算法经过了多次演进,已经有点复杂了,看代码完全看不懂,我能怎么办,我也很绝望啊! 2.1之前精确匹配时代,匹配过程是 ...
- 面向对象(java菜鸟的课堂笔记)
类:相同的东西放在一起 分为属性和动作: 把一组或多组事物相同的特性的描述==>类 属性和动作被称为成员: //声明类的属性信息 public class **{ String name: ...
- 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)
前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...
- 【锋利的jQuery】表单验证插件踩坑
和前几篇博文提到的一样,由于版本原因,[锋利的jQuery]表单验证插件部分又出现照着敲不出效果的情况. 书中的使用方法: 1. 引入jquery源文件, 2. 引入表单验证插件js文件, 3. 在f ...
- debian将默认中文改成英文
$ sudo export LANG=en_US.UTF-8 $ sudo dpkg-reconfigure locales