orcale 数据库之总结

orcale 安装 服务器端就是要配置一下监听器。客户端就是直接安装连接就行了。
1
DBA_Constraints、
ALL_Constraints和
User_Constraints数据字典包含约束的信息,
Constraints_Type列显示了约束的类型:
C代表Check约束,P代表Primary Key,U代表Unique,R代表外键。
三种约束:
查询约束:
Select Constraint_Name, Constraint_Type, Deferrable, Status
From DBA_Constraints
Where Table_Name="所查的数据库名"
2 针对运算符:
  (1)!一定要和等号相对在一起。
  (2)等价的一些操作
     变量>=50  AND  变量<=100;     等价    变量 BETWEEN 50 and 100
     变量<50   OR 变量>100;        等价    变量 NOT between 50 and 100
     变量<>99;                     等价    变量!=99
  (3)in 可以是数字也可以是文本。
  (4)like %   可以是%前面的也可以是后面的。
  (5)日期的处理用年的格式可以  是 03 也可以是2003 的形式。就是不可以用。
  (6)针对的null 最为条件的时候。要用is 或者是 is NOT 其他的不行。
  (7)查找唯一的变量UNIQUE   select unique 变量  from tab where 变量 条件。
     还可以用DISTINCT       select distinct 变量  from tab where 变量 条件
     两者都可以确定唯一,两者的区别是unique是distinct的同义词,功能完全相同。
     distinct是标准语法,其他数据库 sql server,db2,oracle,sybase,mysql等都支持。
     unique,informix数据库认识,其他数据库有的认识,有的不认识。
3 rollback 回滚操作。
4 在sqlplus里edit 就到编辑的文本中了。可以进行编辑。
  edit   路径
  还以执行文件:
  @      路径
5 单行函数:
  系统变量函数:
  Sysdate:server端时间:
  sysdate可以增加也可以减少主要针对的系统时间的操作。
  Round:是四舍五入的函数。
  TRUNC函数用于对值进行截断。
  UPPER:转化为大写。
  LOWER:转化为小写。
  INITCAP:只有首字母大写。
  LENGTH: 注意:如果为中文数据,一个中文一个英文全被认为是1
  substr( string, start_position, [ length ] ):取出string的:string可以是字符串也可以是字段名称  start_position从第几个上面取。length :取出多长。
  RTRIM:舍去字符串右边空格。
  TO_CHAR(input_value, format_code):日期,时间转换为文本。input_value:为字段,format_code为显示的格式。
  TO_DATE(input_value,format_code):文本转换为日期。
  update sm_emp_dept set dept= decode (deptno , 10 , '财务',20 , '公关','未知');  条件更新。
  NVL(eExpression1, eExpression2)
  参数
  eExpression1, eExpression2
  如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。
6 聚合函数:
  分组:GROUP  BY  字段名
  分组函数:COUNT,SUM,AVG,MIN,MAX    字段为文本按ASCII码排大小,对于MAX MIN 的这些都是不是number类型的。

7  HAVING语句中内容:字段分组函数 若直接引用字段,则字段必须在GROUP BY子句中。
   RowID 伪列rowid 使用以64个字符为基础的编码来表示每一记录行的物理地址(在硬盘上的位置)。Rowid是查找记录的最快方法。
   注意:rowid并不是以十六进制表示的
   例子:SELECT ROWID, ename FROM emp;
8  索引:由指定字段的值和ROWID组成的一个子隐藏表。当select子句含有索引字段,查询通过索引直接找到对应记录
   create INDEX index_name on table_name;
   索引类型:逻辑上 物理上 B-tree Bitmap 树型结构

9 数据库中的对象: 表 视图 索引 伪列  同义词   数据库链
 
视图:是一个或者是多个表的(或者是其他视图)中的数据中的一种定制表示。 个人理解其实就是多个表的
      整合,因为通过视图更改数据那么基表中的数据也会变。
      例:create or replace view 视图名 as select ....from....where...
      应用: (1)desc 视图名 看视图的结构
             查询可以正常按照表的结构那样操作。基表中的数据变化了,那么视图也跟着变。
             (2)删除视图:drop view 视图名 
             (3)insert into  视图 values('','','');  这样的话视图改变了,那么基表中的数据也改变了。
             (4)delete form 视图 就会删除视图中查出的数据。视图以外的就不会有。其实它好像暂时的似的
                ,查一下变一下。
             (5)只读视图。在创建的语句后面加上 with read only; 这样就可以是只读的了不能其他操作了。


