ORACLE笔记

QBE:Query By Example.标准。

Oracle Application Express:(HTML DB,早期)把数据库的数据放到网页上的

用户名:system   scott第一个员工

密码:  没有密码    tiger

/ as sysdba  后门,不用密码,不推荐当众使用。

在开始里面进入:第一次如果scott进不去,可以先用system用户名进去,在里面输入如下命令:

Alter user scott identified by tiger account unlock;

就打开被锁的scott用户

Select * from cat;显示所有表。

SQL PLUS:主要使用工具。

 

DOS命令行窗口进入:sqlplus scott/tiger

 

全局数据库名:ORCL

 

Enterprise Manager Database Control URL - (orcl) :

http://NCIST-BABY:1158/em

安装以后显示如下信息:

(数据库配置文件已经安装到 c:/oracle/product/10.2.0,同时其他选定的安装组件也已经安装到 c:/oracle/product/10.2.0/db_1

iSQL*Plus URL :

http://NCIST-BABY:5560/isqlplus

iSQL*Plus DBA URL :

http://NCIST-BABY:5560/isqlplus/dba

 

C:/oracle/product/10.2.0/db_1/install  在网页连接数据库isqlplus

Ini文件内容:

iSQL*Plus HTTP 端口号 =5560

Enterprise Manager Console HTTP 端口 (orcl) = 1158

Enterprise Manager 代理端口 (orcl) = 3938

 

在命令行窗口输入:isqlplusctl start,先启动进程。

在浏览器输入http://localhost:5560/isqlplus/login...,即可连接。

用完以后要关闭进程:isqlplusctl stop

 

(启动控制台的图形界面:没有弄出来。。。

Select instance_name from v$instance;sqlplus里,得到是orcl.

 

在命令行里输入:Set ORACLE_SID=orcl

Emctl dbco

启动控制台的图形界面,oracleoradb10g_home1tnslistener监听必须启动

还有。。。)

 

ER model:蓝图

课程目标:

SQL--DML数据维护语言DDL数据定义语言事务(交易)控制数据控制应用(DCL

MERGE:有就update,没有就insert.

 

 

Select语句:

选择(选择行),投影(屏蔽列),连接。

Select [可选] {*,}from table;

 

Select from 是必须的,其它都是可选的。

 

建议关键字大写,其它小写。

Clause:子句(不完整的语句)。

规矩是给开发人员定的。

尽量用小写。

sql语句中用数学表达式。+-*/,可以对列进行运算。可以用()设定优先级。

Null值:不等同于0和空格,数学表达式中有一个NULL值,则运算结果为NULL

定义一个列的别名。可以用AS关键字。操作时一般用缩写,取别名为了阅读方便。如果别名中包括空格或者其他特殊符号,需要用“”将别名包含起来,如果不引起来,都显示默认大写。如果想原样显示,就用“”。AS可以写也可以不写。

 

Alter session set NLS_DATE_LANGUAGE = AMERICAN;

把日期格式改为美式。

 

串接操作符:用||连接

文字字符串:必须用‘’包含。可以放中文

重复行:select distinct deptno from emp;是用排序实现的,效率低,能不用就不用。可以用select deptno from dept;提高效率,会出现没有的no,可以在程序中编写代码去掉。deptnodept中是主键,在emp中是外键,dept 是主表,emp是从表。

 

Sqlplus命令可以缩写的,sql命令不可以缩写

DESC:显示表的信息

Show line

Set line 120,

List:显示缓冲区的命令,简写为l

/:执行缓冲区的命令。

 

Show pagesize

Set pagesize 30

执行完这两个命令,缓冲区的命令仍然是select ..;

 l显示缓冲区的命令,多行的命令,可以只改错的那一行。例如:2 from empt,再用l显示修改后的命令。改完以后用/执行。

 

2*,表示2是当前行,在当前行末尾添加,例如:用a , sal,job,mgra append,a后面要加“,”。

 

Del+行号:删除行。删完以后要保证语法正确。

Change(c),输入行号,就把行号那行置为当前行。

然后改这行。如:C / dept/emp.就只把dept改为emp,多列的时候使用,提高效率.

生成脚本文件:save d:/sql/test(要给出全路径,默认存在当前目录下)

Get d:/sql/test.sql 得到脚本文件,已经存到缓冲区,执行即可。

Ed d:/sql/test.sql,修改文件

Start d:/sql/test.sql,运行脚本。

@d:/sql/test.sql,运行脚本。比较常用,简单,专业。

 

保存结果:

Spool d:/sql/report

@d:/sql/test.sql

Spool off

test.sql脚本执行后的结果,保存起来。可以导入其它编辑器,可以用EXCEL打开。好修改

Set head off.可以把头部信息去掉

 

对数据限定和排序:

 

Select * from emp where job=clerk,’’中的要原样显示,字符串大小写敏感,日期格式敏感。因为它要进行匹配。

Null值要处理,不然进行运算或者比较时会出现严重问题,有空值的显示不出来。

 

NULL值:

判断是否为NULL,不能用=或!=,应该用IS NULL或者IS NOT NULL。降序排序时,NULL值排在最前。

 

T AND NULL--->NULL

F AND NULL--->F

T or NULL--->T

F or NULL--->NULL

 

NOT NULL à NULL,不知道的空值仍然为空值

 

NVLcomm,0)空值转换,例如,把comm这一列的值,如果是空值就转换为0

BETWEEN   AND   :包括上下限值。

IN(。。,。。,。。,。。)代替OR

LIKE ‘’:%代表0个或多个字符。_代表一个字符。Wildcard通配符。要匹配%,就用/%表示(转义)。

LIKE IT/_%ESCAPE /;ESCAPE,定义转义字符,也可以换成别的字符。

例如:LIKE IT~_%ESCAPE ~;

 

Select name from v$database;显示数据库名

Select * from v$version;显示版本号

Select host_name,instance_name,version from v$instance;

 

Spool d:/sql/dictionary

Select * from dict;显示所有的数据字典。

Spool off

 

Desc v$fixed_table

Spool d:/sql/views

Select * from v$fixed_table order by name;显示所有的V$,数据字典

Spool off

 

Desc v$database:显示数据库的信息

Desc v$instance:显示常用的信息

Clear scr:清屏

Help index:显示所有的命令

Help append:显示命令的用途

Help recover:图形工具和网络工具尽量不使用

 

逻辑运算符:NOT AND OR

ORDER BY:ASC:升序,缺省。DESC:降序

Show user:显示用户。

Show parameter db_block_size:显示数据块的大小

想让数据每次都按一定顺序排列,一定要用order by

Connect scott/tiger:连接到数据库

排序可以以别名或者表达式排序。

也可以用列数排序(程序中不推荐使用)如order by 3;

也可以按照select列中没有的列来排序(不推荐,可读性差)

 

函数(单行和多行):

两边都转成大写或者都转成小写

如:where ename=upper(blake)改为:where upper ename = upper(blake)

操作字符串:

Round函数,from dual。因为round函数不属于任何表,只是为了完成语法结构,没有意义。

TRUNCFROM DUAL,四舍五入

MOD:取余

Select Sysdate from dual:显示系统当前时间

对日期进行操作,要把日期格式设成american.

要把字符串改成日期格式:to_date

ROWID:自动生成的行号。每插入一行就自动生成一个ID号(尽量少使用底层的东西)

隐式数据类型转换和显式数据类型转换(推荐使用)

To_char,to_date,to_number

OCA/OCP

NUMCHARDATE之间的转换

跨平台时,日期用MM格式,不要用MONMONTH,因为阿拉伯数字在任何平台都能识别

TO_CHAR(number,fmt)对数字进行格式化(规范化)

NVL(expr1,expr2)注意前后数据类型必须匹配。

DECODE类似于CASE或者IF-THEN-ELSE语句(分支语句)

函数嵌套:

单行的函数可以嵌套无限。一般嵌套到三层

多表查询:

关系数据库表中不能含有重复组

第一范式(1NF):

没有任何重复组,所有属性都依赖于主键。所有键属性都被定义。

可以把部分依赖(只依赖于部分主键,如商品号)取出来,生成第二个表

商品号在新的表中做为主键,在此表中作为外键。

引用完整性(外键)

第二范式(2NF

笛卡尔积:连接条件被忽略,第一个表中所有行与第二个表中的所有行相连接

避免笛卡尔积,一定要在where子句中加入条件

用一个连接从多个表中获取数据。。

SELECT table1.column, table2.column

FROM  table1, table2

WHERE table1.column1 = table2.column2;

等连接,非等连接,外连接,自连接

ERV:模型工具,建表效率高,要学会用开发工具

SQLDEVELOP         SQL的工具

可以对表名使用别名,只在本查询语句中生效,而且别名前后要一致

非等连接查询:条件是用BETWEEN 。。AND。。而不是用等号。

外连接:可以用外连接来查出在一个表中,不匹配连接条件的行.

外连接的符号是: (+).符号放在缺少信息的表后面,放在等号左边右边效果是一样的。

Recursive递归连接;

自连接:

SQL> SELECT worker.ename||' works for '||manager.ename

  2  FROM    emp worker, emp manager

  3  WHERE   worker.mgr = manager.empno;

表在设计时已经形成映射关系。

表名相同,是自连接,表名不同,如果where中不是=号,是非等连接,如果是=号,看有没有(+),如果有,就是外连接,没有,就是等连接。

Active Tables:设计时:操作频繁的表,活动表的列,尽可能的少。生命周期:1-3个月,从活动表中移到不常用的表中去

 

分组函数:

是用排序实现的,影响效率,尽量少用,在使用函数时最好计数,并存在临时文件中(数据仓库)

Count(),如果()里是*,表示所有行,如果加上列名,就是那一列非空值的行数

在用函数时,有时需要用NVL()对NULL值进行处理,如求平均值等,看情况而定。也可以用GROUP BY 对数据进行分组。

®     SELECT语句中,没有使用分组函数的列必须在GROUP By子句中.

®     GROUP BY后面的列可以不出现在 SELECT链中.(一般不用)

®     SELECT 语句中,任何不在聚组函数中出现的列,必须在 GROUP BY 子句中.

®     不能在 WHERE子句中对列做出限定.WHERE不能用于组函数)

®     使用 HAVING 子句来限定分组.

 

子查询:

®     子查询要包括在括号里面.

®     子查询要放在比较操作符的右边.

®     子查询中不要包含ORDER BY 子句。

®     对于单行的子查询使用单行的比较操作符

®     对于多行的子查询要使用多行的比较操作符.

SQL> SELECT  empno, ename, job

  2  FROM    emp

  3  WHERE   sal < ANY

  4       (SELECT  sal

  5          FROM  emp

  6       WHERE job = 'CLERK')

  7  AND      job <> 'CLERK';

多行子查询操作符:

IN:等于列表中的某一个值

ANY:与列表中的任意值比较      

ALL:与列表中的所有值相比较

多列子查询:

®     多列子查询返回一列或者多列数据.

®     在多列的比较中,可以进行成对或者非成对的比较。

®     多列子查询也可以在一个SELECT语句的 FROM 子句中使用。

成对:都在同一行

不成对:不一定在同一行,用AND

SELECT employee.ename, job, sal

FROM  emp employee

WHERE  employee.empno NOT IN

                             (SELECT NVL(manager.mgr,0)

                              FROM   emp manager);

要对空值进行处理,这个命令是找出不是管理者的员工

SQL> SELECT  a.ename, a.sal, a.deptno, b.salavg

  2  FROM    emp a, (SELECT   deptno, avg(sal) salavg

  3                  FROM     emp

  4                  GROUP BY deptno) b

  5  WHERE   a.deptno = b.deptno

  6  AND     a.sal > b.salavg;

FROM中使用,可以提高效率,因为创建临时表和写入日志都需要占资源

把对临时表的查询语句插入FROM语句中。

替代变量:

®     使用SQL*Plus 替代变量来暂时保存值.

®     单个(&)符号

®     两个 (&&)符号

®     DEFINE ACCEPT 命令

®     SQL命令中传递变量值.

®     动态更改表头和表尾.

®     使用带有一个&号的变量值来提示用户输入一个值.

使用 SET VERIFY 命令

使 SQL*Plus显示用某个具体值替换变量名之前和之后的命令文本

®     使用单引号标志替换变量中的日期和字串值.(命令中如果不定义,输入时需要输入‘’,所以最好在命令中定义好‘’)。

SQL> SELECT     empno, ename, job, &column_name

  2  FROM    emp

  3  WHERE      &condition

  4  ORDER BY      &order_column;

Enter value for column_name: sal

Enter value for condition: sal>=3000

Enter value for order_column: ename

 

®     使用带有两个&的变量可以使得该变量可以重复使用,而不必在每次使用时提醒用户输入.(在一个语句中使用几个相同变量,有缺陷,下次使用时系统不问就使用上次的,所以需要先取消原来的,undefine,先用define查看)

例如:

SQL> SELECT     empno, ename, job, &&column_name

  2  FROM    emp

  3  ORDER BY      &column_name;

 

®     可以使用下面的两个 SQL*Plus 命令来预定义用户变量:

®     DEFINE: 创建 CHAR类型的用户变量。

®     ACCEPT: 读取用户输入并把它存在一个变量里面。

®     当使用DEFINE命令来定义一个包含空格的变量时,要用单引号将该变量括起来。

ACCEPT命令:当接收用户输入时,创建可定制的用户提示。(存成脚本)

明确地定义 NUMBER或者DATE类型的变量。

出于安全方面的因素,隐藏用户的输入。

ACCEPT   dept PROMPT 'Provide the department name: '

SELECT   *

FROM      dept

WHERE     dname = UPPER('&dept')

/

 

®                                         一个变量将保持在被定义的状态,直到:

®                                         使用 UNDEFINE 命令将它清除

®                                         离开 SQL*Plus

®                                         可以用DEFINE 命令验证所做的改变.

®                                         如果要定义在每一次会话中都要用到的变量, 改变login.sql(自己写的) 文件,这样在每一次启动时,变量就创建了.

用记事本创建一个login.sql文件,里面写要设置的sql语句,在DOS窗口中,在此文件所在的目录下进入:sqlplus scott/tigerlogin.sql文件中的语句就被执行了。因为在进入sqlplus时,它先去查询有没有login.sql文件,如果有,就执行里面的语句。如果要在图形界面中也执行文件,必须把login.sql文件放在C:/oracle/product/10.2.0/db_1/BIN目录下。

Show all:显示所有参数。都可以用SET设置

Pagesize:可以控制输出或打印的行数

Select * from v$controfile;查看当前用户的文件

Desc v$controfile

Col name for a55

Select * from v$logfile;查看日志文件

Desc v$logfile

COLUMNCol member for a55:设置列的宽度,增强可读性

Show parameter pfile:显示当前数据库安装在哪个目录下

 

TTITLETOPTITLE/BTITLEBUTTONTITLE)设置表头和表尾

