1、存储过程和函数的区别。
(1)、存储过程是作为PL/SQL语句执行,而函数是作为表达式的一部分调用;
(2)、存储过程在规格说明中不包含return语句,而在函数的规格说明这包含return子句;
(3)、存储过程不返回值,而函数必须返回值;
(4)、在存储过程中可以包含return语句,但不返回任何值,他只表示退出存储过程,而函数中必须包含一个return语句;
2、触发器分为事前触发和事后触发,这两种触发有何区别。语句级触发和行级触发有何区别。
事前触发是在数据没有写入数据库时就触发,而事后触发是在把数据写入数据库后再触发
语句级触发值所有的相同的语句只触发一次,而行级触发是每执行一条语句就触发一次。
3、根据students表(stuID,stuName,stuSex,stuAge,stuTel)编写一个存储过程,将students表中的学生ID号传递给这一过程,并向调用应用程序返回学生的姓名和电话号码。再编写一个具有过程调用的匿名块。
存储过程
create or replace procedure pro_stu(id in number,stuname out varchar2,
stutel&nb ......
在linux下启动oracle 和在windows是有差别的,对于一般在windows下操作习惯人有很多不适应,所以我特别写这样文章,以方便新手进行操作,下面就一步一步讲解启动过程。
1.通过终端连接到linux服务器,当然这样的软件很多例如putty,SecureCRT,并以oracle用户进行登录,否则启动oracle时会错的,没有权限启动.(也可用户root 登录,然后进行 su - oracle )
2.用户sys连接数据库,按以下命令执行。
a.sqlplus /nolog ;
b.conn sys/passwd as sysdba;
3.启动数据库,因为启动方式有很多种比如用pfile,spfile,这里我就不详细讲解具体的启动方式了,以最简单的为例进行讲解,startup进行启动(实际是以spfile 进行启动),在提示下运行.
startup
(注明,一般启动会有三步对应数据库要做的三件事.
a.startup nomount 打开实例
b.alter database mount 装载数据文件
c.alter database open 打开数据文件
)
4.启动完数据库一般情况下客户端还不能连接到服务器,我们要启动监听程序。将第3步退出sqlplus 到命令提示符,进行启动监听,执行命令如下.
&n ......
在linux下启动oracle 和在windows是有差别的,对于一般在windows下操作习惯人有很多不适应,所以我特别写这样文章,以方便新手进行操作,下面就一步一步讲解启动过程。
1.通过终端连接到linux服务器,当然这样的软件很多例如putty,SecureCRT,并以oracle用户进行登录,否则启动oracle时会错的,没有权限启动.(也可用户root 登录,然后进行 su - oracle )
2.用户sys连接数据库,按以下命令执行。
a.sqlplus /nolog ;
b.conn sys/passwd as sysdba;
3.启动数据库,因为启动方式有很多种比如用pfile,spfile,这里我就不详细讲解具体的启动方式了,以最简单的为例进行讲解,startup进行启动(实际是以spfile 进行启动),在提示下运行.
startup
(注明,一般启动会有三步对应数据库要做的三件事.
a.startup nomount 打开实例
b.alter database mount 装载数据文件
c.alter database open 打开数据文件
)
4.启动完数据库一般情况下客户端还不能连接到服务器,我们要启动监听程序。将第3步退出sqlplus 到命令提示符,进行启动监听,执行命令如下.
&n ......
SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,
SQL_TEXT
from V$SQLAREA
WHERE EXECUTIONS>0
AND BUFFER_GETS > 0
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8
ORDER BY 4 DESC; ......
SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,
SQL_TEXT
from V$SQLAREA
WHERE EXECUTIONS>0
AND BUFFER_GETS > 0
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8
ORDER BY 4 DESC; ......
如何远程判断Oracle数据库的安装平台
select * from v$version;
查看表空间的使用情况
select sum(bytes)/(1024*1024) as free_space,tablespace_name
from dba_free_space
group by tablespace_name;
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
from SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;
1、查看表空间的名称及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
2、查看表空间物理文件的名称及大小
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
3、查看回滚段名称及大小
select segment_name, tablespace_name, r.sta ......
如何远程判断Oracle数据库的安装平台
select * from v$version;
查看表空间的使用情况
select sum(bytes)/(1024*1024) as free_space,tablespace_name
from dba_free_space
group by tablespace_name;
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
from SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;
1、查看表空间的名称及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
2、查看表空间物理文件的名称及大小
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
3、查看回滚段名称及大小
select segment_name, tablespace_name, r.sta ......
在一般Select语句中我们通过Order by ...Asc/Desc来进行排序。但是这种排序方式在输出时,不包含排序后的序号信息。
现在介绍一下Oracle中可以用于排序输出的方法。
1. RANK ( ) OVER ( [query_partition_clause] order_by_clause )
RANK ( ) OVER ( [query_partition_clause] order_by_clause )中[query_partition_clause]表示Oracle中分组方法,通常语句格式为:partition by 列名1[,列名2...]
order_by_clause 表示排序的依据,通常语句格式为Order by 列名1[,列名2...]。这与Select语句中Order by 语句相同。一样可以在列名后添加Asc(默认)或Desc进行升序和降序的选择。
采用RANK ( ) OVER ( [query_partition_clause] order_by_clause )后序号的格式如下例:1,2,2,4,5,5,5,8,9,10...
RANK ( ) OVER ( [query_partition_clause] order_by_clause )对于查询出语句也会进行自动排序。
例:表ScoreTb数据如下
GroupID   ......
SQL> select * from ta;
ID NAME
---------- --------------------
1 gorey
2 gorey2
SQL> select * from tb;
ID ADDRESS
---------- --------------------
2 g2
3 g3
SQL>
●左外连接 -》 左表记录全部选中,右表匹配选中 ,未匹配的情况NULL显示
SQL> select * from ta left outer join tb on ta.id = tb.id;
ID NAME ID ADDRESS
---------- -------------------- ---------- --------------------
1 gorey
2 gorey2   ......