日期:2014-05-16 浏览次数:20573 次
Oracle语句总结
1. 简单的SELECT 语句? as
SELECT 字段名1 [AS] '字段名1 解释' FROM table;
2. 处理NULL
NVL函数可把NULL转换成其它类型的符号
编程技巧: NVL函数在多条件模糊查询的时候比较有用
NVL函数可返回多种数据类型:
返回日期 NVL(start_date,'2002-02-01')
返回字符串 NVL(title,'no title')
返回数字 NVL(salary,1000)
3. 使用SQL*PLUS(1)
desc table; 显示表结构
select * from tab; 查看用户下所有的表
set pause on; 可以使大量结果集在用户按“Enter”(回车)后翻页
set pagesize 100; 设定SQL语句返回结果集一页的行数100, 默认值是14
set linesize 100; 设定SQL语句返回结果集一行的宽度100, 默认值是80
4. SQL*PLUS里规定字段的显示格式
规定数字的显示格式
SQL>column 字段名 format 99999999999;
SQL>column 字段名 format 999,999,999,999;
SQL>column 字段名 format a数字 [word_wrapped];
规定long字符的显示宽度
SQL>set long 200;
规定字段名的显示内容
SQL> column 字段名 heading '字段名显示内容';
SQL> set heading off; 查询时不显示字段名称
规定字段的对齐方向
SQL> column 字段名 justify [left | right | center];
清除字段的格式
SQL> column 字段名 clear;
5. SQL*PLUS里规定字段的显示格式例子
SQL> column last_name heading 'Employee|Name' format a15;
SQL> column salary justify right format $99,999.99;
SQL> column start_date format a10 null 'Not Hired';
说明:如果start_date为null, 显示字符串'Not Hired'
6. 判断题(T/F)
(1). SQL command are always held in sql buffer. [T]
(2). SQL*PLUS command assit with query data. [T]
5
J2EE @ zxw
SQL*PLUS命令只控制SELECT结果集的显示格式及控制文件.只有SQL命令能访问数据库.
二、限制选择行
1. 按指定的规则排序
SELECT expr FROM table [ORDER BY {column, expr} [ASC | DESC] ];
默认的排序是ASC升序(由小到大)
还可以ORDER BY 字段名的位置[1]| [2] ASC| DESC;
2. 用WHERE限制选择行(1)
比较操作符 = > < >= <= != <> ^= 与NULL比较不能用上面的比较操作符 ANY SOME
ALL
SQL操作符 BETWEEN … AND… IN LIKE IS NULL
NOT BETWEEN … AND… NOT IN NOT LIKE IS NOT NULL
逻辑操作符 AND OR NOT
3. 用WHERE限制选择行(2)
比较顺序(可以用括号改变它们的顺序)
(1). = < > >= <= in like is null between
(2). and
(3). Or
4. LIKE操作
% 零到任意多个字符 _ 一个字符
例如: 字段名 like 'M%' 字段名 like '%m%' 字段名 like 'job_'
如果要找含下划线的字符, 要加反斜线 例如:字段名 like '%X/_Y%' escape '/'
5. 日期字段的比较
举例:
日期字段 between to_date('2001-12-12','YYYY-MM-DD') and to_date('2002-02-01','YYYY-MM-DD')
日期字段> to_date('2001-12-12','YYYY-MM-DD') and日期字段<=
to_date('2002-02-01','YYYY-MM-DD');
6. 不能用到索引的比较操作符
???? IS NULL
IS NOT NULL
LIKE '%m%'
三、单行函数
1. 数字函数
ABS 取绝对值 POWER 乘方 LN 10为底数取0
SQRT 平方根 EXP e的n次乘方 LOG(m,n) m为底数n取0
数学运算函数:ACOS ATAN ATAN2 COS COSH SIGN SIN SINH TAN TANH
CEIL 大于或等于取整数
FLOOR 小于或等于取整数
MOD 取余数
ROUND(n,m) 按m的位数取四舍五入值如果round(日期): 中午12以后将是明天的日期.????
round(sysdate,'Y')是年的第一天
TRUNC(n,m) 按m的位数取小数点后的数值如果trunc(日期), 确省的是去掉时间
6
J2EE @ zxw
2. 字符函数
CHR 按数据库的字符集由数字返回字符
CONCAT(c1,c2) 把两个字符c1,c2组合成一个字符, 和 || 相同
REPLACE(c,s,r) 把字符c里出现s的字符替换成r, 返回新字符
SUBSTR(c,m,n) m大于0,字符c从前面m处开始取n位字符,m等于0和1一样,
m小与0,字符c从后面m处开始取n位字符
TRANSLATE(c,f1,t1) 字符c按f1到t1的规则转换成新的字符串
INITCAP 字符首字母大写,其它字符小写
LOWER 字符全部小写
UPPER 字符全部大写
LTRIM(c1,c2) 去掉字符c1左边出现的空的字符c2
RTRIM(c1,c2)
TRIM(c1,c2) 去掉字符c1左右两边的空字符c2
LPAD(c1,n,c2) 字符c1按制定的位数n显示不足的位数用c2字符串替换左边的空位
RPAD(c1,n,c2)
3. 日期函数
ADD_MONTHS(d,n) 日期值加n月
LAST_DAY? 返回当月的最后一天的日期
MONTHS_BETWEEN(d1,d2) 两个日期值间的月份,d1<d2 返回负数
NEXT_DAY? 返回日期值下一天的日期
SYSDATE 当前的系统时间
DUAL是SYS用户下一个空表,它只有一个字段dummy
4. 转换函数(1)
TO_CHAR(date,'日期显示格式')
TO_CHAR(number) 用于显示或报表的格式对齐
TO_DATE(char,'日期显示格式')
TO_LOB 把long字段转换成lob字段
TO_NUMBER(char) 用于计算或者比较大小
4. 转换函数(2)
to_date里日期显示格式
YYYY 年 YEAR YYY YY Y
Q 季度
MM 月 MONTH MON
W 星期 (week of month) WW, IW (week of year)
(说明:周计是按ISO标准,从1月1日的星期数到后面七天为一周,不一定是从周一到周日)
DD 日 DAY DY
HH24 小时 HH12 HH
MI 分钟
SS 秒
如果想固定日期的显示格式可以在数据库的参数文initorasid.o