COLUMN 命令,在select语句上面

®     控制列的输出

 

®     CLE[AR]: 清除掉所有的列格式

®     FOR[MAT] format: 使用格式模型来改变列的显示。

®     HEA[DING] text:设置列头

®     JUS[TIFY] {align}: 将列头对齐到左边、中间、或者右边。

 

COLUMN ename HEADING 'Employee|Name' FORMAT A15Name换行显示,格式为15个字节)

COLUMN sal JUSTIFY LEFT FORMAT $99,990.00(左对齐,设置数值格式)

COLUMN mgr FORMAT 999999999 NULL 'No manager'NULL值显示no manager

 

使用BREAK语句时,要ORDER BY。不然没意义

 

1. 创建 SELECT 语句命令.

2.  保存 SELECT命令到一个脚本文件.

3.  将文件载入到一个编辑器.

4.SELECT 命令前面增加格式语句.

5.验证跟在SELECT 语句后面的结束字符(;或者/)。

6.SELECT 语句后清除请除掉格式命令.

7.  保存脚本文件.

8.  键入START filename 来执行脚本.

 

DML数据操作语言:

INSERT:插入一行,没有办法控制插入行的位置,日期和字符符要用‘’。

在使用DML时,先建一个临时表,在临时表里操作

Create table emp_dml

