Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1466718
  • 博文数量: 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, DATE和VARCHAR2是靠左对齐的 
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 
当在限制
语句NULL或NOT 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子句 
运算符的
计算次序:1 所有的比较运算符, 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函数能用于NUMBER和DATE
类型数据,不能用于字符型数据, 
ROUND(order_date, 'YEAR')
把 '23-MAY-00' 舍入为 '01-JAN-00' 
ROUND(order_date, 'MONTH')
把 '23-MAY-00' 舍入为 '01-MAY-00' 
两个日期相减结果为天数,日期减天数结果为日期,天数减日期…….什么也不是,返回错误, 
日期中RR与YY的区别,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个表,最少的连接条件是n-1。 
在外部
连接中,关键字 =和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 
函数所用的列包含空值时,空值行被忽略。 

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