附录:
1、SQL 简介
2、SQL 操作符
3、Oracle 常用数据类型
4、Oracle 函数
5、[转] Oracle 常用SQL语法
字符串函数
LENGTH() 字符长度
LENTTHB() 字节长度;一个汉字内存中占用 2字节
LTRIM、RTRIM、TRIM
截串
SUBSTR(表达式,位置,长度)
Oracle 无左右取串函数,但可以使用变通方式完成。
左取串: SUBSTR('abcdefg', 1, 3)
右取串: SUBSTR('abcedfg', LENGTH('abcdefg')-3+1, 3)
时间函数
sysdate、current_day
设置时间格式: ALERT SESSION SET NLS_DATE_FORMAT = 'dd-mon-yyyy HH:mi:ss'
求时间: NEXT_DAY(sysdate, '星期三')
转换函数
TO_CHAR(sysdate, 'yyyy-mm-dd hh24:mi:ss')
TO_DATE('12-3月-04')
TO_NUMBER('333') 必须是能转换
TO_TIMESTAMP('2007-10-10 00:00:00.0', 'yyyy-mm-dd hh24:mi:ssxff') 转换为时间戳格式
聚合函数
count(*) :查询表行数
count(column) :查询列行数,会忽略空值,注意
ps.聚合函数不能做为 where 里查询条件出现(因为聚合是对所有查询结果的运算?)
其他函数
USER:当前用户
SUM(DECODE(SEX, '男', 1, 0)) 筛选出行被为男的记录 并加1
SUM(DECODE(SEX, '女', 1, 0)) 筛选出行被为女的记录 并加1
NVL(a2, '非输入') 布尔值判断,利用系统对空值进行处理
SELECT DISTINCT a1 FROM aa
表连接
内连接:查询时,把能够公共匹配的数据完全查询出来。
FROM e, d WHERE e.id = d.id
标准: FROM e JOIN d ON e.id = d.id
外连接:不完全匹配
左连接: FROM e JOIN d ON e.id = d.id(+)
左边数据全部显示,右边匹配不上的部分用空值代替
右连接: FROM e JOIN d ON e.id(+) = d.id
(同理左连接)
子查询
无关子查询
相关子查询
EXISTS(): 根据子查询返回是否存在数据来决定父查询。
UNION: 将多个查询出来的信息行整合成一个结果集。
SELECT eid, ename FROM e
UNION
SELECT id, name FROM d
ps.UNION 查询出来的重复记录不会显示,UNION ALL 则显示全部(包括重复的)。
INTERSECT: 返回查询出来信息行的交集,Oracle 独有。
利用查询结果批量更新:
INSERT INTO e(eid, ename) SELECT id, name FROM d
或者利用查询结果创建新表:
CREATE TABLE ttt AS ttt (SELECT * FROM e)
附加:
--------------------------------------------------------------------------------
-----------------------------------------------------------------------------------