Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1402246
  • 博文数量: 416
  • 博客积分: 13005
  • 博客等级: 上将
  • 技术积分: 3297
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 16:26
文章分类

全部博文(416)

文章存档

2014年(1)

2013年(4)

2012年(46)

2011年(64)

2010年(12)

2009年(4)

2008年(40)

2007年(187)

2006年(58)

分类: Oracle

2006-07-29 16:55:50

ORACLE PL/SQL使用经验总结-

写基本SQL 
所有包含空或与空的表达式, 
在各数据型中,只有NUMBER数据型的默认显示是靠右对齐的,而CHAR, DATEVARCHAR2是靠左对齐 
DISTINCT
关键字的位置跟在SELECT后,一旦使用,查询返回的数据不含冗余行。 
查询中包含Primary Key 键约束的列,返回的数据不冗余行,因PK束保列数据是不重的。跟使用了DINSTICT关键字的作用是一的。 
SQL*PLUS 
命令在SQL*PLUS境中控制查询结果的格式,和操文件。 
START 
命令用以行一个已存的文件 
SAVE
命令用以建一个文件 
EDIT
命令用以编辑编辑已存文件的内容 
CHANGE 
SQL*Plus编辑命令,用于在当前一行把旧文段转换为新文段 
DEL 
命令用以除文本中一行或多行文字 
SPOOL
命令用以把查询结存在一个已有文件中,注意与SAVE 
GET
命令用以一个文件的内容写一个SQL 
SPOOL OUT
命令用以把文件的送到系打印机 
DML
命令: UPDATE, INSERT, DELETE 
DDL
命令: ALTER, CREATE, DROP,TRUNCATE, RENAME, 
DCL 
命令: GRANT, REVOKE 
当在限制
NULLNOT NULL 关键,不能写成 = NULL  <> NULL , 要写成 IS NULL NULL不是一个 
Selection
选择表里的行(横向),Projection(投影)选择表中的列(向) 
ORDER BY 
指令用于排序,如果指令中出多列,先按第一列排序,然后第二列…… 
DESCRIBE 
命令用于示表和视图中的定,包括列名,列的数据型和度,有被 
NOT NULL
束的列。 
NVL(expression1, expression2) 
NVL 
函数用以把一个空值转换为一个实值,如: 
NVL(100/quantity, 0) ,
要是quantity
函数返回一个0 
表达式中出
,或任何与空较结果都 
数据行限制和排序 
当一个表被予表名(不名)在所有能用表名的地方使用,包括SELECT,WHERE GROUP BY 子句。 
名不能用于WHERE子句 
运算符的
算次序:所有的比运算符, 2 AND , 3 OR 
NULL
不能跟任何,所以不能使用=NULL>NULL, !=NULL, 只能用IS NULL . 
ORDER BY 子句中
多列排序,会按先按跟其后的第一列升序排,再按第二列…….    
在升序排列中,NULL排在最后。 
行函数 
常用的行函数有: 
LOWER(column\expression) ,UPPER(column\expression) ,INITCAP(column\expression), 
CONCAT (column1\expression1,column2\expression2) ,SUBSTR(column\expression,m[,n]), 
LENGTH(column\expression),NVL(column1\expression1, column2\expression2) 
数字函数:ROUND(column\expression, n),TRUNC(column\expression,n), MOD(m,n) 
日期函数:MONTHS_BETWEEN(date1, date2) , ADD_MONTHS(date, n) , NEXT_DAY(date,’ char) , 
 LAST_DAY(date) , ROUND , TRUNC 
重点: 
SUBSTR (column\expression, m[,n]) 
用于
字符串行截取操作,从第m个位置始,把其后的连续n个字符的部分截取下来,如果m负值从末尾算。 
LENGTH(column\expression) 
用于返回表达式中的字符数,注意返回的是NUMBER 
NVL(column1\expression1, column2\expression2)
用于把列中的空
值转另一个,但该值数据型必与列中数据型一,否使用转换函数。如:NVL (id“no number”)的, 正确:NVL(TO_CHAR( id)“no number”) 
ROUND
TRUNC函数能用于NUMBERDATE
型数据,不能用于字符型数据, 
ROUND(order_date, 'YEAR')
 '23-MAY-00' 舍入 '01-JAN-00' 
ROUND(order_date, 'MONTH')
 '23-MAY-00' 舍入 '01-MAY-00' 
两个日期相减天数,日期减天数日期,天数减日期…….也不是,返回错误 
日期中RRYY的区RR格式期作似于舍入的操作,YY格式日期作似于截取的操作 
Current year specified date RR format YY format 
1995 27-oct-95 1995 1995 
1995 27-oct-17 2017 1917 
2001 27-oct-17 2017 2017 
2001 27-oct-95 1995 2095 
示多个表中的数据 
不等值连接的(+)加在不含对应值的一,但返回的将是等号另一列的不符合接条件的数据。 
不等
值连接的典型例子:与A表中的a对应B表中的b列包含有空的行,而且些行需示。 
要在SELECT句中使用等值连接来n个表,最少的接条件是n1 
在外部
接中,关键 =和and可以使用,in or 不可使用 
使用
函数集合数据 
常用函数:AVG(DISTINCT|ALL|n),COUNT(DISTINCT|ALL|expr) , MAX(DISTINCT|ALL|expr) ,                          
 MIN(DISTINCT| ALL | expr) ,  STDDEV(DISTINCT| ALL | n) , SUM(DISTINCT| ALL | n) , 
VARIANCE(DISTINCT| ALL | n) , 
GROUP BY 
子句中不能使用列 
SELECT 
子句中出多个列和函数函数外的所有列必GROUP BY 子句中。 
限制
函数不能用WHERE子句,只能用HAVING子句 
WHERE
子句
整个查询限制,HAVING对组函数限制, 
MIN函数用于字符型的列,列中数据第一位字母最前的会示。 
查询语句的 
SELECT 
FROM 
WHERE 
GROUP BY 
HAVING 
ORDER BY 
COUNT 
函数所用的列包含空值时,空行被忽略。 

阅读(1808) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~