oracle10g学习笔记
1.简介
1.1.sql:Structured Query Language 结构化查询语言
1.2.windows在目录路径中使用反斜线\,unix和linux使用正斜线/
1.3.Number(a,b) a为总有效位数,b为最多小数位数
1.4.Insert into 表名(需指定主键及要求非空的字段,允许为空的字段如果不给值默认插入null)......
1.5.Binary_float和Binary_double是对number类型的补充,适合涉及大量数字运算的系统
1.6.oracle大小写不敏感,列名和表名都可以大小写替换
2.从数据库表中检索信息
2.1.rowid又被称为伪列,记录了该行在oracle中的物理位置(eg:AAASUiAAFAAAAHsAAA)
2.2.date格式日期可以直接相互加减,单位为天
2.3.字符串间通过||合并列
2.4.null和空字符串是两个不同的概念,select的时候都显示空的值,可通过nvl()函数加以区分,null会被替换,空字符串不会被替换
2.5.between a and b 包含边界
2.6.连接本身包含
内连接(两者公共的部分,inner join..on)
外连接(左连接,右连接,全外连接)(left join,right join,(+))
Eg: select...from a,b where a.id(+)=b.id 则以b表为主表
自连接(eg:员工信息和老板信息在一个表
select w.name||'works for'||m.name from employees w,employees m where w.manager_id(+)=m.employee_id )
3.使用简单函数
3.1.count()函数避免使用*,增加了运算量,应该使用某一列
3.2.select后面的字段(除聚合函数)group by后面必须都有,反过来,group by后面的字段select后面却并不要求一定有
3.3.分组依据的所有字段值完全相同时才视为相同然后合并为一行
3.4.字段值为null的也会被分成一组
3.5.聚合函数包括avg,count,max,median,min,stddev,sum,variance(聚合函数会忽略null值)
3.6.
a.如果查询中包含聚合函数,而所选择的列并不在聚合函数中,那么这些列必须在group by子句中,错误事例如下:
eg: select a,avg(b) from table
后面应该加group by a
b.不能在where子句中使用聚合函数来限制行,因为where子句只能用来对单行而不是分组过滤,过滤分组行要用having,使用having的前提是必须有group by
Eg:select a,avg(b) from table where avg(b)>20 group by a
4.日期和时间的存储与处理
5.使用sqlplus
6.子查询
6.1.错误事例:
Eg:select a,b from table where a=(select a from products where b like ‘%e%’)
= 只能处理一行
6.2.子查询不能包含order by
6.3.多行子查询可以使用IN,ANY,ALL操作符
6.4.可以使用多列子查询
Select a,b,c,d from table where (a,b) in (select a,min(b) from table group by a)
6.5.关联子查询,内部查询可以调用外部表简称(检索价格高于同类产品平均价格的产品)
Eg:select product_id,product_type_id,name,price from products outer
Where price>
(select avg(price) from products inner where inner.product_type_id=outer.product_type_id)
外部查询从表中检索出所有的行,并将其传递给内部查询,内部查询依次读取每一行数据
6.6.使用exits时可以返回一个常量值,提高查询的性能
Eg:select employee_id,last_name from employees outer where exits(select 1 from employees inner where inner.manager_id=outer.employee_id)
检索负责管理其它员工的员工记录(关联子查询)
6.7.select 1 from table where id=...
无值:列名为1,行数为空
有值:返回一列,列名为1,列值也为1,行数为返回的行数
6.8.一般exits的性能比in性能高,为了避免空值影响,最好使用nvl函数
6.9.表连接的查询性能高于嵌套查询,嵌套最多255
6.10.单行子查询
多行子查询
多列子查询
关联子查询
嵌套子查询
7.高级查询
7.1.UNION操作符返回查询检索出的所有非重复行,要求表的列数和类型要一样,列名可以不一样,UNION ALL操作符才返回所有行,包括重复行
8.修改表内容
8.1.事务:一组不可分割的SQL语句,一个逻辑工作单元
8.2.原子性,一致性,隔离性,持久性
8.3.并发事务间相互独立,除非有事务提交了才可能有影响
8.4.事务锁:读程序不会阻塞读程序,写程序不会阻塞读程序,只有在试图对相同的行进行修改时,写程序才会阻塞写程序
9.数据库安全性
10.创建表,序列,索引,视图
10.1添加列
Alter table 表名 add 列名 类型
10.2.truncate,delete
11.PL/SQL编程简介
11.1.声明变量可通过
X 表名.列名%TYPE
11.2.循环中经常使用exit when.....
Eg:exit when 游标名%notfound
11.3.oracle有很多内置的异常,异常发生时,控制权交给EXCEPTION模块
12.数据库对象
13.集合
14.大对象(LOB)
14.1.CLOB 字符数据
NCLOB 多字节字符数据(常用于非英语字符)
BLOB 二进制数据
BFILE 文件指针,文件位于数据库之外
15.使用JAVA运行SQL
15.1.JDBC(Java Database Connectivity)
API(Application Programming Interface)应用编程接口
15.2.JDBC驱动程序有4种
Thin驱动程序
OCI驱动程序
服务器端内部驱动程序
服务器端Thin驱动程序
16.SQL优化
16.1.表连接查询时,将行较少的表连接到后面
16.2.为表起别名,查询字段利用别名去调可以减少执行时间
16.3.当单个查询检索的行数不大于表总行数的10%,建立索引是有用的,且索引的候选列应该用于存储范围广泛的值,比如主键列
17.select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
select userenv('language') from dual;
18.数据库用户具有的角色权限在存储过程中失效,即使这个用户名有dba的角色也没用,必须手动赋予
比如:grant create any table to 用户名
sqlplus管理员连接:
sqlplus 用户名/密码@ip:port/实例 as sysdba
或者先sqlplus /nolog
然后 conn 用户名/密码@ip:port/实例 as sysdb
sys dba
system sysoper
sqlplus执行sql:
@sql路径名
角色授予:grant
dba to
用户名
;
18.oracle创建主键时会默认给主键字段加上唯一索引,便于检索, 在同一个namespace的oracle对象名字不能相同
19.查看用户具有LOB对象的时哪些表,哪些字段(dba),lob是由创建表中含有blob,clob造成的
select
owner,TABLE_NAME,column_name,DATA_TYPE from dba_TAB_COLUMNS where data_type like '%LOB%' and owner='SCOTT';
oracle10g学习笔记的更多相关文章
- MySQL学习笔记一
MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...
- Oracle RAC学习笔记:基本概念及入门
Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章] oracle 10g real applica ...
- Informatica学习笔记
Informatica学习笔记1:UPDATE AS INSERT 问:要求实现每天抽取数据,而且是如果有改变才抽取更新,没有就不更新,因为源表中有最后修改时间的字段,我让它 和SESSION上次运行 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
随机推荐
- 01Jenkins环境准备
01.硬件环境 Linux 64位(windows环境类似) 02.安装JDK a) 标题链接到Oracle官网下载jdk-8u144-linux-x64.rpm b) 将jdk拷贝到Linux的/t ...
- 很赞的一个教程: React.js 小书
很赞, React.js 小书 http://huziketang.com/books/react/ 推荐阅读入门, 照着来一遍,能会个七七八八, 更多的还需要多写 import Re ...
- js 基于可视区域 创建展示区域对应的经纬度二维数组
本篇文章主要是分享下基于地图区域创建经纬度二维数组,需要的朋友可以过来参考下 接上个文章, 基于 地图区域,算出这个展示区域对应的点. 经纬度的变化关系: XY页面展示上, 从左到右维度是增加 如: ...
- Android 图片旋转
拍照后的照片有时被系统旋转,纠正步骤如下: 1.先读取图片文件被旋转的角度: /** * 通过ExifInterface类读取图片文件的被旋转角度 * @param path : 图片文件的路径 * ...
- 1 win10双系统安装ubuntu16.04和18.04(问题详细记录)
我从来不想在琐事上花功夫.就拿装系统来说,我感觉拿过来一个完全陌生的项目源码,看起来,都比装系统爽.我属于典型的逻辑思考男.喜欢畅游程序的海洋. 一直windows跑深度学习和tensorflow,有 ...
- linux 下的python的最佳打开方式, you know?
IPython install IPython是Python的交互式Shell,提供了代码自动补完,自动缩进,高亮显示,执行Shell命令等非常有用的特性.特别是它的代码补完功能,例如:在输入zlib ...
- xcopy-参数详解
XCOPY——目录复制命令 1.功能:复制指定的目录和目录下的所有文件连同目录结构. 2.类型:外部命令 3.格式:XCOPY [源盘:]〈源路径名〉[目标盘符:][目标路径名][/S][/V][/E ...
- 将eChart图片利用POI导出到Excel
在使用POI进行将数据导出到Excel时, 若要将eChart在前端生成的统计图(如柱状图.折线图.饼图等)一并导出,使用POI在后台构建数据图比较复杂,因此我选择将eChart在前端的统计图的bas ...
- 微信 公众号 小程序 授权 unionid 用户信息 实验总结
-*-*-*-*-*-*-*-*-*--*-*-*-1.小程序通过code获取用户openid的接口,如果用户曾经授权并未过期,或者用户关注过同主体的公众号,会带回unionID,但没有用户头像等信息 ...
- Java学习---Map的学习
1. Map 1.1. map中的方法 1.2. Map.Entry 对于集合来讲,就是把kye-value的数据保存在了Map.Entry的实例之后,再在Map集合中插入了一个Map.Entry的实 ...