(特殊的命令,写SQL的时候这些命令会变色 或者 是一些特定的用法)
-- SQL执行顺序的几个关键字
约束是实施引用完整性的重要部分;
索引可改善数据检索的性能;
触发器可以执行运行前后的处理;
安全选项可以用来管理数据访问;
#(一)查询顺序
SELECT 查询列表 7
FROM 表1 别名 1
INNER JOIN 表2 别名 2
ON 连接条件 3
WHERE 筛选条件 4
GROUP BY 分组条件 5
HAVING 筛选条件 6
ORDER BY 排序 8
LIMIT 起始,索引 9
SQL Select语句完整的执行顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序
--- 聚合函数
MAX() 求最大值
MIN() 求最小值
AVG() 求平均值
COUNT() 求统计个数
SUM() 求和
--- 转换函数的关键字
--文本,数字,日期的转换
TO_CHAR()
TO_DATE()
TO_NUMBER()
-- 其他函数的关键字
CASE 例子 ,案例
WHEN 当 .. 的时候
THEN 那么 ,则..
END 结束, 结尾
DECODE() ORACLE特有的函数 ,主要做 等值判断 ,功能类似 CASE WHEN
NVL 给“NULL”赋值 NVL(A1,A2),A1 为NULL,返回A2,不为空返回A1;
NVL2(A1,A2,A3) A1为NULL时,返回A3,不为NULL返回A2;
LENGTH () 表示字符串长度
LENGTHB() 表示字符串的字节长度
--- 分析函数
MAX()OVER(PARTITION BY A ORDER BY B)
OVER() 分析函数的标志性命令
PARTITION BY 分组
ORDER BY 在分析函数中 可以排序 + /*累计计算 */
LAG() 前N个
LEAD() 后N个
ROW_NUMBER() 数字排序不考虑并列 -------------- 1,2,3,4
RANK() 排序,排名考虑并列 ,并且相同排名的下一个 空出排名 1,2,2,4
DENSE_RANK() 排序,排名考虑并列 ,相同排名的下一个不会空出排名 1,2,2,3
-- PLSQL 部分
CREATE 创建
OR 或
REPLACE 替换 ,更新
--PROCEDURE 存储过程
--FUNCTION 函数
IS / AS 是... / 像...
BEGIN 开始
END 结尾
--CURSOR 游标
OPEN 打开
CLOSE 关闭
FETCH 赋值
EXIT 退出
--EXISTS EXISTS(子查询语句):判断子查询是否有结果返回,如果有,
则返回外部SELECT语句中的相应结果,如果没有,则不返回
性能优于IN
SELECT *
FROM EMP
WHERE EXISTS (SELECT 1 FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO)--WHERE E.ENAME=D.DNAME);
TRUE 布尔值,真 ;
FALSE 布尔值,假 ;
INTO 赋值... , 用变量引用...
LOOP 循环中的 LOOP 循环 ,这是一种死循环,必须在 循环内 写清楚终止循环的条件。
END LOOP 结束循环
IF 条件控制的,如何 ...
ELSIF 条件控制的,或者 ...
ELSE 条件控制的,其他结果的默认值 ...
END IF 条件控制的,条件控制结束
FOR .. LOOP 循环中的 FOR 循环 ,范围循环
WHILE .. LOOP 循环中的 WHILE 循环 ,条件循环
--EXECUTE 动态SQL的,执行
IMMEDIATE 动态SQL的,立即
/*EXECUTE IMMEDIATE'TRUNCATE TABLE 表名';
EXECUTE IMMEDIATE'DML语句';*/
--------- ORACLE中的常用数据类型
VARCHAR2 字符串
DATE 日期
NUMBER 数字
DATA 数据
DATABASE 数据库
DATABASE LINK 数据库连接
-------常用的 DDL ,DML ,DQL ,TCL 命令
DDL 数据库定义语言
CREATE 创建
DROP 删除
ALTER 修改
TRUNCATE 清空
TABLE 表
DML 数据库的管理语言
INSERT 插入
UPDATE 修改
SET 设置
DELETE 删除
DCL 数据库控制语言
GRANT 授予权限
REVOKE 收回权限
TCL 数据库的事务控制
COMMIT 提交事务
ROLLBACK 回滚事务
--- NULL 值 以及类似的判断
NULL 空值
IS NULL 判断为空
IS NOT NULL 判断不为空
IN 在.. 范围内
NOT IN 不在..范围内
= ANY = 任意值
= ALL = 全部值
BETWEEN .. AND 在 ... 到 ... 之间
NOT BETWEEN .. AND 不在 ... 到 ... 之间
LIKE 模糊查询、模糊匹配 ,像 .. 一样
NO LIKE 模糊查询、模糊匹配 ,不像 .. 一样
EXISTS 判断真或者假 ,判断函数计算结果为真 ,成立,有结果
NOT EXISTS 判断真或者假 ,判断函数计算结果为假 ,不成立,没有结果
------------定义变量
%TYPE 变量定义, 变量的数据类型
%ROWTYPE 变量定义, 变量 行 的数据类型
----------- 关联查询的关键字
INNER JOIN 内 关联
LEFT OUTER JOIN 左 外 关联
RIGHT OUTER JOIN 右 外 关联
FULL OUTER JOIN 全 外 关联
WHERE 关联后的过滤条件 ,在 ORACLE中也是关联的关键字
ON 关联条件的关键字 ,在SQL写法中存在,ORACLE 中没有这个关键字
-- 去重相关的关键字
GROUP BY 分组去重
ROWID 伪列去重
DISTINCT 直接对结果集去重
UNION 集合运算去重
ROW_NUMBER()OVER() 分析函数去重
ROWNUM 伪列 用于算排名
---- 数字函数
TRUNC(X,Y) 直接截取 TRUNC(888.992,2),‘2’默认从小数点后计数,首位为‘0’,‘-2’从小数点前计数,首位为‘1’
ROUND() 四舍五入截取
POWER() 求幂
MOD() 算余数
ABS() 算绝对值
--- 日期函数
LAST_DAY() 取最后一天
ADD_MONTHS() 月份 + N
MONTHS_BETWEEN() 从 .. 到 ... 之间差多少个月
--- 字符函数
SUBSTR(X,Y[,Z]) 字符串截取 首位为1,默认从左到右顺序
substr(abcde,1) -- abcde
substr(abcde,1,3) -- abc
substr(abcde,2,3) -- bcd
substr(abcde,-2,3) -- de
substr(111.22,-3,3) -- .22
--
INSTR(X,Y[,M,N])定位 首位为1,默认从左到右顺序
--
TRUNC(X,Y) 直接截取 TRUNC(888.992,2),‘2’默认从小数点后计数,首位为‘0’,‘-2’从小数点前计数,首位为‘1’
trunc(888.992, 2 ) --888.99
trunc(888.992, 1 ) --888.9
trunc(888.992, -2 ) --800
trunc(888.992, -1 ) --880
--
REPLACE() 字符串替换
LENGTH() 算字符串长度 一个汉字一个字节
UPPER() 字符串转大写
LOWER() 字符串转小写
--- 集合运算
INTERSECT:交集
UNION :并集,并去重
UNION ALL:并集,但不去重
MINUS :补集