PGA与SGA的概念:
SGA是系统全局区
PGA是进程全局区,也有叫用户全局区
oracle在跑,SGA就是oracle的内存结构,比如放databuf,share pool,oracle启动时分配,oracle关闭时回收.
PGA是有用户连oracle时,oracle给开辟的一个内存区, 只供该用户使用,该用户断开后oracle就会将这块内存回收
Oracle Database的基本概念:
Oracle服务器的概念:
oracle服务器是一个数据管理系统(RDBMS),它提供开放的、全面的,近乎完整的信息管理。由oracle实例和oracle数据库组成。
Oracle 数据库和Oracle 实例:
Oracle 数据库: 位于硬盘上实际存放数据的文件, 这些文件组织在一起, 成为一个逻辑整体, 即为 Oracle 数据库. 因此在 Oracle 看来, “数据库” 是指硬盘上文件的逻辑集合, 必须要与内存里实例合作, 才能对外提供数据管理服务。
oracle 数据库: 磁盘上物理文件的集合
Oracle 实例: 位于物理内存里的数据结构. 它由一个共享的内存池和多个后台进程所组成, 共享的内存池可以被所有进程访问. 用户如果要存取数据库(也就是硬盘上的文件) 里的数据, 必须通过实例才能实现, 不能直接读取硬盘上的文件。
oracle实例: 抽象的物理文件的内存影像,要被读到内存中。
区别: 实例可以操作数据库; 在任何时刻一个实例只能与一个数据库关联; 大多数情况下, 一个数据库上只有一个实例对其进行操作。
Oracle实例的理解:
当应用程序app1提交数据的时候,通过两阶段提交原理进行提交:
第一步提交:将app1的数据通过网络sql语言,提交到PGA区。
第二部提交:PGA的数据再由oracle机制提交到SGA区。
提交且满足规则后,再写数据库。
Oracle集群的概念:
cluster oracle:一个oracle数据库可以被映射多个实例。
基本命令:
Oracle可以通过Desc加表名来查询表的结构:
set linesize 150 设置行宽
set pagesize 140 设置页大小
select * from emp;
结果:
设置列宽:
数字:col empno for 99999999999999999999
字符:col ename for a20
清屏:host cls
修改代码命令:SQL> ed
SELECT语句:
查看用户下有什么表:select * from tab; (tab是数据字典,Oracle超级管理员分配给普通用户的资源,tab是一个关键字)
查询表的所有记录:
选择特定的列:
注意内容:
SELECT 标识选择哪些列
FROM 标识从哪个表中选择
SQL 语言大小写不敏感。
SQL 可以写在一行或者多行
关键字不能被缩写也不能分行
各子句一般要分行写。
使用缩进提高语句的可读性。
WHERE语句:
WHERE需要注意的地方:
1、WHERE 子句紧随 FROM 子句。
2、WHERE后的第一个字符肯定是列名。
WHERE语句的三种格式:
(1)where col > 30:
oracle支持隐式类型转换 eg:char ====>date(自动把char类型转换为data类型)
(2)where col in ()--->某一个集合 :
--in 中是一个集合 eg:null
select * from emp
where DEPTNO in (10, 20, null)
select * from emp
where DEPTNO not in (10, 20,null)
======> in集合中遇见null (in集合和空值在一起...)
=====>in (集合中含有空值 ) 查询结果不受影响
======>not in (集合中含有空值 ) 查询结果受影响
LIKE模糊查询:
% 代表零个或多个字符(任意个字符)。
_ 代表一个字符。
ORDER BY语句:
order by 默认按照升序排序 从小到大
当ORDER BY遇见NULL(空值)时:
当ORDER BY后面有多个列时:
ORDER BY排序的规则:
可以按照select语句中的列名排序
可以按照别名列名排序
可以按照select语句中的列名的顺序值(数字)排序
如果要按照多列进行排序,则规则是先按照第一列排序,如果相同,则按照第二列排序;以此类推
别名:
1、重命名一个列。
2、便于计算。
3、紧跟列名,也可以在列名和别名之间加入关键字‘AS’,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
4、可以省掉""与as
5、别名有空格时, 不能省掉""
例:
DUAL关键字:
DUAL 是一个‘伪表’,可以用来测试函数和表达式
dual是数据字典 (oracle超级管理员分配给普通用户的资源,dual关键字)
SQL> select sysdate from dual;
SYSDATE
--------------
07-10月-14
NULL问题:
1、空值是无效的,未指定的,未知的或不可预知的值
2、空值不是空格或者0。
3、任何数和null运算都为null (null无穷大)
4、空值不是空 null != null
5、null滤空函数:nvl (a, b)
--当a是空的时候,返回b( 其中b可以是数字/字符串)
运算符/操作符:
连接符:
把列与列,列与字符连接在一起。
用 ‘||’表示。
可以用来‘合成’列。
字符串:
1、字符串可以是 SELECT 列表中的一个字符,数字,日期。
2、字符串和日期在sql语言用单引号括起来
3、每当返回一行时,字符串被输出一次。
DISTINCT关键字:
默认情况下,查询会返回全部行,包括重复行。在 SELECT 子句中使用关键字 ‘DISTINCT’ 删除重复行。
当DISTINCT修饰多个字段的时, 当部门编号和工种都一样的时候,才认为是重复的 否则就认为不是重复的,就不会去除。也就是说DISTINCT可以用来修饰多个字段。
select DISTINCT deptno, job from emp;
SQL 和 SQL*Plus:
单行函数概念:
单行函数:
操作数据对象
接受参数返回一个结果
只对一行进行变换
每行返回一个结果
可以转换数据类型
可以嵌套
参数可以是一列或一个值
字符函数:
大小写控制函数:
CONCAT:
SUBSTR:
LENGTH与LENGTHB:
INSTR:
LPAD与RPAD:
TRIM:
数字函数:
ROUND:
TRUNC:
MOD:
日期:
有关日期格式属性修改:
SQL> select * from v$nls_parameters;
alter session set NLS_DATE_FORMAT='DD-MON-RR';
alter session set NLS_DATE_FORMAT='yyyy-mm-dd';
字符和日期要包含在单引号中。
字符大小写敏感,日期格式敏感。
默认的日期格式是 DD-MON-RR。
改变日期的格式:
转换函数:
数据类型转换分为隐式转换与显式转换。
通用函数:
GROUP BY语句:
HAVING语句:
笛卡尔集:
Oracle连接:
等值连接:
非等值连接:
外连接:
自连接: