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,可以在程序中编写代码去掉。deptno在dept中是主键,在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,mgr,a 是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,不知道的空值仍然为空值
NVL(comm,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函数不属于任何表,只是为了完成语法结构,没有意义。
TRUNC:FROM DUAL,四舍五入
MOD:取余
Select Sysdate from dual:显示系统当前时间
对日期进行操作,要把日期格式设成american.
要把字符串改成日期格式:to_date
ROWID:自动生成的行号。每插入一行就自动生成一个ID号(尽量少使用底层的东西)
隐式数据类型转换和显式数据类型转换(推荐使用)
To_char,to_date,to_number
OCA/OCP
NUM—CHAR—DATE之间的转换
跨平台时,日期用MM格式,不要用MON和MONTH,因为阿拉伯数字在任何平台都能识别
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/tiger,login.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
(COLUMN)Col member for a55:设置列的宽度,增强可读性
Show parameter pfile:显示当前数据库安装在哪个目录下
TTITLE(TOPTITLE)/BTITLE(BUTTONTITLE)设置表头和表尾
COLUMN 命令,在select语句上面
® 控制列的输出
® CLE[AR]: 清除掉所有的列格式
® FOR[MAT] format: 使用格式模型来改变列的显示。
® HEA[DING] text:设置列头
® JUS[TIFY] {align}: 将列头对齐到左边、中间、或者右边。
COLUMN ename HEADING 'Employee|Name' FORMAT A15(Name换行显示,格式为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,不然会修改所有记录
SET和WHERE里都可以有子查询。
DELE:WHERE语句中也可以放子查询
完整性约束,外键可以为空,但是不能指向不存在的记录。
数据库事务:(比如:取钱存钱,要么成功,要么放弃,不能存在中间状态)
® 要么全部完成,要么全部废弃的操作集合。
® 一个事务可以包含下列语句:
® 对数据做出一致性修改的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是二进制
VARCHAR2(size)变长,未知的长度用变长(尽量255以下)
CHAR(size)定长,确定的长度用定长,如性别
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