Oracle复习(一)基本命令操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39424143/article/details/89306293

Oracle复习(一)主要为整理老师课上笔记

需求分析:

  • 数据库设计的侧重点从数据处理的角度触发提出设计方案
  • 需求分析的重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求

分析需求的方法:

  • 自顶向下的结构化分析方法(SA)
  • SA方法从最上层的系统组织机构入手,采用逐 层分解的方式分析系统,并用数据流图和数据 字典描述系统。

数据流图的定义及画法:

  • 数据流图:描绘系统的逻辑模型,只描绘数据流在系统中流动和处理的情况,是逻辑系统的图形表示,其中去掉了具体的组织结构、工作场所、物质流等,只剩下信息和数据存储、流动、使用以及处理等抽象数据、把系统对各种业务的处理过程联系起来考虑,形成一个总体,可反应出数据流之间的概括情况。

  • 数据流图组成:

* 数据的源点或数据终点
* 数据处理(加工)
* 数据存储
* 数据流

数据字典:

  • 数据字典是各类数据描述的集合, 是进行详细的数据收集和数据分析所获得的主要结果,在数据库设计中占有很重要的地位
  • 数据字典的内容:
    • 数据项
    • 数据结构
    • 数据流
    • 数据存储
    • 处理过程
  • 数据项是数据的最小组成单位, 若干个数据项可以组成一个数据结构
  • 数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的 逻辑内容。

Oracle体系结构:

  • Oracle服务器:由Oracle实例和Oracle数据库组成
    • 数据库:物理操作系统文件或磁盘的集合
    • 实例:数据库启动时,系统首先在服务器内存中分配系统全局区(SGA),构成了Oracle的内存结构, 然后启动若干个常驻内存的操作系统进程,即组成了Oracle的进程结构,内存区域和后台进程合称为一个Oracle 实例。
    • 实例和数据库的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。实际上实例在整个生存期中最多能装载和打开一个数据库。
    • 实例名:SID最多可以包含8个字符,在所处的服务器中必须唯一。

Oracle的内存结构:

在这里插入图片描述

  • Java池:用来与 JVM进行特定的操作(JVM运行时数据区可以看我的另一篇文章)
  • 大池:为Oracle备份
  • 缓冲区:检索使用
  • 重做缓冲区:恢复物理日志

服务器名和数据库名:

  • 服务名(Service Name)用于定位数据库服务器, 其由数据库名(Database Name)和域名组成。 一个数据库可以支持多个服务,服务最初 在初始化参数SERVICE_NAMES中定义,默认设定为全局数据库名格式为database_name.database_domain(注意服务器名全英大写)

Oracle运行SQL* PLUS

  • 在Windows环境中三种方式:
    • dos命令:
sqlplus  用户名/密码
sqlplus 用户名/密码 as sysdba(超级管理员)

账号:

超级管理员 sys, 默认密码change_on_install
普通管理员 system 默认密码 manager
用户scott 密码:tiger
  • 图形化界面:sqlplus

命令行与图形化界面相互转换:

  • 查看当前登录身份:
show user;
  • 账号加解锁:
Alter user  用户名 account lock/unlock;
  • 连接
conn 用户名/密码 {as sysdba};
conn 用户名/密码@数据库实例名;
  • 断开:
disconnect
disc
  • 修改密码:(管理员可以为普通用户修改,用户也可以自己修改)
alter user 用户名 IDENTIFIED by 新密码;

password 账号
输入旧密码
输入新密码
  • 密码失效:
alter user 用户名 password Expire;
  • 查询:
查看当前状态下所有表:
select * from tab;

查看表结构:
desc emp(表名);

查看表中所有数据:
select * from 表名;

设置页面宽度:
set linesize 整数;

设置每页显示行数:
set pagesize 整数;-->行数,非记录数
  • 查询语法格式:
eg: 在emp表中查看empno, ename, sal
select empno, ename, sal from emp;
  • 修改:
ed 打开一个文件后修改
修改后执行 输入r或者是/或者是run
  • 关于缓冲区的操作:
查看缓冲区的内容:
list

编辑缓冲区的内容:
ed编辑
a追加
del删除