序列:序列是数据库中的一种对象。序列要素:名字 上升 或 下降 序号间距,
      序列独立于表,所以同一个序列可以用于一个或者多个表。所生成的序号是唯一编码。
      序列定义:
          CREATE  SEQUENCE  序列名
          [START WITH   start数字]
          [INCREMENT BY  increment_number]
          [MAXVALUE   max数字]
          [MINVALUE  min数字]
          [CYCLE]  
          [CACHE   数字]
          [NOCACHE]
      序列更改:
          ALTER    SEQUENCE  序列名
          [INCREMENT BY  increment_number]
          [MAXVALUE   max数字]
          [MINVALUE  min数字]
          [CYCLE  |  NOCYCLE]
      删除:drop SEQUENCE  序列名

     数据库链是一个命名的对象,说明从一数据库到另一数据库的一路径(PATH)。
     数据库链可以实现在不同oracle数据库之间的通信。
     CREATE  DATABASE  LINK  数据库链 CONNECT TO  USER名
     IDENTIFIED BY 口令
     USING  ‘ORACLE链接串'
PL/SQL 编程:
    PL/SQL是Oracle对SQL规范的扩展,是一种块结构语言。
    1 注释:单行注释:  --注释文字
            多行注释:/*……..
             …………………………*/
    2 匿名块可以使用命名块。
    3 调用存储过程:call  存储过程名
 
存储过程:没有declare,变量定义在is 之后
          查询存储过程:存储过程是一个数据库对象。
          desc user_source;  查出存储过程和其他对象的结构  type
          SELECT TEXT FROM USER_SOURCE WHERE NAME=‘存储过程名(或者是函数名一定要大写啊)’查内容。
          修改的时候直接用replace 取代就可以了。
          删除:DROP PROCEDURE 过程名
                DROP FUNCTION  函数名
         注意:数据库的对象名要大写。

         变量%type:说明那个变量和这个变量的类型是一样的。、
         前面有constant 的就是常量。

标签和goto 结合。
set serveroutput on    执行函数或者是过程。
记录的时候必须要进行变量的声明。
当结果集返回多条记录必须用CURSOR。CURSOR是一种变量,它对应于一个select 语句确定的结果集。它用于逐行处理表中的数据。
使用cursor  
  1 用select 定义 和定义的其他的变量一样   cursor 名 is select
  2 open 游标 
  3 fetch 游标名 into 变量。
  4 close 游标名。
循环操作的
  1 用select 定义 和定义的其他的变量一样   cursor 名 is select
  2 open 游标 
  3 loop
  3 fetch 游标名 into 变量。
  4 end loop
  5 close 游标名。

游标的详解:分为显式的和隐式的
     显式的,就是有定义有open close  可以根据游标名访问游标属性。
     隐式的都是有plsql 内部定义。cursor 的%ISOPEN 属性总为FALSE.

数据库并发:就是同时操作了同一个数据。这时候就要将数据一个停顿了。一个解锁。处在commit之间的时候,其实就是锁定的时候。
异常处理:
    异常实现技术:EXCEPTION WHEN first_exception THEN

WHEN second_exception THEN

WHEN OTHERS THEN
/*OTHERS异常处理器必须排在最后,它处理所有没有明确列出的异常。*/

END;


触发器:触发器是数据库的一个对象。隐式运行。不接受参数。对表或者是视图的操作。
触发器在dml作用于表的时候触发,而不管是哪个用户在执行dml.
基本语句:
CREATE [OR REPLACE ] TRIGGER
trigger__name
{BEFORE |AFTER | INSTEAD OF}
ON {table_or_view_name}
[FOR EACH ROW  [WHEN condition ]]
trigger_body
在trigger中不许使用commit,rollback,savepoint等trancation控制语句。
变异表就是当前被D M L 语句修改的表。对触发器来说,变异表就是触发器在其上进行定义的表





用户和权限管理:
一个表的空间由一个或者是多个数据文件组成,数据文件增加可以扩大表的空间。系统会走动建立System表空间。
select * from v$tablespace; 查询表的空间。
用户管理:
  建立用户:
CREATE USER 用户名
IDENTIFIED BY 口令
[DEFAULT TABLESPACE 表空间名]
[TEMPORARY TABLESPACE 表空间名]
[QUOTA 整数 M  ON 表空间] [UNLIMITED]
[PROFILE  环境文件名]
   权限:
    system:系统权限,可以执行某一特定动作的权限。
    object:访问特定数据库对象的权限。

你可能感兴趣的:(数据结构,oracle,sql,sql,server,Sybase)