As select * from emp;

 

Create table dept_del

As select * from dept;

 

如果表做烂了,挽回方法:

DBA用户运行scott.sql(维护脚本)脚本

C:/oracle/product/10.2.0/db_1/RDBMS/ADMIN目录下面

 

带有子查询的INSERT

®     不要使用 VALUES 子句.

®     子查询中的列要与INSERT子句中的列相匹配.

UPDATE:修改命令,一定要加WHERE,不然会修改所有记录

SETWHERE里都可以有子查询。

DELEWHERE语句中也可以放子查询

完整性约束,外键可以为空,但是不能指向不存在的记录。

数据库事务:(比如:取钱存钱,要么成功,要么放弃,不能存在中间状态)

®     要么全部完成,要么全部废弃的操作集合。

®     一个事务可以包含下列语句:

®     对数据做出一致性修改的DML语句。

®     一个 DDL 语句

®     一个 DCL语句

®     以第一个可执行的 SQL 语句开始。

®     以下列情况结束:

n执行COMMIT 或者 ROLLBACK 语句

n执行DDL或者 DCL语句

n用户退出

n系统崩溃

COMMIT(提交)和ROLLBACK(回滚)语句的优点

®     保证数据的一致性

®     在数据永久改变之前,检查数据的改变

®     对逻辑相关的操作进行分组

