Oracle数据库学习第一天

Oracle数据库学习第一天

目录:

基本概念:

  • PGA与SGA的概念

  • Oracle Database的基本概念

  • Oracle服务器的概念

  • Oracle 数据库和Oracle 实例

  • Oracle实例的理解

  • Oracle集群的概念

基础知识:

  • 基本命令

  • SELECT语句

  • WHERE语句

  • LIKE模糊查询

  • ORDER BY语句

  • 别名

  • DUAL关键字

  • NULL问题

  • 运算符/操作符

  • 连接符

  • 字符串

  • DISTINCT关键字

  • SQL 和 SQL*Plus

  • 单行函数概念

  • 字符函数

  • 数字函数

  • 日期

  • 转换函数

  • 通用函数

  • GROUP BY语句

  • HAVING语句

  • 笛卡尔集

  • Oracle连接

  • 等值连接

  • 非等值连接

  • 外连接

  • 自连接

Oracle数据库学习第一天对应练习题

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 (集合中含有空值 ) 查询结果受影响


(3)where col between a and b  a要小于b且此区间为闭区间[]:

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连接:

等值连接:

非等值连接:

外连接:


自连接:

猜你喜欢

转载自blog.csdn.net/weixin_42617472/article/details/84987557