附录:
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)
附加:
--------------------------------------------------------------------------------
-----------------------------------------------------------------------------------