®     在下列环境下,一个自动提交发生:

®     处理DDL语句

®     处理DCL 语句

®     SQL*Plus正常(命令退出)退出(直接点关闭不算正常退出,所以不提交), 而没有明确指定COMMIT或者 ROLLBACK

®     SQL*Plus中断或者系统失败时自动进行回滚.

COMMIT ROLLBACK之前的数据状态

®     之前的状态可以被恢复.

®     当前的用户可以用SELECT语句来查看DML操作后的结果.相同用户,不同连接,也看不到结果)。

®     其它用户看不到当前用户使用 DML语句进行数据操纵的结果.

®     产生改变的数据被加锁,其它用户不能改变这些行.

COMMIT之后的数据状态

®     数据的改变将被永久的反应到数据库中去.

®     事务前面的数据状态将被永久地丢弃.

®     所有的用户可以查看结果.

®     加在产生改变的行上的数据被解锁; 这些行对于其他用户是可用的.

®     所有的保存点被释放.

回滚后的数据状态

®     使用 ROLLBACK语句丢弃所有的数据改变.

®     数据的改变失效.

®     事务之前的数据状态改变.

®     在改变行的上的锁被释放.

回滚到某个标记

®     使用 SAVEPOINT语句在当前事务中产生一个标记.

®     使用ROLLBACK TO SAVEPOINT语句回滚到那个标记.

