杂乱的oracle笔记

第一章:安装数据库

全局数据库和sid有一个关系性

数据库口令:就是sys等的密码。

实例和数据库,数据库是一系列的文件系统
控制文件.ctl,数据文件.dbf,日志文件.log,联机非归档方式,不保存记录,写满后会被覆盖。

内存结构:
 再生缓存池,经常要用到的大表保存载里面

共享池对性能影响比较大

共享sql区保存了sql语句不用再去编译

startup 启动实力 -mount 打开控制文件,不打开数据库文件用来执行备份
  -nomount 连控制文件都不打开,当控制文件丢失是用

shutdown immediate 每个用户执行完sql后立即关闭数据库

shutdown abort 立即关闭数据库,强行关闭

help index 命令查找可以使用的所有命令

set命令:set sqlblanklines on 支持空白行

缓冲区中的命令可以用 /来执行


oracle 常用函数
字符函数: length  select length('asd你')计算长度
ltrim 去掉左边的空格

rtrim起掉右边的空格

取楚一部分字符串:substr(字符串,开始的位置,取的长度),可以组合length来取得右边开始的串

时间函数:sysdate系统时间

current_date


alter session set nls  date format='dd-mon-yyyy hh:mi:ss'

select next_day(sysdate,'星期三') from dual

转换函数to_char to_number

聚集函数:

其他:

user 查看谁已经登陆

select user from dual;

decode函数:decode(表达式,'值',1,0)

空值判断 nvl,is null判断是否是空

分组group by

聚集函数不能出现再where中,只能用having子句有having就不能用where了

like 函数 'a_'以a打头后面跟任意一个字符,like 'a%'

联合查询 join 没有sql server中的inner join

左连接再右边的表后添加(+),左连接再左边的表上加(+)

in ,not in

exit 无关子查询

表连接查询优于子查询

create table t as select * from tables;

pl/sql是oracle对sql语句的扩展

declare 声明语句

begin,exception

变量有标追变量和符合变量

变量以字符开始可以包含$,#长度1-30

不区分大小写

两个||表示拼接字符

变量赋值

declare 

x varchar(30);

begin
x:='varchar is';

dbms_output_line('x的值是:'||x)

显示输出信息

行注释--,块注视/*  */类似语c语言


declare

x varchar(20);
begin
x:='zhangtao';
dbms_output.put_line('x的值是:'||x)

========================================

declare

x varchar(20):='zhangtao';
begin

dbms_output.put_line('x的值是:'||x);
end;

分支语句

if  then

else  then

end  if

case分支

===============
declare
a number;
b varchar2(20);
begin
if a=1 then
 b:="是一";
elseif

判断=不用加:,赋值时要加


选择分支语句
case

when a=1 then 语句;
when a=2 then 语句;

end case;

循环语句:

declare
 a number;
begin
 a:=0;
 loop
  a:=a+1;
  if a>5 then
   exit;
   end if;
   dbms_output.put_line('输出a'||a);
  end loop;
end;

===================================
declare
 a number;
begin
 a:=0;
 loop
  a:=a+1;
 
   exit when a>6;
   
   dbms_output.put_line('输出a'||a);
  end loop;
end;
======================================

declare
 a number;
begin
 a:=0;
  while a<8 loop
  a:=a+1;
  dbms_output.put_line('输出a'||a);
  end loop;
end;

异常处理:

异常处理

e exception;

declare
e exception;
tname varchar(20);
begin
 select  name into tname from e where name='张涛';
when e the
 end if;
 dbms_output.put_line('没有找到');
end;
/
复合变量:记录

记录是由几个相关值构成的符合变量

declare
TYPE MYREC IS RECORD(
id varchar(20),
name varchar(30));
real_rec myrec;
begin
select   sex,name into real_rec from e ;
dbms_output.put_line(real_rec.id||','||real_rec.name);
end
;
/

declare
TYPE MYREC IS RECORD(
id e.name%Type,--对应类型
name varchar(30));
real_rec myrec;
begin
select   sex,name into real_rec from e ;
dbms_output.put_line(real_rec.id||','||real_rec.name);
end
;
/

类似于c 中的struct

游标

对数据逐条控制,

游标可以由参数但是参数不制定长度

类型可以用表名.列名%type来取得,用来给游标变量赋值

存储过程:

create 『or』replace

create or replace procedure mypr(id in varchar)
is
name varchar(10);
begin
select sex into name from e where name is null;
dbms_output.put_line(name);
end;
/

显示创建触发器时的错误

show errors procedure mypr;

试图:
create or replace view myview

as

select * from e;

加入限制要求

create or replace view  myview

as

select * from e where name is not null

with check option  -----有with check option 后就不能在试图中插入空值了

desc dba_views
desc user_views

desc all_views6 带有聚合函数的试图不能更新

触发器不能代参数

CREATE OR REPLACE TRIGGER trig_name

AFTER DELETE or (INSERT,update) ON e

FOR EACH ROW
BEHIN
 delete from e1 where id=:old.id
END trig_name

:NEW.ID,:OLD.id

newhe  old是系统提供的表供触发器用

for each row 是行级的触发器

触发器中不能用rollback commit
if inserting then

elseif  deleting then

end if
=============
instead of insert on 试图

orcale 中的用户管理
锁定用户:

alter user test account lock;
解锁

alter user test account unlock;
添加用户

create user zhangtao identified by zhangtao
default tablespace e;

授权给新用户连接权限

grant connect to zhangtao;

GRANT INSERT(UPDATE,DELETE,SELECT) ON 表名 TO 用户名 WITH OPTION 表示这个用户可以把自己拥有的权限给其他人

去给 grant all on

grant execute on 存储过程 to

grant create user to zhangtao with admin option

解除权限

revoke select on e from zhangtao;

表空间

创建表空间

create tablespace tabs

datafile 'c:/oracle/'

create unlimited tablespace,dba to test;

alter table mm add constraint fk_mn forgin key(n1) refernces nn(n1);

启动监听程序

lsnrctl start,stop 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值