基础SQL语句

Oracle(base):

1.        表空间

a)        临时表空间(查询和存放一些缓冲区数据)

                       i.创建临时表空间

create temporary tablespace[temp_space_name:TEMPNAME]  
tempfile [filepath:'D:\oracle\oradata\Oracle10g\temp.dbf'] 
size [INIT_SIZE:50m]  
autoextend on  
next [INCREASE_SIZE:50m] maxsize [MAX_SIZE:20480m]

                     ii.删除临时表空间

drop tablespace [temp_space_name:TEMPNAME] including contentsand datafiles cascade constraints

                   iii. 查看临时表空间

select * from dba_temp_files

                    iv.  修改临时表空间大小

alter database tempfile
[filepath:'D:\oracle\oradata\Oracle10g\temp.dbf']
resize [SIZE:100m]

b)       数据库表空间

                       i.   创建表空间

create tablespace [space_name:SPACENAME] 
logging  
datafile [filepath:'D:\oracle\oradata\Oracle10g\temp.dbf'] 
size [INIT_SIZE:50m]  
autoextend on 
next [INCREASE_SIZE:50m] maxsize [MAX_SIZE:20480m]


2.        用户模式

a)        用户权限

                       i. 实体权限

select, update, insert, alter, index, delete, all(包括所有权限) execute(执行存储过程权限)

                     ii. 系统权限

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。 RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。

CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构

b)       创建用户

create user [username] identified by [password]  
default tablespace [user_data]  
temporary tablespace [user_temp]

c)        给用户授权

grant connect,resource,dba to[username]

 

3.        基本增删改查语句

a)        查询

select * from [table]

b)       新增

insert into [table] (field) values(value)

c)        修改

update [table]set [field]=[value]

d)       删除

delete from [table]
drop table [table]

e)        清除水位线

truncate table [table]

 

4.        select语句执行顺序

a)        from

首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表virtualtable1.

b)       on

接下来便是应用on筛选器,on 中的逻辑表达式将应用到virtualtable1中的各个行,筛选出满足on逻辑表达式的行,生成虚拟表virtualtable2 .

c)        join

如果是outer join 那么这一步就将添加外部行,left outer jion 就把左表在第二步中过滤的添加进来,如果是right outer join那么就将右表在第二步中过滤掉的行添加进来,这样生成虚拟表 virtualtable3.

d)       多表

如果 from 子句中的表数目多余两个表,那么就将virtualtable3和第三个表连接从而计算笛卡尔乘积,生成虚拟表,该过程就是一个重复1-3的步骤,最终得到一个新的虚拟表 virtualtable3.

e)        where

应用where筛选器,对上一步生产的虚拟表引用where筛选器,生成虚拟表virtualtable4,在这有个比较重要的细节不得不说一下,对于包含outer join子句的查询,就有一个让人感到困惑的问题,到底在on筛选器还是用where筛选器指定逻辑表达式呢?on和where的最大区别在于,如果在on应用逻辑表达式那么在第三步outerjoin中还可以把移除的行再次添加回来,而where的移除的最终的。

f)        group by

分组,生成虚拟表 virtualtable4

g)       having

对virtualtable4应用having筛选器,生成虚拟表 virtualtable5

h)       select

处理select 列表,生成虚拟表virtualtable6

i)         distinct

将virtualtable6 中重复的行去掉,生成虚拟表virtualtable7

j)         order   by

将virtualtable7中的行按order by 子句中的列列表排序,生成一个游标cursor1

k)       top

从cursor1的开始处选择指定数量或比例的行,生成虚拟表virtualtable8,并返回给调用者

 

5.        创建视图

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEWview_name  
[(alias[, alias]...)]  
AS subquery 
[WITH CHECK OPTION [CONSTRAINTconstraint]]  
[WITH READ ONLY]  


其中:

OR REPLACE    :若所创建的试图已经存在,ORACLE自动重建该视图;

FORCE :不管基表是否存在ORACLE都会自动创建该视图;

NOFORCE  :只有基表都存在ORACLE才会创建该视图:

alias :为视图产生的列定义的别名;

subquery    :一条完整的SELECT语句,可以在该语句中定义别名;

WITH CHECK OPTION :

插入或修改的数据行必须满足视图定义的约束;

WITH READ ONLY :

该视图上不能进行任何DML操作。

 

6.        创建存储过程

create or replace procedurerunbyparmeters  (isal in emp.sal%type,
                            sname outvarchar,sjob in out varchar)
   as icount number;
   begin
        select count(*) intoicount from emp where sal>isal and job=sjob;
        if icount=1 then
          ....
        else
         ....
       end if;
  exception
       when too_many_rows then
       DBMS_OUTPUT.PUT_LINE("<span style="color:#0000F0;">返回值多余一行</span>");
       when others then
       DBMS_OUTPUT.PUT_LINE('<span style="color:#0000F0;">在</span><span style="color:#0000F0;">RUNBYPARMETERS</span><span style="color:#0000F0;">过程中出错</span>');
  end;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值