执行缓冲区的内容:
r
/ 
run

清除缓冲区:
clear buffer
  • 文件操作指令;
将缓冲区内容保存到指定文件
save d:\abc.sql;
若已创建则使用
save d:\abc.sql replace/append;

脚本文件载入到缓冲区:
get 文件

脚本文件执行:
start 文件
@ 文件
后缀为sql或者txt都可以执行,但是后缀必须要写

将屏幕内容保存到文件中:
SPOOL 文件地址
保存命令和查询的内容
SPOOL OFF

清屏:
clear screen
直接按 shift + delete 组合键:清除了屏幕和屏幕缓冲区
屏幕缓冲区和内存缓冲区不同

命令可以缺省一部分:
clear scr
clea scre
cle scr

环境变量设置与提示:
show 加环境的配置变量

set命令:
输出一行字符个数,缺省为80
set linesize 

换列之间的分隔符
set colsep |

显示列标题
set heading on

隐藏列标题
set heading off

反馈信息行数:
set feedback 3;默认值为6,小于默认值 不显示最少多少行

显示命令提示符前面的时间:
set time on;

显示执行时间:
set timing on;
set timing off;

保存环境变量:
保存当前的属性配置
STORE SET 文件地址 
  • 设置页眉、页脚、标题:
TTITLE 标题
BTITLE 页脚
TTITLE CENTER “自定义标题” -->居中显示标题
BTITLE RIGHT "MADE BY dyq" -->页脚靠右

去掉标题和页格式
TTITLE OFF
BTITLE OFF
  • 压缩列值:
Break压缩只显示一次
BREAK ON 列名(对某一列进行压缩) SKIP + 数字(压缩后组与组之间的距离)
  • 分组统计:
BREAK和COMPUTE配合使用才可以
COMPUTE 组函数 label 内容 of 列 on 分组 
break on deptno;
compute avg label '平均工资' of sal on deptno;
  • 格式化列:
select出来数据使用COLUMN命令对格式进行修改
COLUMN命令
	HEADING  指定列名的对齐方式和显示内容
	JUSTIFY    列标题的对齐方式 
	CLEAR     清除列方式
                指定列样式
                
             

COLUMN ename HEADING 员工名 JUSTIFY center FORMAT A3 ('A3'表示列宽,数字随意写 ,大于3自动换行
COLUMN sal HEADING 工资 JUSTIFY  LRFT FORMAT L9999.99  ('L'为货币)

显示sal列的格式:
column sal;

清除指定列的显示格式
COLUMN 列名 CLEAR

清除所有列的显示格式:
CLEAR COLUMN

  • ROWNUM分页:
rownum表示行号,它是一个伪列,,伪列只能用一次且只能有小范围的操作
select rownum ,empno, enmae from emp where rownum <= 5
选取10-15之间:
select * from (select rownum m, empno ,ename from emp where rownum<=15)temp where temp >10
  • 字符函数
大小写控制函数
lower  
upper 
initcap 将单词首字母大写,其他字符小写

字符控制函数
concat 字符连接 ,只能有两个参数 拼接多个是 可以嵌套调用 
substr(str,0,5) 下标开始位 既可以是0也可以是1 这个是当初开发的一个错误,0和1的结果一样
length() 计算长度
lpad(str,10,'*') 一共十位,不够在左边用*补全 
rpad(str,10,'*') 一共十位,不够在右边用*补全
trim("h","hhhsdfasdfashhh")  去掉左右两边的h
  • 数值函数
round() 四舍五入
trunc(number, num_digits) number需要截尾取整的数字, num_digits用于指定精度的数字,不进行四舍五入,正数向后截取,负数向前截取
mod(10,3) 取余		
  • 日期函数
sysdate
日期可以进行算法运算:
日期+数字 = 日期  前后多天
日期 - 日期 = 天数
add_months(yue,2)
next_day 返回指定日期的指定工作日
next_day(sysdate,'星期日') 下一个离他最近的星期日
last_day
extract 提取日期
extract(year,时间) 也可以提取月日 时分秒

猜你喜欢

转载自blog.csdn.net/qq_39424143/article/details/89306293