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 ...
随机推荐
- Python爬虫学习之获取网页源码
偶然的机会,在知乎上看到一个有关爬虫的话题<利用爬虫技术能做到哪些很酷很有趣很有用的事情?>,因为强烈的好奇心和觉得会写爬虫是一件高大上的事情,所以就对爬虫产生了兴趣. 关于网络爬虫的定义 ...
- Mac OS 安装 Git 环境
1. 在mac的终端上,输入git会提示安装git软件,确认安装.安装完成后打开终端,使用git --version或者which git命令查看安装版本,有就是安装成功了. 2. 创建一个全局用户名 ...
- 学习笔记TF009:对数几率回归
logistic函数,也称sigmoid函数,概率分布函数.给定特定输入,计算输出"success"的概率,对回题回答"Yes"的概率.接受单个输入.多维数据或 ...
- Javascript开发技巧(JS中的变量、运算符、分支结构、循环结构)
一.Js简介和入门 继续跟进JS开发的相关教程. <!-- [使用JS的三种方式] 1.HTML标签中内嵌JS(不提倡使用): 示例:<button onclick="javas ...
- iOS tableView移除某一行的分割线 让分割线宽度为整个cell的宽度
移除tableViewCell中某一行的分割线 有2种方法 1. 移除系统的分割线,自己定义每行的分割线 self.tableView.separatorStyle = UITableViewCell ...
- 树莓派控制GPIO(Python)
如果你的raspi没有安装python那么先 sudo apt-get update sudo apt-get install python-dev 例如想要控制35管脚的亮灭: 先建一个文本 ...
- javaWeb学习总结(9)- JSTL标签库之核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- python中的JSON(1)
很多程序都要求用户输入某种信息, 例如: 让用户存储游戏首选项或提供要可视化的数据,程序把用户的信息存储在列表和字典等数据结构中, 用户关闭程序时,我们几乎总要保存他们提供的信息: 如何保存-- ...
- 由Find All References引发的思考。,
今天在研究C#代码问题的时候遇到了一个Visual Studio的小问题.在Visual Studio 2013中,使用Find All References功能不能找到同一类型不同版本的所有引用,具 ...
- 全景智慧掌上城,飞入寻常百姓家——VR全景智慧城市
随着腾讯和阿里陆续将AR技术加入到新年抢红包大战之中,人们对于VR.AR未来的应用空间又多了一些想象.同传统的基于二维元素的抢红包不同,借助VR.AR的技术能够让用户获得一种更加真切的体验,这种体验相 ...