®     Oracle :

®     在并发事务之间,阻止可能产生的破坏性相互影响。

®     不需要用户进行干预,自动使用。

®     在事务期间使用,事务结束时释放。

®     有两种基本的模式:

®     排它

®     共享

大规模的DELE要慎用,最好裁成几段来做。因为太影响效率。它要把所有的DELE记录写到回滚段里面。不要等都做完了再提交,量大时要分段提交。

Show autocommit:默认是关的

Set autocommit on:每一条都自动提交(不推荐使用)

 

 

数据库对象:

创建表。

Cat:表的别名。

Oracle数据库中的表

®     用户表

®     由用户创建和维护的一系列表的集合

®     包含用户的信息

®     数据字典

®     Oracle 服务器创建和维护的一系列表的集合

®     包含数据库的信息

SELECT * FROM user_tables;描述用户拥有的表

SELECT DISTINCT object_type FROM   user_objects;查看用户所拥有的数据类型

select * from user_catalog;查看用户拥有的表/视图/同义词/序列

user_开头的:只能看你自己的

all_开头的:授权的

dba_开头的:所有的

 

CREATE TABLE    dept30

  2 AS
  3   SELECT    empno, ename, sal*12 ANNSAL, hiredate
  4   FROM     emp
  5   WHERE    deptno = 30;

