• 《Oracle从入门到精通》


    20160204

    1.6启动和关闭数据库实例

    1、startup

    • nomount :启动实例不加载实例
    • mount:启动实例、加载数据库并保存数据库的关闭状态
    • open:启动实例、加载并打开数据库,这个是默认选项
    • force:终止实例并重新启动数据库
    • restrict:用于指定以受限制的会话方式启动数据库
    • pfile:用于指定启动实例时所使用的文本参数文件,filename就是文件名

    2、shutdown

    • normal:以正常方式关闭数据库
    • transactional:在当前所有的活动事务被提交完毕之后,关闭数据库
    • immediate:在尽可能短的时间内立即关闭数据库
    • abort:已终止方式来关闭数据库

    2.2逻辑存储结构

    逻辑存储结构组成:表空间、段、区间和数据块。

    • 数据块:oracle逻辑存储结构中最小的逻辑单位,也是执行数据库输入输出操作的最小存储单位。
    • 数据区:由一组连续的oracle数据块所构成的oracle存储结构,一个或多个数据块组成一个数据区,一个或多个数据区再组成一个段。
    • 段:用户存储表、索引或簇等占用空间的数据对象。
    • 表空间:数据库的最大逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象,任何数据对象在创建时都必须指定存储在某个表空间中。

    2.3物理存储结构

    物理存储结构的文件组成:数据文件、控制文件、重做日志文件、归档文件、参数文件、口令文件和警告文件等。

    1、查询数据库文件:dba_data_files或v$datafile

    2、控制文件:记录数据库名、数据库文件与日志文件的名字和位置、数据库建立日期等信息。

        查询控制文件:v$controlfile

    3、日志文件:包括重做日志和归档日志文件。

      查询日志文件:v$logfile

      查看oracle是否采用归档模式:v$database

      查看归档文件的所在路径:show parameter log_archive_dest

    4、查看服务器参数:v$parameter或show parameter

        修改服务器参数: alter system set db_block_size=4096

    2.4oracle11g服务器结构

    1、oracle服务器的组成:实例、数据库、程序全局区和前台进程。

    • 实例分为系统全局区(SGA)和后台进程(PMON、SMON等)两部分。其中,SGA使用操作系统的内存资源,而后台进程需要使用CPU与内存资源。
    • 数据库(Database)包含数据文件(Datafiles)、控制文件(Controlfile)和重做日志文件(redo log file),数据库文件存放在硬盘中。
    • 程序全局区是一个非共享内存区域,用于管理用户进程的私有资源。
    • 前台进程可以再划分为用户进程和服务器进程,他们CPU和内存资源。

    2、系统全局区(SGA)组成:shared pool、buffer cache、redolog buffer、java pool、large pool、streams pool。

    • 数据高速缓冲区(Database buffer cache):脏数据区、空闲区和保留区。
    • 重做日志缓冲区(Redo log buffer cache):存放对数据库进行修改操作时所产生的日志信息。
    • 共享池(shared pool):用于缓存sql语句、pl/sql语句、数据字典、资源锁、字符集以及其他控制结构等。

       修改共享池的内存空间大小:alter system set shared_pool_size=30m。

    3、程序全局区(PGA):它的内存在私有区而不在共享区中。show parameter pga。

    4、前台进程:包括用户进程和服务进程。

    5、后台进程:SMON、PMON、DBWR、LGWR、CKPT。

    • DBWR:将内存中的“脏”数据块回写到数据文件中。
    • LGWR:将重做日志缓冲区中的数据写入重做日志文件。

       触发条件:1)进行提交2)信息满1/3 3)日志在内存中存放操作3s。

    3.2设置SQL*PLUS的运行环境

    1、set命令

    • set pagesize value:设置从顶部标题至页结束之间的行数。
    • set newpage value:设置一页中空行的数量。
    • set linesize value:设置一行所显示的最多字符总数。
    • set pause value:设置输出结果是否滚动显示。
    • set numformat format:设置显示数值的默认格式。

    3.3常用SQL*PLUS命令

    • help:help index
    • desc:desc dba_tablespaces
    • spool/spool off
    • define
    • show
    • edit [file_name]
    • save file_name
    • get  file_name
    • start/@:用来执行一个sql脚本文件

    3.4格式化查询结果

    • col 列名 format
    • col 列名 heading 别名:定义列标题
    • col 列名 null '空值':如果该列为null,用字符串‘空值’代替
    • col 列名 off/on :控制定义的显示属性的状态
    • col 列名 wrapped/word_wrapped:按照指定长度这行/按照完整字符串这行

    4.3数据检索

    select {[distinct|all] column |*} [into table_name] from {tables | views | other select }[where conditions] [group by columns][having conditions][oder by column]

    1、简单查询

    • select * from dept;
    • select sal*(1+0.1),sal from emp;
    • select empno as "员工编号",ename as “员工名称”,job “职务” from emp;
    • select distinct job from emp;
    • select empno ,ename,sal from emp where sal <>all(3000,950,800);

       特殊筛选关键字:like、in、(not)between ...and ...、is null

    2、筛选查询

    • select * from emp group by deptno,job order by deptno ;
    • select deptno as 部门编号,avg(sal) as 平均工资 from emp group by deptno;
    • select deptno as 部门编号,avg(sal) as 平均工资 from emp group by deptno having avg(sal)>2000;

            having后面可以使用聚合函数count、avg、sum,where子句中不可以使用聚合函数。

    3、多表关联查询

    • select e.empno,d.dname from emp e join dept d on e.deptno=d.deptno;

    4.5子查询

    • select empno,ename,job from emp where deptno=(select depno from dept where dname='RESEARCH');
    • select empno,ename,job from emp join dept on emp.deptno=dept.deptno where dept.dname='RESEARCH';

    4.6数据库操作

    • insert into jobs values('PRO','程序员',5000,10000);
    • insert into jobs_temp select * from jobs where jobs.max_salary >10000;
    • update emp set sal=sal*1.2 where job='salesman';
    • update emp set sal =(select avg(sal) from emp where job ='MANAGER') where sal<2000;
    • delete from jobs where job_id='PRO';
    • truncate table jobs_temp;

     其他相关表操作:

    1、创建表

    create table 表名 (列名1 类型 约束,列名2 类型 ,...)

    如:

    create table T2(
    userid int,
    counts varchar(20),
    grade varchar(20)
    )

    2、删除

    • drop table 表名:删除表结构及数据
    • truncate table 表名:删除数据,删除操作不能撤销,重新设置高水平线及索引
    • delete from 表名:删除数据,高水平线位置不变,所以数据检索速度不变

    3、查询

    • 简单查询:select * from 表名 where 条件,注意where后面不可以使用聚合函数,如avg、sum、count等。
    • 去重查询:select distinct 列名 from 表名
    • 查前10项:select * from 表名 where rownum<11;
    • 显示特殊格式:select 'userid:'||userid||',counts:'||counts||',grade:'||grade from T2 where userid=3;

    • 查询某列的最大最小值:select max(列名) from 表名,最小用min,其中列的类型只能为数值,如 select max(userid) from t2

    4、更新

    • 更新数据:update 表名 set 列名=新值 where 条件,如:update t2 set userid=24 where userid=17
    • 更新表名:rename 旧表名 to 新表名

     5、列操作

    • 添加列:alter table 表名 add(列1 类型,列2 类型),如:alter table T2 add(usertype varchar(20))
    • 修改列类型:alter table 表名 modify(列 类型),如:alter table t2 modify(user_type varchar(10))
    • 修改列名:alter table 表名 rename column 旧列名 to 新列名,如:alter table t2 rename column usertype to user_type
    • 删除列:alter table 表名 drop column 列名 ,如:alter table t2 drop column user_type

    6、复制表及数据

      create table 新表名 as select * from 要复制的表,如:create table t3 as select * from t2

     

          

  • 相关阅读:
    Windows10如何删除“极速输入法”?
    python 递归实现 冒泡排序
    leetcode 912
    python 快速排序
    python 选择排序
    python 使用递归法对整数进行因数分解
    用函数嵌套定义和递归实现帕斯卡公式C(n,i) = C(n-1, i) + C(n-1, i-1), 进行组合数C(n,i)的快速求解。
    L2-3 清点代码库 (25 分)- 2021 天梯赛
    L2-2 病毒溯源 (25 分)
    快速幂
  • 原文地址:https://www.cnblogs.com/coffeebar/p/5181601.html
Copyright © 2020-2023  润新知