1.1安装Oracle 参考: https://www.cnblogs.com/hoobey/p/6010804.html?tdsourcetag=s_pcqq_aiomsg
1.2忘记密码处理 先修改此文件
使用net user 查看当前用户,net localgroup 查看当前用户组
查看ora_dba组是否有当前用户
当成员中没有当前用户,则使用如下命令添加到ora_dba组中。
1.3Oracle简介
推荐版本,Oracle11g。 1.4 启动Oracle服务 1.4.1启动OracleSerivceSID,SID就是数据库实例名称
1.4.2启动TNS监听服务(本地连接非必须,远程连接必须)
注意:启动顺序是先启动监听程序,再启动Oracle服务1.5连接数据库方式 1.5.1本地链接 可以不启动监听服务,直接连接
1.5.2远程连接 必须启动监听程序,否则报错误
1.6配置Net Manager 、
服务命名是标识此远程服务的唯一名称,不要重复
输入远程IP地址,端口如果有改动也需要修改。
重启服务使配置生效
如果要使用用户名密码链接成功,需要注释下面代码
错误信息如下:
1.7数据类型推荐 1.7.1字符串类型,当字符串在200个字以内使用VarChar2。 1.7.2数值类型,推荐使用Number,不推荐使用Integer,Float等。 1.7.2.1整数: Number(n)。 1.7.2.2浮点数:Number(n,m)。 1.7.2.3不确定长度:Number 1.7.3日期类型,推荐Date,如果要更精确使用TimeStamp。 1.7.4文件或大字符串,文件不推荐使用数据库存储,大字符串使用CLOB存储,可以存储4GB大小的文本。 1.8伪列(RowID和RowNum【重点】)
注意:ROWID可以唯一标识数据库中的一行,而不是表。
注意:ROWNUM在ORDER BY之前就编号了,在where条件中只能使用小于,小于等于,不等于(等同于小于)或者=1来筛选。
1.9表操作
注意:有特殊字符的别名需要加双引号。
1.10数据去重复 1.10.1通过拼接需要去重的所有列,然后使用count进行统计,大于1的排除。
1.11删除重复数据 1.11.1第一步,使用ROWID伪列作为主键来查询,用Group BY来分组,查出不重复的数据。
1.11.2第二步,删除ROWID不在子查询结果中的数据
1.12事务控制(重点)
注意:在Oracle中默认是手动提交事务。有一个保存点(mysql也有)的概念,保存点之后的操作,可以通过Rollback to 保存点名称来回滚到保存点之前的状况。1.13SQL操作符 1.13.1算术操作符(+ - * /) 取模函数MOD
1.13.2比较操作符(和MySQL一样) 1.13.3逻辑操作符(和MySQL一样 AND, OR,NOT) 1.13.4集合操作符 1.13.4.1并集(UNION),两个集合共同的数据和交叉的数据,交叉数据只取一条。
1.13.4.2并集ALL(UNION ALL),两个集合所有的数据都显示,交叉数据也会全部显示。
1.13.4.3交集 INTER SECT,两个集合共有的数据才显示出来。
1.13.4.4减集 MINUS,第一个集合中存在第二个集合的数据排除。
1.13.4.5通过上诉三个关键字可以得到下面这个集合
1.13.5连接操作符(||) 类似Mysql中的concat函数。
1.14SQL函数 1.14.1转换函数 1.14.1.1转换字符串 TO_CHAR
1.14.1.2转换日期 TO_DATE
1.14.1.3转换数字 TO_NUMBER
1.14.2转换空值的函数 1.14.2.1NVL
1.14.2.2NVL2
1.14.2.3DECODE
1.14.3行内判断语句 语法: case when 条件1 then 结果1 when 条件2 then 结果2 else 默认结果 end
select case when to_number(to_char(hiredate, ‘MM’)) > 0 and to_number(to_char(hiredate, ‘MM’)) < 4 then ‘一季度’ when to_number(to_char(hiredate, ‘MM’)) > 3 and to_number(to_char(hiredate, ‘MM’)) < 7 then ‘二季度’ when to_number(to_char(hiredate, ‘MM’)) > 6 and to_number(to_char(hiredate, ‘MM’)) < 10 then ‘三季度’ else ‘四季度’ end from emp / 分页使用三层嵌套
语法: select * from ( select rownum rn, tmp.* from ( select * from 表名 – – 查询结果 ) tmp where rownum < pageNo * pageSize ) t where rn >= (pageNo - 1) * pageSize