对象时性质相同的数据元素的集合,如超市里的商品一般由食品、家用电器、家具等对象组成
一、表
1、表示用来存储数据的最基本单位
2、表的创建sql语句
-- 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 64
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 --该DEPT表存储在USERS表空间中
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
二、视图
1、视图是用户看到的数据,不是真正存在于数据库表中的数据,这些数据来源于表,是经过数据抽取、转化变成的
2、查看用户下有多少个视图
select * from user_views;
3、创建求平均工资的视图
create view avgsal as
select d.dname as "部门",
round(avg(e.sal), 2) as "平均工资",
count(*) as "员工人数"
from emp e, dept d
where e.deptno = d.deptno
group by d.dname;
注:create view为创建视图关键字,后跟视图名称,as为“当做”意思,后面跟SQL查询语句,即avgsal视图由其下面的查询SQL语句组成
4、视图的查询
select * from avgsal;
三、序列
1、利用它可以生产唯一的整数,一个序列的值是由Oracle数据库的特殊程序自动生成的,序列可以定义自动递增或递减。
2、序列创建
create table book(
bookID number(12) constraint pk_book primary key,
bookName varchar2(32) not null,
price number(5,2),
printTime date);
create sequence bookID --创建序列
Start with 1
Increment by 1
Maxvalue 99999999
nocache
nocycle;
3、插入数据
insert into book(bookid,bookname)
values(bookid.nextval,'三毛流浪记');
4、通过虚表查看bookid序列的当前值和下一个值
当前值:select bookid.currval from dual;
下一个值: select bookid.nextval from dual;
四、函数
1、函数分为两种,一种是Oracle数据库自身的函数,另一种是用户自己写的函数
2、创建一个通过员工的ID号获取其薪水的函数
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;
注:
①create or replace function:这是创建新的或者替换已存在的函数,函数名get_empsal,输入参数emp_no,为number类型
② return number:该函数定义一个返回number类型的值
③is emp_sal number(7,2):定义参数emp_sal,类型为number(7,2)
④begin:为函数的程序段开始
⑤select...return...:函数程序段,select sal把emp表的sal薪水查询出来,把查询出来的sal赋予自定义参数emp_sal,输入的参数与emp表的员工号相等,则返回该员工的薪水
⑥end:结束函数的SQL程序段,与begin相对应
3、通过函数获取员工薪水
select get_empsal(7566) from dual;
五、存储过程
1、存储过程是一组为了完成特定功能而建立的SQL语句集,经编译后存储在数据库中,用户通过制定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
2、创建一个根据员工号删除员工信息的存储过程
create or replace procedure Delempno(empid in number) as
begin
delete from emp where emp.empno=empid;
commit;
end Delempno;
注:
①create or replace procedure:创建存储过程的关键字,如果存在同名的存储过程,则会替换这个存储过程;
Delempno是存储过程的名称
②empid in number:为存储过程的传入参数,该参数为number类型
③begin...end...:这是存储过程开始和结束的关键字,在begin...end之间为存储过程的具体SQL语句
3、存储过程的执行
在命令窗口中输入:excute Delempno(7566);
六、索引
1、索引时对数据库表中一列或多列的值进行排序的一种结构,相当于一本书的目录,可以加快查找内容的作用;索引可以加快数据库的查询速度。
2、索引创建:根据表test_index的id字段建立名为id_test_index的索引
create index id_test_index on test_index(id);
七、同义词
1、同义词是现有对象的一个别名,分为私有同义词和公共同义词
2、确认用户是否有创建同义词的权限及权限的授予
①查询是否有权限
select * from session_privs s where s.privilege like '%SYNONYM%';
②权限授予
grant create any synonym to scott;
grant create public synonym to scott;
③创建和删除一个表的同义词
create synonym sg for salgrade;
drop synonym sg;
八、Oracle数据库中函数和存储过程有何区别
①函数必须有返回值,而过程没有返回值
②函数可以单独执行,而过程必须通过execute执行
③函数可以嵌入SQL中执行,而过程不能
其实我们可以将比较复杂的查询写成函数,然后到存储过程中调用这些函数
一、表
1、表示用来存储数据的最基本单位
2、表的创建sql语句
-- 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 64
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 --该DEPT表存储在USERS表空间中
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
1、视图是用户看到的数据,不是真正存在于数据库表中的数据,这些数据来源于表,是经过数据抽取、转化变成的
2、查看用户下有多少个视图
select * from user_views;
3、创建求平均工资的视图
create view avgsal as
select d.dname as "部门",
round(avg(e.sal), 2) as "平均工资",
count(*) as "员工人数"
from emp e, dept d
where e.deptno = d.deptno
group by d.dname;
4、视图的查询
select * from avgsal;
三、序列
1、利用它可以生产唯一的整数,一个序列的值是由Oracle数据库的特殊程序自动生成的,序列可以定义自动递增或递减。
2、序列创建
create table book(
bookID number(12) constraint pk_book primary key,
bookName varchar2(32) not null,
price number(5,2),
printTime date);
create sequence bookID --创建序列
Start with 1
Increment by 1
Maxvalue 99999999
nocache
nocycle;
3、插入数据
insert into book(bookid,bookname)
values(bookid.nextval,'三毛流浪记');
4、通过虚表查看bookid序列的当前值和下一个值
当前值:select bookid.currval from dual;
下一个值: select bookid.nextval from dual;
四、函数
1、函数分为两种,一种是Oracle数据库自身的函数,另一种是用户自己写的函数
2、创建一个通过员工的ID号获取其薪水的函数
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;
注:
①create or replace function:这是创建新的或者替换已存在的函数,函数名get_empsal,输入参数emp_no,为number类型
② return number:该函数定义一个返回number类型的值
③is emp_sal number(7,2):定义参数emp_sal,类型为number(7,2)
④begin:为函数的程序段开始
⑤select...return...:函数程序段,select sal把emp表的sal薪水查询出来,把查询出来的sal赋予自定义参数emp_sal,输入的参数与emp表的员工号相等,则返回该员工的薪水
⑥end:结束函数的SQL程序段,与begin相对应
3、通过函数获取员工薪水
select get_empsal(7566) from dual;
五、存储过程
1、存储过程是一组为了完成特定功能而建立的SQL语句集,经编译后存储在数据库中,用户通过制定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
2、创建一个根据员工号删除员工信息的存储过程
create or replace procedure Delempno(empid in number) as
begin
delete from emp where emp.empno=empid;
commit;
end Delempno;
注:
①create or replace procedure:创建存储过程的关键字,如果存在同名的存储过程,则会替换这个存储过程;
Delempno是存储过程的名称
②empid in number:为存储过程的传入参数,该参数为number类型
③begin...end...:这是存储过程开始和结束的关键字,在begin...end之间为存储过程的具体SQL语句
3、存储过程的执行
在命令窗口中输入:excute Delempno(7566);
六、索引
1、索引时对数据库表中一列或多列的值进行排序的一种结构,相当于一本书的目录,可以加快查找内容的作用;索引可以加快数据库的查询速度。
2、索引创建:根据表test_index的id字段建立名为id_test_index的索引
create index id_test_index on test_index(id);
七、同义词
1、同义词是现有对象的一个别名,分为私有同义词和公共同义词
2、确认用户是否有创建同义词的权限及权限的授予
①查询是否有权限
select * from session_privs s where s.privilege like '%SYNONYM%';
②权限授予
grant create any synonym to scott;
grant create public synonym to scott;
③创建和删除一个表的同义词
create synonym sg for salgrade;
drop synonym sg;
八、Oracle数据库中函数和存储过程有何区别
①函数必须有返回值,而过程没有返回值
②函数可以单独执行,而过程必须通过execute执行
③函数可以嵌入SQL中执行,而过程不能
其实我们可以将比较复杂的查询写成函数,然后到存储过程中调用这些函数
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29489498/viewspace-1102974/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29489498/viewspace-1102974/