ORACLE学习日记_oracle学习日记

2020-02-28 其他范文 下载本文

ORACLE学习日记由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“oracle学习日记”。

第十八讲

Exo userid=system/manager@myral1 owner=(system,scott)file;=d;system.dmp 导出数据库

Exp userid=system/manager@myor full=y inctype=complete file=d;x.dmp 导入用imp 语句(其他用户到入表的时候不能有主外键关系)Inp userid=scott/m123@myoral1 tables=(emp)file=file=d;scott/dmp 数据字典和动态性视图

数据字典是oracle数据库中最重要的组成部分,他提供了数据的一些系统信息(静态)数据字典是存放在基本表里,存在在system里面。其中基表存放数据库的基本信息,普通用户不能直接访问数据字典的基表,数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息,数据字典视图主要包括user_xxx,all_xxx,dba_xxx三个类型

User_table 用于显示当前用户所拥有的所有表,它只返回用户所对应反感的所有表 Select table_name from user_tables

All_TABLE 显示当前用户可以访问的所有表,她不仅会返回当前用户可以访问的其他方案表

select table_name from all_tables DBA_TABLE

他会显示所有拥有的数据库表,但是查询这种数据库字典视图,必须是DBA角色或是拥有select any table系统权限 用户名,权限,角色

在建立用户,oracle会把用户的信息存放到数据字典中,当给用户授权或是角色时,oracle会将权限和角色的信息存放到数据字典中 显示数据库用户

Select username,from DBA_users‟

DBA_SYS_PRIVS可以显示用户所具有的系统权限 DBA_TAB_PRIVS 可以显示用户所具有的对象权限 DBA_COL_PRIVS 可以显示用户具有的列权限 DBA_ROLE_PRIVS 可以显示用户所具有的角色

查看SCOTT具有的角色,可以查询DBA_ROLE_PRIVS Select * from DBA_ROLE_PRIVS WHERE =‟SCOTT 如何查询一个角色包括的权限 Select * from ‟

查询oracle中所有的系统权限,一般用DBA SELECT * FROM SYS_PRIVILEGE_MAP 查询oracle 中所有的角色,一般是DBA SELECT * FROM DBA_ROLES 查询oracle中所有对象权,一般是DBA SELECT DISTNCT PRIVILEGE FROM DBA_TAB_PRIVS 查询数据的表空间

Select tablespace_name from DBA_TABLESPACES 查询一个用户包含的系统权限

Select * from dba_sys_privs where grantee=‟DBA‟

SELECT * FROM ROLE_SYS_PRIVS WHERE ROLE=‟DBA‟ 如何究竟有多少中角色 SELECT * FROM DBA_ROLES 显示当前用户可以访问的所有数据字典视图

SELECT * FROM DICT WHERE COMMENT LIKE „%RANT%‟ 显示当前数据全称

Select * from global_name

数据字典记录有ORACLE 数据库的所有系统信息,通过查询数据字典可以取得以下的系统信息,比如

A 对象定义情况 B 对象所占用空间大小 C 列信息 等 但因为这些个信息,可以通过PL/SQL DEVELOPER 动态性能视图记载了里程启动后的相关信息

动态性能视图用于记录当前历程的活动信息,启动oracle server时,系统会建立动态性能视图,当停止ORACLE SERVER 时,系统会删除动态性能视图 管理表空间和数据文件

介绍,表空间时数据库的逻辑组成部分,从物理上讲,数据库数据存放在数据文件中,从逻辑上讲,数据则是存放在表空间中,表空间由一个或是多个数据文件组成ORACLE的逻辑结构报考表空间,段,区,和块 表空间由段构成,段由区构成,区由块构成表空间用于从逻辑上组织数据库的数据,数据库逻辑上是由一个或是多个表空间组成的。作用

A控制数据占用的磁盘空间

B DBA可以讲不同数据类型部署到不同的位置,这样由利于提高I/O性能

建立表空间 create tablespace 命令完成的,建表空间一般是特权用户或是DBA执行 的 建立数据库后方便管理,最好建立自己的表空间,Create tablespace data01 datafile „d:testdata01.dbf‟ size 20m uniform size 128 使用数据表空间

Create table mypart(deptno number(4)),dname varchar2(14),loc varchar2(130)tablespace data01 查询所在表空间 改变表空间状态,表空间处于联机状态,此时表空间是可以访问的,并且空间执行各种语句,(1)使用表空间脱机

Alter tablespace biaokongjian offline B 使用表空间脱机

Alter tablespace biaokongjian o C 只读 表空间或写,用write ALTER TABLESPACE BIAOGONGJIAN READ ONLY 知道表空间名,显示该空间包括的所有的表

Select * from all_tables where tablespace_name=‟biaokongjianming‟ 知道表名,查看该表属于哪个空间

Select tablespace_name ,table_name from user_tables where table_name=‟emp‟ 删除表空间