使用子查询来创建一个表

 

Connect system/manager as sysdba:进入dba用户

Select name,created,log_mode,open_mode from v$database;

非归档模式

 

主要靠冗余保护,次要靠备份保护

日志文件/控制文件最好分不同的位置放,为了安全

Archive log list:查询归档文件的信息

Select username,created from dba_users;得到所有的用户信息

Show parameter pfile

看是二进制还是十六进制,spfile是二进制

VARCHAR2size)变长,未知的长度用变长(尽量255以下)

CHARsize)定长,确定的长度用定长,如性别

 

SQL> SELECT name, created, log_mode, open_mode

  2  FROM v$database;             

得到数据库的信息

col host_name for a15   对输出进行了格式化

SELECT host_name, instance_name, version

  2  FROM v$instance;

 

运行公司Oracle数据库的计算机的主机名,Oracle数据库的实例名及Oracle数据库管理系统的版本

SELECT *

  2  FROM v$version;

Oracle数据库管理系统的版本

SELECT * FROM v$controlfile; 来获取控制文件名字

 

SELECT group#, members, bytes, status, archived

  2  FROM v$log;

Oracle数据库的重做日志的配置信息

 

SELECT *

  2  FROM v$logfile;

每个重做日志(成员)文件所存放的具体位置

 

archive log list

Oracle数据库的备份和恢复策略和确定归档文件的具体位置

 

col tablespace_name for a15

select tablespace_name, block_size, status, contents, logging

  2  from dba_tablespaces;

Oracle数据库中到底有多少表空间以及每个表空间的状态

 

col file_name for a40

SELECT file_id, file_name, tablespace_name, status, bytes

  2  FROM dba_data_files;

每个表空间存在哪个磁盘上以及文件的名字等信息

 

SELECT username, created

 2  FROM dba_users;

Oracle数据库系统上到底有多少用户和都是什么时候创建的

 

数据类型:LONG/LONG RAW尽量不用。效率低,尽量用LOB

数据库中有多媒体信息,单独放,给每个信息一个ID,把ID放在表中,用的时候再JOIN

如果列是表达式,一定要给别名。如果是函数也要给别名,因为表的列名不能是表达式,也不能是函数。

ALTER

Truncate table;删除表中的所有数据行。释放表中的空间,不能回滚。DELETE可以回滚,因为并不立即释放空间

Comment:加注释,清空用‘’;

®     注释可以通过数据字典视图进行查询.

®     ALL_COL_COMMENTS

®     USER_COL_COMMENTS

®     ALL_TAB_COMMENTS

®     USER_TAB_COMMENTS

Create global temporary table 。。 as ..:创建临时表。只在事物进行或会话期间存在。数据上没有DML锁,不做日志。自动清理。效率高,维护成本低。缺点:数据不同步(适合数据仓库,数据基本不变的表)

 

Rename 。。to ..:改名字(尽量不用,推荐使用别名)。

 

约束触发器存储过程

 

约束:

NOT NULL,非空约束

UNIQUE,唯一约束

PRIMARY KEY,主键约束

FOREIGN KEY,外键约束

CHECK,定义一般性约束

在数据字典中查看约束

命名格式:表名_列名_约束名(推荐)。

约束根据公司的管理规则来定。

唯一键值约束,允许输入NULL值,因为NULL值和NULL值不是相等的

主键约束,唯一+NOT NULL

外键约束:外键可以为空,但是必须指向有意义的记录

 

外键约束关键字

®     FOREIGN KEY:   

®     定义子表中的列为外键。

®     REFERENCES:

®      标记外键所要参考的父表和列

®     ON DELETE CASCADE:

®     允许在删除父表的列的同时,删除子表的列。

 

