`
Jameswsz
  • 浏览: 160078 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle10G学习笔记

阅读更多

第一范式:有主键,列不可分

第二范式:不存在部分依赖(当一张表中有多个字段作为主键时,非主键字段不能依赖于部分主键,必须依赖组合主键)

第三范式:不存在传递依赖(所有非主键必须依赖于主键) (eplid,dptid,dptname)其中的dptname属于传递依赖

最主要的原则:表关联查询越少越好,先按第三范式设计,然后加上冗余字段解决多表关联查询效率问题

linuxoracle启动的过程

lsnrctl start

//sqlplus sys/oracle as sysdba  (10G用句代替下面两句)

sqlplus /nolog

conn sys/oracle as sysdba

startup

windowsoracle启动过程  (一般会在服务中启动)

lsnrctl start/stop   启动监听程序

oradim -startup -sid orcl (net start/stop oracleserviceoral) 启动Oracle服务,其中orcl为数据库的服务名或者SID

忘記sys用户的密碼的两种解決方法:

在运行中輸入:sqlplus /nolog

CMD窗口中输入:conn / as sysdba

接著輸入:alter user sys identified by "111111";   //用于修改用户的密码

在本机CMD下输入 SQLPLUS SYS AS Sysdba

然后要求输密码时按Enter即可,进入后自行改密码

ORACLE数据库的三种验证机制

操作系统验证   在“计算机管理---本地用户和组------ora_dba---属性---成员”
密码文件验证   F:\oracle\product\10.2.0\db_1\database\PWDorcl.ora
数据库验证     普通用户用这种方式

拥有sysopersysdba角色的用户采用的是操作系统验证(默认)和密码文件验证

先接到监听再连到数据库

CMD中连接进入数据库

sqlplus sys/oracle as sysdba  可省略密码写成 sqlplus / as sysdba 

sqlplus scott/111111   sqlplus scott/111111@orcl 指定连到哪个实例

CMD中已经连接进入数据库后更换用户

conn scott/111111

disconn 断开连接

show user;查看当前用户

修改自己的密码:passw

alter user scott account lock/unlock;用户加锁、解锁

alter user scott password expire;让用户口令即刻失效

drop user scott [cascade] 删除指定用户【级联删除该用户的所有对象】

创建用户

create user userName identified by userPW

授权系统权限

grant create session to userName [with admin option]  [系统权限传递]

grant create table to userName

grant unlimited tablespace to userName

把create session的权限授于所有用户,public 代表所有用户
grant create session to public

收回权限

revoke create table from userName

查看当前用户拥有哪些系统权限
select * from user_sys_privs;

对象权限:用户对其它用户的数据对象的操作权限,由拥有该对象的用户把权限授予其它用户

grant select on tableName to anotherUser [with grant option]  [对象权限传递]
grant all on tableName to anotherUser;

查看当前用户拥有哪些对象权限
select * from user_tab_privs;

其中对象权限可以控制到列注意:查询和删除不能控制到列
grant update(name) on table to anotherUser;
grant insert(name) on table to anotherUser;

查看当前用户控制到列的对象权限
select * from user_col_privs;

角色是一些权限的集合

create role myrole;

grant create session to myrole;

drop role myrole;

将角色授于用户

grant myrole to userName

注意:有些系统权限无法直接赋于角色,如unlimited tablespace。

此外,表是属于某个用户的,而角色不属于任何用户(不管由谁创建)。

对一些权限的理解:

系统中有create table权限,但没有alter table,drop table,delete table 权限;

系统中有create any table 权限,同时也有alter any table,drop any table,delete any table 权限。

“any”指我们可以其它用户下的表进行对应操作。

权限传递:A授权给BB再把A的权限授给CA收回B的权限,则C的也被收回

set linesize 400 //将一个行的宽度设大一些,默认80

set pagesize 20//设置每页数量,默认14

select sys_context('userenv','db_name') from dual; //查看当前数据库名

show error; --显示错误信息

Alter session set nls_date_format='yyyy-mm-dd';  //改变当前Session 的日期格式

Last_day(sysdate);

Spool sql/plus输出屏幕上的内容输出到指定文件中,输出后要用spool off关闭

Create table 表名[(列名1,列名2,…)] as select语句

不允许在Where子句中使用分组函数,用Having子句过滤分组条件,分组函数最多可以嵌套两层

表包括:用户表,数据字典表(属于Sys用户,由Oracle Server维护)

逻辑存储结构:表空间 段 区 

多表连接时,在列名前加表名,提高查询效率,用Join 写关联关系,Where写过滤条件

SQL写法思路:分多部分写再整合

事务起始于一条DML语句(update,delete,insert,mergeselect 语句不会触发事务

事务结束:rollback(非正常断开),commit(正常断开),DDL,DCL

主键和唯一约束会默认建索引,索引:查询快,修改慢,占空间

视图维护麻烦,因为表改,视图也得改,简化查询,屏蔽数据

Where sal > any/all(多值)

Where a.dptno(+)=b.dptno 右连接(b表全部出来)

Savepoit sp; 保存点,实现部分回滚  rollback to sp;

对于日期类型可以直接用 +/- 数字

字符串和日期用单引号括起来,

字符串大小写敏感,日期格式敏感(不能用字符与日期进行比较,必须先用to_date()转成日期类型)

别名用双引号可强制大小写和特殊字符,可以省略 as ,可以不用双引号

Like '\_%' escape '\'   把 当转义字符,可以是任意字符

:赋值  || 连字符号

对于update,delelte:new:old两个状态的值

sequenceName.nextval获取下个值,sequenceName.currentval获取当前值

Distinct关键字的作用范围是后面所有列字段的组合

算数表达式中出现空值,则整个表达式结果为空,连接表达式中空值被当作一个空的字符串(长度为0

NVL(exp1,exp2)如果exp1值为NULL,返回exp2

NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,否则返回E2

NULLIF(exp1,exp2)如果两个值相等返回NULL,否则返回Exp1

Coalesce(expl,exp2,)函数返回众多表达式中第一个非NULL 表达式的值

Case deptno when 10 then '财务部'

          when 20 then '技术部'

          Else '行政部'

End

与下面的等价

Decode(deptno,10,'财务部',

             20, '技术部',

             '行政部')

Rownum加在本次select查询结果中伪列,从1开始,只能与<= 一起用,因为取出的第一条记录为1

Select * from (select rownum r,t.* from (select * from emp order by sal desc) t) where r>6 and r<10

PL/SQL 1、提高性能(预编译)2、减少网络传输3、模块化编程4、安全 5、移植性差

PL/SQL程序的基本单元是块(BLOCK),块就是实现一定功能的逻辑模块块中的可执行语句、SQL语句和END结束标识都要以分号结束 

[DECLARE] 
--declaration statements 
BEGIN 
--executable statements 
[EXCEPTION] 
--exception statements 
END;

变量定义的方法是: 
变量名 [CONSTANT] 类型标识符 [NOT NULL][:=|DEFAULT ];

例如:v_name varchar2(20) not null default 'james';  

变量名 表名.字段名%TYPE;   或   变量名1 变量名%TYPE;

  例如:v_name emp.ename@type;  v_name1 v_name%type;

  使用%type属性,可以使变量的声明根据表字段的类型自动变换,而且%type属性,可以用于变量身上

变量名 表名%ROWTYPE 游标名%ROWTYPE Record类型%ROWTYPE

Table 变量类型,相当于数组,但下标可以是负数, //v_empnos(-1) := 9999;

  TYPE 类型名 IS TABLE OF 数据类型[NOT NULL] INDEX BY BINARY_INTEGER; 

  declare

  type type_table_emp_empno is table of emp.empno%type index by binary_integer;

  v_empnos type_table_emp_empno;

begin

  v_empnos(0) := 7345;

  v_empnos(-1) := 9999;

  dbms_output.put_line(v_empnos(-1));

end;

Record变量类型

  TYPE 类型名 IS Record();

declare

  type type_record_dept is record(

       deptno dept.deptno%type,

       dname dept.dname%type,

       loc dept.loc%type);

  v_dept type_record_dept;

begin

  v_dept.deptno := 1;

  v_dept.dname := 'james';

  dbms_output.put_line(v_dept.deptno);

end;

游标变量(REF CURSOR游标) 与游标类似,游标变量指向多行查询的结果集的当前行。但是,游标与游标变量是不同的,就像常量和变量的关系一样。游标是静态的,游标变量是动态的,因为它不与特定的查询绑定在一起 

     TYPE 类型名 IS REF CURSOR [return emp%font-weight: normal;

分享到:
评论

相关推荐

    Oracle10g学习笔记

    Oracle10g学习笔记,Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记

    Oracle 10g 学习笔记

    │ Oracle 10G 数据库系统学习笔记.pdf │ Oracle DBA学习心得 --第0章 - ColorfulStar3399的专栏 - CSDN博客.mht │ Oracle DBA学习心得 --第1章 - ColorfulStar3399的专栏 - CSDN博客.mht │ Oracle Direct-Path ...

    oracle10g学习笔记

    ### Oracle 10g 学习笔记:深入理解与配置要点 #### 一、Oracle 10g系统架构与配置参数 Oracle 10g作为一款成熟的关系型数据库管理系统,其内部架构主要由共享内存区域(SGA)和程序全局区(PGA)组成。在学习与...

    ORACLE10G学习笔记

    ORACLE10G学习笔记 包括基础知识 SQl基本语句 安全备份与恢复

    成功之路:Oracle11g学习笔记.pdf

    《成功之路:Oracle 11g学习笔记》专为开发人员编写,先引导开发新手熟悉Oracle环境,然后进入数据库开发,并要掌握项目开发中的一些技巧。开发技巧展示是《成功之路:Oracle 11g学习笔记》的一大特色(这一点很值得...

    韩顺平j2ee-玩转oracle10g学习笔记

    《韩顺平j2ee-玩转oracle10g学习笔记》是一份全面记录了韩顺平老师关于Oracle 10g数据库系统教学内容的文档。Oracle 10g是Oracle公司推出的一个重要版本,它在数据库管理、性能优化、安全性、可扩展性和灾难恢复等...

    oracle 10g 学习笔记

    ### Oracle 10g 学习笔记知识点梳理 #### 一、Oracle 10g 用户管理及权限分配 **1.1 用户管理** - **基本概念:** - **Sys 用户:** Oracle 安装完成后自动创建的第一个用户,拥有最高级别的权限(`sysdba`),可...

    Oracle10g学习笔记整理

    本知识点主要整理了Oracle10g学习笔记,涉及登录操作、常用命令、SQL语言基础、数据表的创建和管理、用户权限操作等方面。 首先,介绍如何登录Oracle数据库。登录的方法多样,可以使用sqlplus工具,通过不同格式的...

    韩顺平2011玩转oracle10g学习笔记

    韩顺平2011玩转oracle10g学习笔记,是学习oracle数据库10G的必备文档.doc

    成功之路Oracle11g学习笔记

    《成功之路Oracle11g学习笔记》是一本专为初学者设计的Oracle数据库学习资源,旨在帮助读者系统地掌握Oracle11g的基础知识。Oracle11g是Oracle公司推出的一个重要版本,它提供了许多增强的功能和优化,使得数据库...

    成功之路:Oracle11g学习笔记

    资源名称:成功之路:Oracle 11g学习笔记内容简介:本书专为开发人员编写,先引导开发新手熟悉Oracle环境,然后进入数据库开发,并要掌握项目开发中的一些技巧。开发技巧展示是本书的一大特色(这一点很值得资深的...

    Oracle11g学习笔记

    总结来说,"Oracle11g学习笔记"将引导你全面掌握Oracle11g数据库管理系统,从基础操作到高级应用,从数据库设计到性能优化,从安全管理到高可用性实践,为你的IT事业打下坚实基础。通过阅读这个PDF文档,你将能够...

    成功之路Oracle11g学习笔记-赵振平

    成功之路Oracle11g学习笔记-赵振平 请下载2个附件

    成功之路:Oracle_11g学习笔记17

    本学习笔记以第17章构筑高速运行的SQL语句为例,详细探讨了Oracle数据库性能调整的相关知识点。 首先,需要明确数据库性能调整的概念和范围。数据库性能调整是通过一系列的方法和技术,改善数据库运行效率和响应...

    我的Oracle 11g OCP学习笔记

    本学习笔记详细记录了作者在准备Oracle 11g OCP认证过程中的学习心得和实践经验,对于希望深入理解Oracle数据库管理和优化的读者来说,是一份宝贵的资料。 Oracle 11g包含了许多重要的特性和改进,例如: 1. **...

    oracle11g学习笔记

    在学习Oracle 11g的过程中,了解并掌握其基本概念、安装、用户管理、权限和角色、数据对象以及管理工具的使用至关重要。 首先,安装过程虽然在此略过,但在实际操作中,Oracle 11g的安装包括下载安装包、配置环境...

    Oracle 10g sql 学习笔记

    Oracle 10g SQL 学习笔记涵盖了Oracle数据库的基础知识,包括版本信息、数据库系统特点、关系型数据库结构、SQL语言、操作环境以及常见的数据库操作。以下是对这些知识点的详细说明: 1. **Oracle 9i基础知识**: ...

Global site tag (gtag.js) - Google Analytics