第一范式:有主键,列不可分
第二范式:不存在部分依赖(当一张表中有多个字段作为主键时,非主键字段不能依赖于部分主键,必须依赖组合主键)
第三范式:不存在传递依赖(所有非主键必须依赖于主键) (eplid,dptid,dptname)其中的dptname属于传递依赖
最主要的原则:表关联查询越少越好,先按第三范式设计,然后加上冗余字段解决多表关联查询效率问题
linux下oracle启动的过程
lsnrctl start
//sqlplus sys/oracle as sysdba (10G用句代替下面两句)
sqlplus /nolog
conn sys/oracle as sysdba
startup
windows下oracle启动过程 (一般会在服务中启动)
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
数据库验证 普通用户用这种方式
拥有sysoper与sysdba角色的用户采用的是操作系统验证(默认)和密码文件验证
先接到监听再连到数据库
在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授权给B,B再把A的权限授给C,A收回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,merge)select 语句不会触发事务
事务结束: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学习笔记
│ Oracle 10G 数据库系统学习笔记.pdf │ Oracle DBA学习心得 --第0章 - ColorfulStar3399的专栏 - CSDN博客.mht │ Oracle DBA学习心得 --第1章 - ColorfulStar3399的专栏 - CSDN博客.mht │ Oracle Direct-Path ...
### Oracle 10g 学习笔记:深入理解与配置要点 #### 一、Oracle 10g系统架构与配置参数 Oracle 10g作为一款成熟的关系型数据库管理系统,其内部架构主要由共享内存区域(SGA)和程序全局区(PGA)组成。在学习与...
ORACLE10G学习笔记 包括基础知识 SQl基本语句 安全备份与恢复
《成功之路:Oracle 11g学习笔记》专为开发人员编写,先引导开发新手熟悉Oracle环境,然后进入数据库开发,并要掌握项目开发中的一些技巧。开发技巧展示是《成功之路:Oracle 11g学习笔记》的一大特色(这一点很值得...
《韩顺平j2ee-玩转oracle10g学习笔记》是一份全面记录了韩顺平老师关于Oracle 10g数据库系统教学内容的文档。Oracle 10g是Oracle公司推出的一个重要版本,它在数据库管理、性能优化、安全性、可扩展性和灾难恢复等...
### Oracle 10g 学习笔记知识点梳理 #### 一、Oracle 10g 用户管理及权限分配 **1.1 用户管理** - **基本概念:** - **Sys 用户:** Oracle 安装完成后自动创建的第一个用户,拥有最高级别的权限(`sysdba`),可...
本知识点主要整理了Oracle10g学习笔记,涉及登录操作、常用命令、SQL语言基础、数据表的创建和管理、用户权限操作等方面。 首先,介绍如何登录Oracle数据库。登录的方法多样,可以使用sqlplus工具,通过不同格式的...
韩顺平2011玩转oracle10g学习笔记,是学习oracle数据库10G的必备文档.doc
《成功之路Oracle11g学习笔记》是一本专为初学者设计的Oracle数据库学习资源,旨在帮助读者系统地掌握Oracle11g的基础知识。Oracle11g是Oracle公司推出的一个重要版本,它提供了许多增强的功能和优化,使得数据库...
资源名称:成功之路:Oracle 11g学习笔记内容简介:本书专为开发人员编写,先引导开发新手熟悉Oracle环境,然后进入数据库开发,并要掌握项目开发中的一些技巧。开发技巧展示是本书的一大特色(这一点很值得资深的...
总结来说,"Oracle11g学习笔记"将引导你全面掌握Oracle11g数据库管理系统,从基础操作到高级应用,从数据库设计到性能优化,从安全管理到高可用性实践,为你的IT事业打下坚实基础。通过阅读这个PDF文档,你将能够...
成功之路Oracle11g学习笔记-赵振平 请下载2个附件
本学习笔记以第17章构筑高速运行的SQL语句为例,详细探讨了Oracle数据库性能调整的相关知识点。 首先,需要明确数据库性能调整的概念和范围。数据库性能调整是通过一系列的方法和技术,改善数据库运行效率和响应...
本学习笔记详细记录了作者在准备Oracle 11g OCP认证过程中的学习心得和实践经验,对于希望深入理解Oracle数据库管理和优化的读者来说,是一份宝贵的资料。 Oracle 11g包含了许多重要的特性和改进,例如: 1. **...
在学习Oracle 11g的过程中,了解并掌握其基本概念、安装、用户管理、权限和角色、数据对象以及管理工具的使用至关重要。 首先,安装过程虽然在此略过,但在实际操作中,Oracle 11g的安装包括下载安装包、配置环境...
Oracle 10g SQL 学习笔记涵盖了Oracle数据库的基础知识,包括版本信息、数据库系统特点、关系型数据库结构、SQL语言、操作环境以及常见的数据库操作。以下是对这些知识点的详细说明: 1. **Oracle 9i基础知识**: ...