oracle 数据库 高级查询和管理 大纲

创建表

Create table 表名(

)

约束

Primary  主键

Unique   唯一约束

Default 默认

Check     检查

Foreign   外键

数据类型

1.字符类型

  char和varchar2区别:

  char表示固定长度字符串,长度不足使用空格补充。Varchar2表示可变长度字符串,最多可以储存4000个字节。在定义该数据类型时,应该指定其大小。与char类型相比,使用varchar2可以节省磁盘空间。

2.数值类型

  Number :可以储存正数、负数、零、定点数和精度为38位的浮点数,格式为number(m,n),其中m表示精度,代表数字的总位数;n表示小数点右侧数字的位数。

3.日期类型

  Date :用于储存表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日。Data类型的长度是7,7个字节分别表示世纪、年、月、日、时、分、秒。

  Timestamp :date类型一样, 其中秒的数值精确到小数点后6位,该数据类型同时包含时区信息。

4. 大对象类型

  Clob :

  用于储存可变长度的字符数据,最多可储存4GB的数据。该数据类型用于储存varchar2类型不能储存的长文本信息。

  Blob :

  用储存较大的二进制对象,如图片、视频剪辑和声音剪辑等,最多可储存4GB的数据。

分页查询:

分页查询分为三层的原因

创建序列

Create sequence 序列名

Start with 1 初始值    --用来指定序列的起始值

Increment by 1 步长 --用来指定序列的增量,如果取负值,则为递减序列

Minvalue 最小值|maxvalue 最大值

Nominvalue 无最小值| nomaxvalue  无最大值 --指定序列是否有最大值或最小值

Cycle | nocycle --用于指定序列值达到最大值后,是否从最小值开始产生

Cache 预分配序列个数 |nocache --用来指定是否在缓存中保存预先分配的序列值,如果选择可以提高获取序列的速度。

Order | noorder --是否确保序列值是否唯一和有序。

序列名.nextval 产生下一个值

        .currval 序列当前值

dual虚表

子查询:

where语句中使用多行子查询时,必须使用多行运算符

in not null like _ %  group by all、any...

----------------------

创建表空间

Create tablespace 表空间名

Datafile ‘数据储存位置以及名称  结尾.DBF’ size 文件初始大小;

创建用户

Create user 用户名

Identified by 密码

Default tablespace  默认表空间

Temporary tablespace  临时表空间

oracle数据库角色

  Connect :临时用户,特别是那些不需要创建表的用户,通常赋予该角色。

  Resource:可以创建表,触发器,过程等;

  DBA : 数据库管理员角色,拥有管理数据库的最高权限

oracle权限:

  Select 查询

  Update 修改

  Delete 删除

赋予权限/角色

  Grant 权限|角色 to 用户名

撤销权限/角色

  Remove权限|角色 from 用户名

删除表空间、用户、序列、过程、触发器、函数

--------------------------函数

字符函数:

Substr    取字符串

trim   删除字符串两边的字符串,如删除字符串两边的空格

Lpad   在列的左边粘贴字符

Rpad   在列的右边粘贴字符

Upper   返回字符串,并将所有的字符大写

Lower   返回字符串,并将所有的字符小写

Length   返回字符串的长度

Concat   连接两个字符串 同符号‘ ||

Replace   替换字符串

日期函数:

add_months   增加或减去月份

Trunc   去秒

Sysdate   返回系统当前时间

Last_day   返回日期的最后一天

Months_between(date2,date1)    给出date2与date1相差的月份

Next_day(date,’day’)       给出日期date和星期x之后计算下一个星期的日期

其他函数

Nvl(a,b)     如果a不为null,返回b,否则返回a

Nvl2(a,b,c)    如果a不为bull,返回b,为null返回c,b和c类型不同时,c会自动转化为b的类型

Nullif(a,b)     a和b相等返回null ,否则返回a

to_char     numeric转化成string

to_date     string转化成date

聚合函数:

Count   返回行数

Sum   求和

Min   最小值

Avg   平均值

Max   最大值

-----------------------PL-SQL块