CHECK 约束

®     定义每一列所要满足的条件

®     CHECK约束中不允许的表达式:

®     参考 CURRVAL, NEXTVAL, LEVEL, ROWNUM这样的伪列

®     调用 SYSDATE, UID, USER, USERENV函数

®     参考其它列值的查询

 

查到所有表。Select * from cat

查到表结构。Desc tablename.

查出所有约束/查出约束依赖的列。User_constrain(得到表和表之间的关系,由此还原结构,导出ER-MODEL

 

外键约束:insert有问题时,在子表查。Dele有问题时,在母表查。

Update的影响(比较复杂):比如把88改成44,把44改成88,可以先改成NULL

视图:尽量不使用DML操作。

FORCE:可以没有基表(大型项目,为了方便协调)。NOFORCE:必须先有基表

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view

  [(alias[, alias]...)]

AS subquery

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ ONLY];

 

 

 

 

视图:

®     可以对简单视图进行DML操作.

®     如果含有如下情况,则不能删除视图中的数据:

®     含有Group函数

®     含有GROUP BY 子句

®     含有 DISTINCT 关键字

®     含有ROWNUM 这个伪列

不推荐对视图进行DML操作。

定义视图时使用WITH READ ONLY 来保证视图不能DML操作。

删除视图不会丢失数据

内联视图:TOP-N查询,排在前面的一部分

Select rownum as rank,ename,sal

From(select ename,sal from emp

Order by sal desc)

序列号:自动增长

创建一个序列号:

Where rownum<=3;

SQL> CREATE SEQUENCE dept_deptno

  2    INCREMENT BY 1

  3    START WITH 91

  4    MAXVALUE 100

  5    NOCACHE

  6    NOCYCLE;

®     NEXTVAL 返回下一个可用的序列值.

    每访问一次,它将产生一个唯一的新值,即使对不同的用户,该值也是唯一的.

®     CURRVAL 返回当前的序列值.

    只有当NEXTVAL被访问之后,CURRVAL伪列才能包含一个值.

闪回技术:可以恢复已经删除的表

冷备:

用户和权限

Select * from session_privs;查看用户的权限

Grant create view to scott;授权给scott建立view的权限

Grant select any table to dog;授权给dog查看任何用户的表的权限

角色授权:方便管理

Select * from session_roles;查看角色。一般授权两个角色:connect/resource

select * from role_sys_privs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
孟老师 oracle笔记中记录了他在学习和应用Oracle数据库管理系统过程中的重要知识点和经验总结。这些笔记对他个人来说是非常宝贵的学习工具,并且也可以分享给其他学习者。 首先,孟老师的笔记内容包括了Oracle数据库的概述和架构。他对Oracle数据库系统的组成部分、存储结构、进程和线程等进行了详细的介绍。这使得他自己能够更好地理解Oracle数据库的运行原理,从而能够更好地进行数据库管理和优化。 其次,他的笔记中也包含了Oracle数据库的安装和配置过程。他记录了安装过程中可能遇到的问题和解决方法,还有如何正确配置数据库参数以满足具体的需求。这部分内容非常实用,它可以帮助他在以后的实际应用中更加高效地进行数据库的部署和配置。 此外,孟老师还记录了Oracle数据库的备份和恢复策略。他介绍了不同的备份方法,如完全备份、增量备份和重写备份,并指出了每种备份方法的适用场景。在笔记中,他还总结了一些关键的恢复指令和技巧,以便在意外故障发生时能够及时应对。 最后,他还在笔记中分享了一些常见问题和实践经验。这些问题和经验既包括技术层面的,如如何提高数据库性能和调优查询语句,也包括管理层面的,如如何规划数据库用户和权限管理。这些实践经验对于其他Oracle学习者来说是非常宝贵的参考资料。 总体来说,孟老师的Oracle笔记是一个非常有用的学习资源。它不仅记录了他个人的学习过程和经验总结,也为其他学习者提供了重要的参考和指导,帮助他们更好地理解和应用Oracle数据库管理系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值