数据库----ORACLE和MYSQL数据库简介

一、什么是数据库?

   数据库(Database---DB)按照组织、储存和管理数据的仓库。(理解以下三个概念)

     数据(Data)用来描述事物的记录都可称数据,如文字音乐图像。

    数据库系统(DateBase Sydtem,DBS )由硬件(储存设备)和软件(操作系统和应用程序)组成。

    数据储存结构:数据库服务器(数据管理程序)管理多个数据库(每个数据库对应一个应用程序),每个数据库中会穿件多个表(用来存储和描述数据的逻辑结构),记录实体数据。

 

二、Oracle数据库的结构和数据类型

    Oracle数据库是一种大型的分布式数据库系统。

      oracle会默认创建如下账户:

        SYS用户:oracle数据库的超级用户,主要用来维护系统信息和管理实例。数据库中所有的数据字典表和数据都存储在SYS模式中。

         SYSTEM用户:默认的系统管理用户,拥有DBA权限,管理Oracle数据库的用户、权限和存储。

        SCOTT用户:一般为普通用户。

      oracle数据库服务器的结构体系:主要由数据库和实例(INSTANCE)组成。

        实例:指数据库服务器的内存以及相关后台程序-----也称为Oracle数据库引擎。

            Oracle数据库的内存结构分为:系统全局区 和 程序全局区          

             系统全局区:System Global Area,SGA。

                 是Oracle数据库存放系统信息的一块内存区域。

                 是Oracle数据库为一个数据库实例分配的一组共享内存缓冲池,多个进程可以同时对SGA中的数据进行访问和相互通信。

              SGA有三个关键部件:

               数据高速缓冲区:存放着oracle数据库系统最近使用过的数据库数据块,用户进程查看的数据必须首先驻留在数据高速缓冲区。

               共享池:所有用户程序都存放在共享池,也是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域。

               重做日志缓冲区:用于缓存在对数据进行修改的操作过程中生成的重做记录。

             程序全局区:Program Global Area,PGA 。用户进程私有的内存区域,不能共享。

                 包含的单个进程或的单个后台进程的数据和控制信息,有进程会话变量即内部数组等。

            进程结构:一般分为用户进程、服务器进程、后台进程

              用户进程:在客户端负责将用户的SQL语句传递给服务器进程,并从客户端取回查询数据。

              服务器进程:由Oracle数据库系统创建,用来处理用户进程提出的请求,根据请求进行实际操作,将操作结果返回给用户进程。

              后台进程:

                 数据库写入进程(DBWR):管理数据缓冲区和字段缓冲区的内容,分批将修改后的数据块写回数据库系统。可以拥有多个该进程。

                 日志写入进程(LGWR):用于将联机重做日志缓存区的内容写到联机重做日志文件中,唯一一个读写日志文件进程

                 系统监控进程(SMON):检查数据库的一致性,在数据库系统启动时执行恢复性工作的强制进程,对有故障的CPU或实例进行恢复。

                 进程监控进程(PMON):用于恢复失败的数据库用户的强制性进程。

                 归档进程(ARCM):在数据库设置为归档日志模式下,在每次日志切换时,把已满的日志组进行备份或归档。

                 检查点进程(CKPT):确保缓冲区内的内容隔一定时间对数据文件进行一次更新。否则数据库发生毁损时,只能从日志文件的记录中还原。 

        数据库的作用是保存数据。其存储结构分为逻辑存储结构和物理存储结构。

            物理存储结构:描述oracle数据库外部及其所处的操作系统环境中使用何种文件组织和管理数据的方式。

               oracle物理文件主要分为三种:数据文件、控制文件、重做日志文件。

            数据文件:存储数据库中的数据,一个数据文件只能属于一个数据库,每个数据文件由若干个物理块组成,其中包括各种数据。

            控制文件:用于记录和维护整个数据库的物理结构,是二进制文件,扩展名为 .ctl 。

               数据库启动时,先找到控制文件,然后根据控制文件设定的数据库文件、日志文件等物理文件的信息来检查数据库的状态是否正常。

            重做日志文件:用于记录数据库所做的全部变更(增、删、改)。

               当数据库发生故障时,用它对数据库进行恢复。  

          

             逻辑存储结构:描述oracle数据库从逻辑上如何组织和数据(如表、索引)管理的方式。

                数据块:是oracle数据库从磁盘读/写数据的最小存储单元,也是数据库输入/输出的最小单元。常见2KB或4KB。

                  OS块:是操作系统从磁盘读/写的最小单元。

                数据区间:由一组连续的数据块构成,是数据库系统为存储空间分配的一个逻辑单位。

                数据段:由若干数据区间构成。

                  数据段:用于存放表中的记录。----------建表时会创建

                  索引段:用于存放索引数据。 ----------创建索引时会创建

                  回滚段:用于存放数据被修改之前的旧值。----------系统可利用该段进行回滚操作

                  临时段:执行SQL语句,用于存放中间的结果和数据。-------一旦执行完毕,临时占用的空间归还给系统

                逻辑对象:指用户可操作的数据库对象。包括表、索引、视图、簇、同义词、触发器、过程、函数等21种对象。

                表空间:Oracle数据库通过表空间来组织数据。本质是组织红素局文件的一种方式。

                数据库:由若干的表空间构成。

        Oracle数据字典由一组表和视图组成,可以把数据字典划分为静态数据字典和动态性能表两大类。

   在Oracle数据库中相关管理操作:

      权限管理:当创建新用户时,权限域为空,权限管理分为两种---授予权限--收回权限。

         1.系统权限授权 ----GRANT system_pri | role TO user [WITH ADMIN OPTION ]

            system_priv|role: 要授予的系统权限。

            WITH ADMIN OPTION:把想其他用户授权的能力传递给被授予者。

         2.对象权限授权 ----GRANT object_priv ON object_name TO user [WITH ADMIN OPTION ]

            object_priv:表示具体为某个对象,如视图、表。。

            WITH ADMIN OPTION:把想其他用户授权的能力传递给被授予者。

         3.收回权限 -----REVOKE system_priv|role FROM user [WITH ADMIN OPTION ]

            system_priv|role: 要收回的系统权限。----可以使用关键字ALL或ALL PRIVILEGES将所有权限收回。

      Oracle数据库中的数据类型:

          数值型-----number[(P,R)]-----用于存储整数和实数。p--精度,R---刻度范围,在-84,127内取值。

          字符型-----char(n)----用于存储定长的字符串---实际值不够以空格填充

             -----varchar2(n)----描述变长字符串----按实际长度分配空间

             -----Long----存储高达2GB的可变字符串

             -----nchar、nvarchar2---国家字符集--使用方法与char、varchar2相同

          日期型------Date---存储时间信息,用于存储固定长度的日期和时间数据,占7个字节。

             ------times tamp(n)---时间戳,允许存储小数形式的秒值。n表示秒的小数位数

             ------interval year to month----存储以年份和月份表示的时间段。

             ------interval day to second----存储以天数、小时数、分钟数和秒数表示的时间段。

          LOB型-----用来存储数据库字段,最大可存储4GB

             -----CLOB--character lob ,能存储大量字符数据

             -----NCLOB---用来存储可变长度的Unicode字符数据

             -----BLOB---binary lob(二进制LOB) 可以存储较大的可变长度的二进制对象,如图形、视频、声音文件

             ------BFILE--binart file(二进制文件),用于存储指向二进制格式文件的定位器。

          REW----类似于char,存储二进制数据

          LONG REW---类似于long,存储二进制数据

          行类型---ROWID--又称伪列类型,用于数据库内部保存表中的每条记录的物理地址。

             ---UROWID--行标识符,用于表示索引化表中行的逻辑地址