Drop tablepace “biaokongjianming ” including contents and datafiles 扩展表空间

表空间是由数据文件组成,表空间的大小实际上就是数据文件相加的大小,那么我们可以想象

Show users Insert into mypart select * from mypart 拓展表空间由三种 增加数据文件

Alter table tablespace sp01 add datafile „d;testsp01.dbf‟ size 20m 增加数据文件大小

Alter table tablespace biaokongjianming „d;testsp01.dbf‟ size 20m 设置文件的自动增长

Alter table tablespace biaokongjianming „d;testsp01.dbf“ autoextend on next 10M maxsize 500M 移动数据文件

确定数据文件所在的表空间

Select tablespace_name from dba_data_files where file_name=‟ d;testsp01.dbf‟ 使表空间脱机

Alter tablespace sp01 offline

使用命令移动数据文件到指定位置

Host move d;testsp01.dbf c;testsp01.dbf 移动数据文件

Alter tablespace sp01 rename datafile „d;testsp01.dbf‟to “c;testsp01.dbf‟ 使空间联机

Alter tablespace sp001 online 其他表空间 索引表空间 Undo 表空间 临时表空间

非标准块的表空间 第二十一讲

数据的完整性用于确保数据遵从一定的商业和逻辑规则,数据完整性可以使用约束,触发器,应用程序,三种方法。

约束用于确保数据库数据满足特定的商业规则,约束包括

Not null 不为空

Unique 唯一 可以为空

Primary key 主键 唯一的标示表行的数据,不能重复而且不能为空 只能一个主键 Foreign key 外键

外键列数据必须在主表的主键列存在或是为NULL Check 检查 强制执行数据必须满足的条件 增加约束

ALTER TABLE 命令

在增加not null 用midify

Alter table goods modify goosname not null Alter table customer add constraint aa unique(cardID)删除约束

Alter table emp drop constraint 约束名称

删除主键约束时候,存在主从关系,那么要在删除主表的主键约束的时候 必须带上CASCADE Alter table emp drop primary key cascade 显示约束信息

通过查询user_constraints 可以显示所有约束信息

Select constraint_name,constraint_type,from user_constraints where table_name=表名 索引是用于加速数据存取的数据对象,合理使用索引可以大大的降低io的次数 创建索引

Create index suoyi on customer(列名1,列名2)使用原则 1 在大表上建立索引才有意义在WHERE 子句或是链接跳上 经常用的列

缺点,建立索引,系统要占用大约表的1.2倍的硬盘和内存空间来保存索引 更新数据的时候,系统必须要有额外的时间来同时对索引进行更新。以维持数据和索引的一致性。权限和角色 创建和授予

Create user ken identified by ken

Grant create seion,create table to ken with admin option 对象权限,常用有

Alter 修改 delete 删除 select查询 insert 添加 Update 修改 index 索引 references 引用 execute 希望monkey 授权Scott 可以查询

Grant select on emp to monkey With grant option 只能授予用户,不能授予角色 第23讲

预定义角色,是指oracle所提供的角色 1 connect角色resource 角色DBA 角色

自定义角色 一般是DBA设定

建立角色

create role jueseming not identified(不验证)Create role 角色名 identity by SHUNP 赋予权限

Grant create seion to jueseming with admin option Conn scott/tiger@myoral Grant select on scott,emp to jueseming Grant insert,update,delete on scott.emp 分配角色给某个用户 Conn system/manager Grant jueseming to blake with admin option 删除 角色

Drop role juese 第25讲

PL/SQL是oracle在标准语言上的扩展,不仅允许嵌入SQL语言还可以定义变量和常量。过程,函数,触发器是PL/sql编写,过程,函数,触发器是在oracle中,PL/QSL是非常强大的数据库语言,过程函数,可以在JAVA程序中可以调用。编写一个存储过程,该过程可以插入 Create or replace procedure so_spro1 is Begin--执行部分

Insert into mytest values(„寒暑平‟,‟M123‟);End.;/ 查看错误

SHOW ERROR 如何调用该过程exec 过程名(参数值1,参数值2。。)2 call 过程名(参数值1,参数值2)删除某表记录

Create or replace sp_pro2 is Begin Delete from myte where name=‟hanshupin‟ End.分类,块 A 过程

B函数

C 触发器

D 包 注释

单行注释

--多行注释

/*…*/划分 标识符号的命名的规范定义变量时 建议用V_前缀 2 定义常量时,建议用C_前缀定义游标时候,建议用—cursor作为后缀 4定义例外时

Pl/sql 由三个部分构成,定义部分,执行部分,例外处理部分 如下所示 Declear(可选)定义部分—定义变量,常量,游标,例外,复杂数据类型 Begin(必选)执行部分----要执行的语句 Exception(可选)

例外处理部分----处理运行的各种错误 End.最简单的块 Begin Dbms_output.put_line(„‟hello world”)End

