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 ...
随机推荐
- carryLess开发日记_2017-05-18
1.接上一篇的form表单的ajax问题,上一篇中的form表单的ajax提交不能上传文件,所以采用了formData的方式上传 1)前段代码如下: <form action="&qu ...
- cin 对象取值过程详解
突然又空,鉴于对cin对象的去值机制还不是很了解,就探究一番,并且记下来,方便以后复习. #include <iostream> int main(void) { using namesp ...
- iOS tableView移除某一行的分割线 让分割线宽度为整个cell的宽度
移除tableViewCell中某一行的分割线 有2种方法 1. 移除系统的分割线,自己定义每行的分割线 self.tableView.separatorStyle = UITableViewCell ...
- 前端设计技巧——用 Promise 处理交互和异步
本文仅表达前端的一些设计技巧,如果您在查阅js技术,请忽略此文! 前端开发经常会遇到这样的场景: 当满足一定条件时,需要弹出一个模态框,以便接收用户的输入.然后根据不同的输入,进行不用的操作. (ps ...
- poi jsp xls
poi jsp xls <%@ page language="java" pageEncoding="UTF-8"import="java.ut ...
- 关于css中的position定位
希望这波position可以有帮助^_^! css中的position属性主要分为:static.relative.absolute.fixed.center.page.sticky(红色是css3中 ...
- 一天搞定CSS:定位position--17
1.定位取值概览 2.相对定位relative <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...
- 网络编程应用:基于UDP协议【实现聊天程序】--练习
要求: 使用UDP协议实现一个聊天程序 代码: 发送端: package UDP聊天程序; import java.io.IOException; import java.net.DatagramPa ...
- cpp(第七章)
1.c++提供了3种表示c—风格字符串方法:字符数组,字符串常量,字符串指针.其中字符数组并不一定是字符串,以空值字符'\0'来结束的字符数组时字符串. 2.函数参数为数组时,虽然减少了时间和内存的使 ...
- Nginx实用教程(二):配置文件入门
Nginx配置文件结构 nginx配置文件由指令(directive)组成,指令分为两种形式,简单指令和区块指令. 一条简单指令由指令名.参数和结尾的分号(;)组成,例如: listen backlo ...