Oracle学习笔记
一、 SQL
? 基本的SQL SELECT语句
1. 查询:SELECT 数据操作语句:INSERT, DELETE, UPDATE, MERGE
2. 合并:把一个表的数据合并到另一个表中去,如若数据在原表在存在则UPDATE,否则INSERT
3. 事务控制语句:COMMIT提交,ROLLBACK回滚,SAVEPOINT存储点(与ROLLBACK搭配使用,可回滚到某个存储点,否则到最初点)
4. 数据定义语句:对对象操作。TRUNCATE清除表中所有数据, CREATE 创建,DROP删除,ALTER修改
5. 权限控制语句(DCL):GRANT授予权限,REVOKE移除权限
? 单行函数
1. LOWER()强制小写
2. UPPER()强制大写
3. INITCAP()每个单词首字母大写
4. CONCAT(‘’,’’)连接函数
5. SUBSTR(str, a[,b])返回str从位置a开始的b个字符
6. LENGTH(str)返回str的长度
7. INSTR(str1, str2[,a][,b])返回str2在str1中的位置,a表示扫描的起始位置,b表示第几次出的位置
8. LPAD(col, n, ‘c’)在col列的左边补n个c字符
9. RPAD(col, n, ‘c’)在col列的右边补n个c字符
10. LTRIM()左截取
11. RTRIM()右截取
12. ascii(x)返回字符x的十进制,即ASCII码值
13. chr(x),返回ASCII码为x的字符
14. replace(x,y[,z]),将x串中的y串替换为z串并返回
15. translate(x,y,z)将x串中所出现的字符在y串中的位置替换为z串中所对应的字符并返回
16. NLS(X)返回字符X对应的类型值
17. CONVERT(STR, DEST_CHARSET[,SOURCE_CHARSET])将STR串的字符集转换为DEST_CHARSET
18. NCHR(X)返回值为X的对应国家字符,等价于CHR(X USING NCHAR_CS)返回字符X对应的NCHAR_CS字符
19. UNSTR(X)返回X串对应的UNICODE字符集
? NUMBER 数字类型函数
1. ABS(X) 返回数字X的绝对值
2. CEIL(X) 返回>=X的最小整数
3. FLOOR(X) 返回<=X的最大整数
4. MOD(X,Y) 返回X/Y 的余数,如果Y为0,则返回X
5. ROUND(X[,Y]) 返回X小数点右边Y位的X值,默认返回最接近的整数,如:ROUND(5.2123322, 2)= 5.21
? 时间类型函数
1. SYSDATE 系统时间
2. ADD_MONTHS(DATE,X) 返回日期DATE加上X个月后的值
3. CURRENT_DATE 返回当前会话时区日期, 与SYSDATE 相似。
4. DBTIMEZONE 返回数据库时区
5. LAST_DAY(DATE) 返回日期DATE在月份的最后一天日期,这个函数可以用来确定本月共有多少天
6. MONTHS_BETWEEN(DATE1, DATE2) 返回两日期相差的月数
7. NEW_TIME(DATE, ZONE1, ZONE2) 返回ZONE1时区DATE1对应在ZONE2时区的日期
8. NEXT_DAY(DATE, N) 指定日期后7天星期N的日期
? 显示转换
1. TO_NUMBER(STR [,’FORMAT_MODEL’]) 字符串转换到数字类型
2. TO_DATE(STR [,’FORMAT_MODEL’] 字符串转换到日期类型
3. TO_CHAR(DATE [,’FORMAT_MODEL’ [, nlsparams]] , 使用FM符号可以去掉年月日首位的空格或零, 如 select to_char(sysdate, ‘Fmyyyy-mm-dd’) from dual 输出为: 2012-3-2而非2012-03-02; 也可以通过双引号来格式化输出格式,如select to_char(sysdate, ‘Fmyyyy”年”mm”月”dd”日”’ from dual 输出为 2012年3月2日, 此函数不仅可以转换并输出日期串,也可以格式化输出数字格式串。
4. GREATEST(X,Y,…) 返回参数列表中最大值
5. LEAST(X,Y,…) 返回参数列表中最小值
6. user, uid 返回当前数据库用户和标识, select user, uid from dual
? 条件表达式
1. Case 表达式 when 条件 1 then 返回值1
When 条件2 then 返回值2
When 条件n then 返回值n
Else 返回值
End
2. Decode(条件, 比较值1, 返回值1, 比较值2, 返回值2,…, 返回值)
? 统计函数
1. AVG(COL)
2. CORR(X1, X2) 返回表达式X1和X2组成的集合的相关系数
3. COUNT(COL) 统计所有非空字段的总行数
4. MAX(COL), MIN(COL) 返回所有行中最大或最小值
5. SUM(COL) 统计该列所有数字总和
? 操作语句
1. MERGE INTO dest_table table_alias USING(table/view/sub_query) ON 条件
WHEN MATCHED THEN UPDATE SET AL.col1 = AL2.col1
WHEN NOT MATCHED THEN INSERT dest_table(col1, col2) VALUES(src_table.col1, src_table.col2)
2. ALTER TABLE table_name SET UNUSED(col list);
ALTER TABLE table_name DROP UNUSED COLUMNS;
DROP TABLE table_name CASCADE;
ALTER TABLE table_name ADD [CONSTRAINT]约束名 约束条件;
ALTER TABLE table_name DROP constraint约束名;
ALTER TABLE table_name PRIMARY KEY CASCADE;
ALTER TABLE table_name DISABLE constraint约束名;
ALTER TABLE table_name ENABLE constraint约束名;
ALTER TABLE table_name MODIFY (colName, colType NOT NULL);
SELECT * FROM ALL_CONSTRAINTS WHERE TABLE_NAME LIKE ‘%TEST%’;
? VIEW视图
1. 创建VIEW
CREATE [OR REPLACE] [FORCE/NOFORCE] VIEW view_name(colName colType, …)
As
子查询语句
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]]
2. 删除VIEW
DROP VIEW view_name;
? 序列
CREATE SEQUENCE sequence_name
[increment by n]//步长
[start with n]//起始点
[maxvalue n/nomaxvalue]//递增
[minvalue n/nominvalue]//递减
[cycle/nocycle]//循环
[cache n/nocache];//n 为预先生成序列号的个数,默认为20。
SELECT CURRVAL, NEXTVAL FROM sequence_name;
ALTER SEQUENCE sequence_name
increment by
maxvalue
cycle
cache;
start with 不能修