Declare

V_ename varchar2(4)Begin

Select ename into v_name from emp where empno=&no;End

有定义和执行部分的块 Declare ==定义变量

V_ename varchar2(4)V_sal number(7.2)Begin---执行部分

Select ename,sal into v_name,v_sal from emp where empno=&aa---在控制台显示用户名 Dbms_output.put_line(t….)Exception When no_data_found then Dbms_output.put_line(有误)End;过程用于执行特定的操作,当建立过程时,既可以制定输入参数in ,可以指定输出参数。可以将数据传递到执行部分,通过使用输出参数,可以将执行部分的数据传递到应用环境 1 请考虑编写一个过程,可以输入雇员名,新工资,可修改雇员的工资 2 如何调用两种方法

答 1 create procedure sp_pro3(spname varchar2,newsal number(3,2))is Begin Update emp set sal=newsal where ename=spname End 如何使用过程返回值?

函数用于返回特定的数据,当建立函数时,在函数头部必须包含return 显示雇员的年薪

Create function sp_fun2(spname varchar2)return Number is yearsal Begin

Select sal*12+nvl(comm.,0)*12 into yearsal from emp where ename=spname Return yearsal End 包是用于逻辑上组合过程和函数,它由包规范和包体两部分 实例

Create package sp_package is

Procedure update_sal(name varchar2,newsal number)Is Begin Update emp set sal=newsal where ename=name end

Function annual_incom(name varchar)return number Return number is Annuan_salary number Begin End 变量类型 标量类型

定义可变长字符串 V_ENAME VARCHAR2(10)定义一个小数 v_sal number(6.2)定义一个小数和初始值 v_sal2 number(9,2)=6.4 定义一个日期类型的数据 v_hiredate date 定义一个布尔变量,不能为空,初始值为false v_valid Boolean not null default false Declare

C_tax_rate number(3,2):=0.03 V_ename varchar2(7,2)V_sal number(7,2)V_tax_sal number(7,2)Begin Select ename,sal into v_ename,v_sal from emp where empno=&no V_tax_sal;=v_sal*v_tax_rate End 标量%tyoe 符合类型

用于存放多个值的变量,主要包括 记录 表 嵌套表 嵌套表 varry 记录 类似与高级语言中的结构体

PL.SQL记录实例 Declare--定义一个PLSQL记录类型

emp_record_typ,类型包括三个数据name ,salary,title

Type emp_record_type is record(name emp.ename%type,salary emp.sal%type,title emp.job%type)--定义一个变量emp_record_typ, Sp_record emp_record_type Begin Select ename,sal,job into sp_record from emp where empno=7788 End PLSQL表

Declare

定义了一个表类型sp-table-type 该类型用于存放EMP,ENAME%TYPE, index by binary_integer标示下标是整数

Tysp sp_table_type is table of emp,ename%type index by binary_integer Sp_table sp_table_type/ Begin

Select ename into sp_tabel(0)from emp where empno=7788 End 参照类型

参照变量是指用于存放数值指针的变量,可以使用游标标量(ref cursor)参照变量-ref cursor 使用游标时,当定义游标时不需要制定相应的select语句 但使用游标时OPEN时需要指定SELECT 语句,这样一个游标就与一个SELECT 语句结合了 编写使用PLSQL编写一个存储过程,可以输入部门号,并显示 Declare 定义游标类型sp_emp_cirsor Type sp_emp_cirsor is ref cursor Test_cursor sp_emp_cirsor:-定义变量

V-ename emp.empno&pyte V_sal emp.sal&type Begin-执行

-把 test_cursor和一个select结合Open test_cursor for select ename,sal,from emp where deptno=&no =循环取出 Loop

Fet test_cursor into v_ename,v_sal‟-判断是否test_cursor为空

Exit when test_cursor ¬found End loop End

create or replace procedure spr_column is

--定义游标

sp_column_cursor is ref cursor;sp_column sp_column_cursor;

--定义变量

declare

v_table_name user_tab_columns.TABLE_NAME%type v_column_name user_tab_columns.COLUMN_NAME%type v_data_type user_tab_columns.DATA_TYPE%type v_data_length user_tab_columns.DATA_LENGTH%type v_count_table1 number(2000)v_count_table2 number(2000)v_sql varchar2(4000)v_rom_count(100)c_count number;=0 begin

create table user_tab_columns_new as select * from user_tab_columns select t1.*, rownum rn from user_tab_columns_new select count(*)into v_count_table from user_tab_columns_new

select TABLE_NAME INTO V_from(select A1.*,rownum rn from(SELECT * FROM user_tab_columns_new)A1 where rownum=1)end

《ORACLE学习日记.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
ORACLE学习日记
点击下载文档
相关专题 oracle学习日记 日记 ORACLE oracle学习日记 日记 ORACLE
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文