Oracle基本概念
Oracle Database的基本概念
一个Oracle服务器
是一个数据管理系统,它提供开放的,全面的,近乎完整的信息管理
Oracle服务器有两大部分组成
一个Oracle实例
一个Oracle数据库组成
Oracle数据库
位于硬盘上实际存放数据的文件,这些文件组织在一起,成为一个逻辑整体,即为Oracle数据库。因此在Oracle看来,数据库是指硬盘上文件的逻辑集合,必须要与内存里实例合作,才能对外提供数据管理服务
Oracle实例
位于物理内存里的数据结构,它由一个共享的内存池和多个后台进程所组成,共享的内存池可以被所有进程访问,用户如果要存取数据库(也就是硬盘上的文件)里的数据,必须通过实例才能访问,不能直接读取硬盘上的文件。
注意!!!
实例可以操作数据库,在任何时刻一个实例只能与一个数据库关联,大多数情况下,一个数据库只有一个实例对其进行操作。
表空间和数据文件
表空间由多个数据文件组成,逻辑概念
数据文件只能属于一个表空间,物理概念
段,区,块概念
段存在于表空间中
段是区的集合
区是数据块的集合
数据块会被映射到磁盘块
数据库的逻辑和物理结构
Oracle基本sql select语句
学完基本select语句应掌握
1. 书写select语句
2. 返回表中的全部数据
3. 返回表中指定列的数据
4. 使用别名
5. 使用sql*plus环境,书写,保存和执行sql语句和sql*plus命令
语句格式:(读完本节后就能看懂啦,亲)
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
SQL语句注意事项
SQL语句大小写不敏感
SQL可以写在一行或多行
关键字不能被缩写也不能被分行
各子句一般要分行写
使用缩进提供语句的可读性
基本select语句
select 标识选择那些列
选择全部列*
选择特定列,指定列名
选择表达式
+ - * /
from 标识从那个表中选择
下图为基于那张表
列的别名
J 重命名一个列
J 便于计算
J 紧跟列名,也可以在列名和别名之间加入关键字as,别名使用双引号,以便在别名中包含空格和特殊字符并区分大小写(面试有的时候会问到,使用双引号和不使用的)
J as可以省略
使用别名
连接符
J 把列于列,列与字符连接在一起
J 用“||”表示
J 可以用来合成列
记得终止只组合成了一列
字符串
J 字符串可以是select列表中的一个字符,数字,日期
J 日期和字符只能在单引号中出现
J 每当返回一行,字符串被输出一次
重复行
默认情况下,查询返回全部行,包括重复行
删除重复行,在select子句中使用关键字“distinct”删除重复行
显示表结构
desc简写
describe 表名
SQL语句与SQL*Plus命令
SQL语句对比SQL*Plus
一种语言
一种环境
ANSI标准
Oracle的特性之一
关键字不能缩写
关键字可以缩写
使用语句控制数据库中的表的定义信息和表中的数据
命令不能改变数据库中的数据值
集中运行
SQL*Plus功能
功能
描述表结构
编辑SQL语句
执行SQL语句
将SQl保存在文件中并将SQL语句执行结果保存在文件中
在保存的文件中执行语句
将文本文件装入SQL*Plus编辑窗口
本机上Http://localhost:5560/isqlplus/
Oracle过滤和排序数据
通过学习完本节,要掌握如下功能
使用where子句过滤数据
使用比较运算符
操作符
含义
=
等于(不是==,赋值使用:=符号)
>
大于
>=
大于,等于
<
小于
<=
小于,等于
<>
不等于(也可以是!=)
使用between and,in,like和null运算
操作符
含义
between…and…
两个值之间(包含边界)
in(set)
等于值列表中的一个
like
模糊查询
is null
空值
使用逻辑运算符and,or和not
操作符
含义
and
逻辑并
or
逻辑或
not
逻辑否
优先级
1
算术运算符
2
连接符
3
比较符
4
is null,like,not in,in
5
between
6
not
7
and
8
or
使用order by子句进行排序
asc(ascend)
升序
desc(descend)
降序
order by子句在select语句的末尾
排序的规则
1
可以按照select语句中的列名排序
2
可以按照别名列名排序
3
可以按照select语句中的列名的顺序值排序
4
如果按照多列进行排序,则规则是先按照第一列排序,如果相同,按照第二列排序依次类推
5
desc
使用转义符将%转为\%,-转为\-,然后再加上escape \
语法格式:
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)]
[ORDER BY {column, expr, alias} [ASC|DESC]];
具体操作示例
查询10号部门的员工
查询KING的员工,字符大小写敏感
如果改为king则失败(字符和日期必须完全匹配)
查询入职日期为17-11月-81的员工
如果查询1981-11-17则出现文字与格式字符串不匹配
查看日期格式
其中
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_DATE_FORMAT
DD-MON-RR
NLS_DATE_LANGUAGE
SIMPLIFIED CHINESE
NLS_CHARACTERSET
ZHS16GBK
格式化:
修改日期格式
between and工资在多少之间,包含边界,小值在前面,大值在后面
in 在集合中,存在于部门10或20的员工
不存在与部分10或20的员工
需要注意,如果集合中含有null,不能使用not in,但可以使用in
not in 不可以使用null
in可以使用null
模糊查询%,_,多个和一个
模糊查询_,查询4个字母的名称
查询存在下划线的名称
插入带下划线的名称
查询结果有误
正确的查询方式:
SQL> --转意字符
SQL> rollback;
回退已完成。
and or 左边和右边,从右到左顺序执行
排序order by默认升序排序
order by降序排序
order by 后面可以跟随 列名 表达式 别名 序号
order by 排序别名
order by 后面加序号
order by 后面存在多列,这里需要注意先排序deptno,再根据deptno排序sal
一个默认排序,一个降序排序
desc只作用于临近,需要写两次
查询员工奖金,按奖金排序
查询员工奖金,降序排序排列
查询员工奖金排序,把null都放置在最后