三、Mysql数据库简介

    Mysql数据库:是一个多用户、多线程的小型数据库服务器,具有免费、跨平台性等特点。      

      mysql只有一个登陆用户-------------与oracle数据库不同---权限不同。

        mysql虽然只有一个登陆用户,但用户的权限分为ROOT用户和普通用户。ROOT用户为超级管理员,具有所有权限。而普通用户只拥有被赋予的权限。

      在MYSQL中存在一个名为mysql的数据库,该数据库中的表均为权限表,其中USER表是最为重要的一张表。

        USER表有诸多列,主要分为四种,用户列--权限列--安全列--资源控制列。这些列记录着每个用户的详细信息,修改某些列情况。

   理解:mysql的安装目录:

        bin目录:用于放置一些可执行文件。

        data目录:用于存放一些日志文件。

        include目录:用于放置一些头文件。

        lib目录:用于放置一系列的库文件。

        share目录:用于存放字符集、语言目录

        my.ini:是Mysql数据库中使用的配置文件。

        my-huge.ini:适合超大型数据库的配置文件

        my-large.ini:适合大型数据库的配置文件。

     注意:一般情况读取my.ini配置文件,其他的配置文件适用于不同的数据库模板。

    数据类型:不同的数据类型决定了MySQL存储数据方式的不同。

      整数型  TINYINT   1字节 迷你整型

           SMALLINT  2字节  小整型

           MEDIUMINT 3字节   中整型

           INT     4字节 标准整型

           BIGINT    8字节 大整型      

      浮点数类型  DOUBLE     8字节

             FLOAT      4字节  精度有限,会丢失精度。超出部分,系统四舍五入。 

      定点数类型  DECIMAL(M,D)M+2   M表示数据的长度,D表示小数点后的长度,默认10,2。小数点固定,精度固定 。       

      时间和日期类型  YEAR   1字节   表示年份。                

               DATE   4字节   表示日期

               TIME   3字节  表示时间值HH:MM:SS

               DATETIME   8字节  表示日期和时间 格式YYYY-mm-dd:ii:ss有0值;

               TIMESTAMP  4字节   表示日期和时间。可CURRENT_TIMESTAMP输入系统当前时间)

      

      字符串和二进制类型

        CHAR 表示固定长度的字符串

           VARVHAR 表示可变长度的字符串

         BINARY 表示固定长度的二进制数据

        VARBINARY 表示可变长度的二进制数据

        BOLB 表示二进制大数据

        TEXT 表示大文本数据

        ENUM 表示枚举类型,只能储存一个枚举字符串值

              (数据格式ENUM(‘值1’,‘值2’,‘值3’,…))

         SER 表示字符串对象,可以有零或多个值

        BIT 表示字段类型

    注意:不同的字节用法不同

数据库的名称不可修改 / 修改数据库仅限于库选项:字符集和校对集(校对集依赖字符集)charset / collate   

Mysql中注意:永远不要使用“UTF-8”的格式。-----------Mysql中的“utf-8”实际不是真正的UTF-8,“uft-8”只支持每个字符最多三个字节,

  而真正的UTF-8每个字符最多能支持4个字节。因此会出现编码问题---------这时候应该使用字符集“utf8mb4” 。

  字符串与日期的值一般用单引号中。添加数据时,非数值数据都需要引号包裹。

笔记摘抄书籍----《Oracle数据库系统应用开发使用教程》

        《Mysql数据库入门》