Oracle使用手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基本介绍
1.列左对齐,字符右对齐。
2.包含空值的数学表达式的值都为空值
3.DESC[RIBE] +表明用在MANAGE中用来描述表结构。
SELECT 语句详解
ORACLE 中一个语句里面包含多个操作,这些操作并不是顺序执行的,因此,我们可以将Oracle语句拆分,逐步分析它的执行构成。下面以SELECT语句为例。
表1
表2
SELECT 语句由于执行顺序不同,因此对数据的处理方式不同。我们可以把他们分为单行操作符,多行操作符,表操作符。(不知道怎么称呼,姑且这么叫。)
表一中除了SELECT外的所有函数都是单行操作符,因此后面必须和单行数据使用。
表二中的函数+select是多行操作符,因此可以和单行数据,多行数据和分组函数一块儿使用。
ORDER BY 是对整个表进行操作,因此可以称为表操作符。
因此WHERE 后面不能加分组函数,多行数值。
由于SELECT 语句在执行过中有先后顺序,而且每一个函数都有相应的格式,因此SELECT 语句在写法上有一些要求。
如上表,在SELECT 语句中,子查询的优先级别最高因此,先调用子查询,子查询的执行顺序与一般查询一样,但是子查询的返回值被不同函数调用时,应根据函数要求返回不同的值。
如在WHERE 语句中返回单行值,如果有多行,用ANY, ALL函数一一拆分。
1.SELECT与句中先执行子查询,
2.在SELECT 语句顺序执行2.1 GROUP BY ,2.2HAVING和2.3分组函数将原表内容进行分区,浓缩。
由于使用的是原表,因此可以调用新表中没有出现的列。
GROUP BY DEPTNO HAVING AVG(SAL)>1000,是先按DEPTNO分组,再选择条件,条件中执行分组函数,因此HAVING 中可以有分组函数
3.执行SELECT语句,先执行3.1 join on WHERE逐条连接,进行条件删选,因此ON与WHERE
的条件可以互换位置。这样将两个表连接成一个表。
同样是调用原表,因此可以调用新表中没有出现的列。
然后执行SELECT
然后执行表函数ORDER BY 将表排序。
(最后将单行数据赋值:into。)
ORACLE单词及出处
调试权限:
GRANT DEBUG CONNECT SESSION TO SCOTT;
DDL 数据定义语句
用来定义数据库对象(SESSION 会话, TABLE,VIEW,SEQUENCE,INDEX,PROCEDUE, SYNONYM\USER)的语句。
包含CREATE, ALTER, DROP, COMMENT,TRUNCATE.
直接提交,不可回滚,在pl/sql块中要用动态SQL :EXECUTE IMMEDIATE表示。
如EXECUTE IMMEDIATE 'CREATE TABLE bonus1 (id NUMBER, amt NUMBER)';
,
CREATE创建
对数据库的对象创建
表和视图TABLE, VIEW
CREATE TABEL [CREATE OR REPLACE VIEW]表名(
列名数据类型DEFAULT 值constraint 名字约束类型,
CONSTRAINT 名字约束类型(类名));
用户USER
CREATE USER
IDENTIFIED BY PASSWORDS;
序列SEQUENCE
CREATE SEQUENCE 序名
INCREMENT BY 跳跃值
START WITH初始值
MAXVALUE 最大值
NOCACHE/CACHE 存入内存数
NOCYCLE/CYCLE 是否循环
索引INDEX
CREATE INDEX ON 表名(列名,可以多列)
过程PROCEDUE
CREATE PROCEDUE 过程名(参数)**参数在定义时不能指定长度。
IS \AS
定义内容;
BEGIN
执行块;
END;
同义词SYNONYM
CREATE SYNONYM FOR 对象名。
ALTER修改
对数据库的对象进行修改,包括增加列,删除列,改名列,修改类中的数据类型。ALTER TABLE 表名ADD\DROP\RENAME\MODIFY COLUMN;
ALTER 也可以对用户进行修改
ALTER USER
IDENTIFIED BY NEW PASSWORD;
FUNCTION 函数。
单行函数只对表的一行数据进行数据操纵,返回一个值的语句
字符函数UPPER/ LOWER/ INT(ION)CAP(字符串)
CONCAT(字符A,字符B)等价于字符A||字符B :连接
SUBSTR(CHAR A,NUM M,NUM N):截取B如果不写默认为
返回从A中截取索引从M到N的字符串
** 在ORACLE中索引从1开始,且前后都是闭区间。
LENGTH(字符串A)返回字符串A的长度
INSTR(CHAR A,CHAR B [,NUM M,NUM N])后面两个默认为1。
返回从A中从左边第M个字符开始索引B字符在A中出现的第N次的索引。
LPAD | RPAD左|右填充(CHAR A,NUM M,CHAR B)
返回:填充了M长度字符,长度不足则用B补充,长度长了截取。
TRIM(CHAR A FROM CHAR B)||(字符:表示修剪空格):修剪
TRIM从两端开始连续修剪B直到下个不是A。
RTRIM(CHAR A,CHAR B)从右边连续修剪A直到下个不是B,不写默认是空格。
单个字符有效
LTRIM(CHAR A,CHAR B)从左边连续修剪A直到下个不是B,不写默认是空格。
单个字符有效
REPLACE(CHAR A,CHAR B,CHRA C):在A中将B替换成C **全部替换TRANSLATE (CHAR A,CHAR B,CHRA C):变换
将A的B每一个字符换成相应的C的索引相同的字符,C如果没有相应的,用NULL代替。数字函数
ROUND (数字M,整数N) :将M在小数点后N位处四舍五入
TRUNC (数字M,整数N):将M在小数点后N位处截短
N=小数点后第几位,如果N是复数,代表小数点左边相应的位数。