declare            

  --变量

  --常量 constant

  --类型

    --record ---自定义数据类型

    Type record_name is record(

      %type;

    )

    --table

        Type table_name is table of dept%rowtype ----值的类型为dept%rowtype类型

        Index by binary_integer; ---键为有符号整数

  --异常

      自定义异常

      ept_no_emp exception;

  --游标

    获取多行数据的时候需要使用

    隐含游标:  

    sql%found 、 sql%notfound 、 sql%rowcount (返回影响行数 没有返回0)、sql%isopen(判断游标是否打开 执行后自动化关闭游标  属性属性为false)

      Cursor cursor_name is sql语句

begin

  ---------代码段

    If sql%notfound then  

    Raise ept_no_emp;

    open cursor_name;``--打开游标

    Fetch cursou_name into 数据类型 --提取数据

 或者  Fetch cursou_name bulk collect into  数据类型  ---一次性提取

    Close cursor_name; --关闭游标

Exception when ept_no_emp then

    dbms_output.put_line();

 .....

end;

赋值:

=

sql语句中赋值into变量名

循环:

①loop

    Loop

    语句段;

    Exit [when 条件表达式]

    End loop;

②while

    While 条件表达式 --为ture执行

    语句段

③for

    For i in 0..n  --范围

判断:

①if 

      If 条件表达式 then

    语句段1

    Else

    语句段2

    End if;

    If 条件表达式1 then

    语句段1

    Elsif 条件表达式2 then

    语句段2

    Elsif 条件表达式n then

    语句段n

    Else

    语句段

    End if;

②case

Case 表达式

When 条件表达式结果1 then

语句段1;

When 条件表达式结果2 then

语句段2;

...

Else

语句段n;

End case;

事务(transaction):

①理解事务概念

    数据库事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml(数据库操作语言insert、delete、update)语句要么全部成功,要么全部失败。

②事务四种特性

<1>.原子性(Atomicity):

    事物的原子性是指事务中包含的所有操作要么全做,要么不做。也就是说所有的活动在数据库中要么全部反应,要么全部不反应,以保证数据库的一致性。

<2>.一致性(Consistency):

    事务的一致性是指数据库在事务操作前和事务处理后其中数据必须满足业务的规则约束。

<3>.隔离性(Isolation):

    隔离性是指数据库允许多个并发的事务同时对其中的数据进行读写或修改的能力,隔离型可以防止多个事务的并发执行时,由于它们的操作指令交叉执行而导致数据的不一致性。

<4>.持久性(Durability):

    事物的持久性是指在事务处理结束后,它对数据的修改应该是永久的。即使是系统在遇到故障的情况下也不会丢失,这是数据的重要性决定。

③事务处理

    Savepoint : 建立储存点,当事务处理发生异常而回滚时,可指定事务回滚到某储存点。然后从该点从新执行。

    Rollback : 回滚事务 取消对数据库所做的任何操作

    Commit : 提交事务 对数据库的操作做持久的保存

④理解死锁

------------------------------过程  函数 包 包体  触发器

in out

创建过程

Create  or replace procedure procedure_name(param_num in out number)  --参数

创建函数

Create or replace function fun_name(变量名 数据类型)

return number --返回类型为number

Is/as

  声明部分

Begin

  执行部分

Exception

  异常处理部分

End;

创建包

Create or replace package_name

Is|as

可以定义变量、常量、过程、函数..

End package_name;

创建包体

Create or replace package body package_name

Is|as

实现包中所定义的共用过程和函数

End package_name;

创建触发器

Create or replace trigger trigger_name

[before | after] --前触发|后触发

[Insert | delete | update ] on 表名

for each row

Begin

End;

列: 创建触发器

--------------每月27号禁止向emp表添加数据

create or replace trigger tri_insterEmp

before insert on dept

begin

  if to_char(sysdate,'dd')='27' then

    raise_application_error(-20001,'不允许在27号向emp表添加数据');

   end if;

end;

猜你喜欢

转载自www.cnblogs.com/bznc/p/9715589.html