八个学习点帮助你全面认识Oracle数据库

来源:互联网 发布:图片加音乐软件 编辑:程序博客网 时间:2024/06/09 11:39

八个学习点帮助你全面认识Oracle数据库 

 

TableSpace 

 

表空间: 

一个表空间对应多个数据文件(物理的dbf文件) 

 

用语法方式创建tablespace,用sysdba登陆: 

 

--创建表空间mytabs,大小为10MB: 

 

create tablespace mytabs datafile

            'C:/oracle/oradata/mydb/mytabs1.dbf' size 10M;

            alter user zgl default tablespace mytabs;

            --把tabs做为zgl的默认表空间。

            grant unlimited tablespace to zgl;

            --将操作表空间的权限给zgl。

 

 

Exception 

示例: 

 

create or replace procedure

            pro_test_exception(vid in varchar2) is

            userName varchar2(30);

            begin

            select name into userName from t_user where id=vid;

            dbms_output.put_line(userName);

            exception

            when no_data_found then

            dbms_output.put_line('没有查到数据!');

            when too_many_rows then

            dbms_output.put_line('返回了多行数据!');

            end pro_test_exception;

 

 

安全管理 

以下语句以sysdba登陆: 

 

用户授权: 

alter user zgl account lock;--锁定帐号。 

alter user zgl identified by zgl11;--修改用户密码。 

alter user zgl account unlock;--解除帐号锁定。 

alter user zgl default tablespace tt;--修改用户zgl的默认表空间为tt。 

create user qqq identified by qqq123 default tablespace tt;--创建用户。 

grant connect to qqq;--给qqq授予connect权限。 

grant execute on zgl.proc01 to test;--将过程zgl.proc01授予用户test。 

grant create user to zgl;--给zgl授予创建用户的权限。 

revoke create user from zgl;--解除zgl创建用户的权限。 

 

角色授权: 

create role myrole;--创建角色myrole 

grant connect to myrole;--给myrole授予connect权限 

grant select on zgl.t_user to myrole;--把查询zgl.t_user的权限授予myrole 

grant myrole to test;--把角色myrole授予test用户 

概要文件(配置文件): 

全局设置,可以在概要文件中设置登陆次数,如超过这次数就锁定用户。 

 

Synonym 

创建同义词示例: 

 

create public synonym xxx for myuser.t_user

            create synonym t_user for myuser.t_user

            select * from dba_synonyms where table_name='T_USER'

 

 

跨数据库查询 

 

create database link dblinkzgl

            connect to myuser identified by a using 'mydb'

            Select * From t_user@dblinkzgl

 

 

course示例 

示例1: 

 

create or replace procedure pro_test_cursor is

            userRow t_user%rowtype;

            cursor userRows is

            select * from t_user;

            begin

            for userRow in userRows loop

            dbms_output.put_line

            (userRow.Id||','||userRow.Name||','||userRows%rowcount);

            end loop;

            end pro_test_cursor;

 

 

示例2: 

 

create or replace procedure

            pro_test_cursor_oneRow(vid in number) is

            userRow t_user%rowtype;

            cursor userCur is

            select * from t_user where id=vid;

            begin

            open userCur;

            fetch userCur into userRow;

            if userCur%FOUND then

            dbms_output.put_line

            (userRow.id||','||userRow.Name);

            end if;

            close userCur;

            end pro_test_cursor_oneRow;

 

 

record示例 

 

create or replace

            procedure pro_test_record(vid in varchar2) is

            type userRow is record(

            id t_user.id%type,

            name t_user.name%type

            );

            realRow userRow;

            begin

            select id,name into

            realRow from t_user where id=vid;

            dbms_output.put_line

            (realRow.id||','||realRow.name);

            end pro_test_record;

 

 

rowtype示例 

 

create or replace procedure

            pro_test_rowType(vid in varchar2) is

            userRow t_user%Rowtype;

            begin

            select * into userRow from t_user where id=vid;

            dbms_output.put_line

            (userRow.id||','||userRow.name);

            end pro_test_rowType;