zoukankan      html  css  js  c++  java
  • Oracle数据库(一)

    Oracle数据库

    Oracle 是一个数据库管理系统,是Oracle公司的核心产品。其在数据安全性与安整性控制方面的优越性能,以及跨操作系统、跨硬件平台的数据操作能力。

    基于“客户端/服务器”(Client/Server)系统结构。

    Oracle主要的特点:

      1.支持多用户、大事务量的事务处理。

      2.在保持数据安全性和完整性方面性能优越。

      3.支持分布式数据处理。将公布在不同物理位置的数据库用通信网络连接起来,组成一个逻辑上统一的数据库,完成

      数据处理任务。

      4.具有可移植性。Oracle可以在Windows、Linux等多个操作系统平台上使用。

    Oracle的基本概念:

      1.数据库。这里的数据库是磁盘上存储数据的集合,在物理上表现为数据文件、日志文件和控制文件等。在逻辑上以表空

      间形式存在。必须首先创建数据库,然后才能用Oracle。可以在Database Configuation Assistant上创建。

      2.全局数据库名。用于区分一个数据库的标识。它由数据库名称和域名构成,类似网络中的域名,使数据库的命名在整个

      网络环境中唯一。

      3.数据库实例。每个启动的数据库都对应一个数据库实例,由这个实例来访问数据库中的数据。

      4.表空间。每个数据库都是由若干个表空间构成的,用户在数据库中建立的所有内容都被存储到表空间中。一个表空间可

      以由多个数据文件组成,但一个数据文件只能属于一个表空间。

      5.数据文件。扩展名是.dbf,是用于存储数据库数据的文件。一个数据文件中可能存储很多个表的数据,而一个表的数据

      也可以存放在多个数据文件中。数据文件和数据库表不存在一对一的关系。

      6.控制文件。技展名.ctl,是一个二进制文件。控制文件是数据库启动及运行所必需的文件。存储数据文件和日志文件的

      名称和位置。Oracle 11g默认包含三个控制文件。

      7.日志文件。扩展名.log,它记录了数据的所有更改信息,并提供了一种数据恢复机制,确保在系统崩溃或其他意外出现

      后重新恢复数据库。在工作过程中,多个日志文件组之间循环使用。

      8.模式和模式对象。模式是数据库对象(表、索引等,也称模式对象)的集合。

    Windows下Oracle数据库服务:

    1.OracleServiceSID服务是Oracle数据库服务。此服务对应名为SID(系统标识符)的数据库实例创建的。必须启动。

    2.OracleOraDb11g_homelTNSListener服务是监听器服务。要远程连接数据库服务器,必须连接监听进程,该服务只有

    在数据库需要远程访问时候才需要。(PL/SQL等第三方工具连接就相当于远程连接)。

    3.OracleDBConsoleSID服务是数据库控制台服务,是采用浏览器方式打开的,用于使用Oracle企业管理器的程序。如

    果进入 基于Web形式的企业管理(EM)控制平台,必须要启动OracleDBConsoleSID服务。

    连接数据库:

    Sys和System用户都是Oracle的系统用户,Scott用户是Oracle数据库的一个测试账户,里男包含一些测试例表。每

    个用户下所有的对象称为模式对象。

      1.用SQL Plus工具登录:

        1)cmd->sqlplus->用户名:->密码:

        2)直接打开程序SQL Plus->用户名:->密码

        3)在输入用户名处->用户名/密码@网络服务名

        4)命令窗口:sqlplus /nolog 这样就只是打开了sqlplus而并没有连接数据库,之后要连接数据库得继续敲:

        connect 用户名/密码@数据库名;

      2.PL/SQL Developer工具

        1)用户名:输入System.

        2)口令:输入对应密码。

        3)数据库:输入已经配置好的网络服务名,如orclDB。

        4)连接为:Normal普通用户;sysOper数据库操作员;sysDBA数据库管理员。

      3.Java连接Oracle:

        driver: oracle.jdbc.driver.OracleDriver

        url: jdbc:oracle:thin:@localhost:1521:数据库名

    DUAL伪表,在Oracle的查询语句中select和from关键字一定有值,但在某些情况下不需要from,如查询常量或函数,为

    了满足要求,Oracle使用DUAL伪表来实现要求。

    如: select sysdate from dual;--查询出当前系统日期和时间

    Oracle数据类型:

    1、数值数据类型

    • 可以存储整数、
    • 浮点数和实数 最高精度为 38 位,默认是18位
    • 范围-1*10130——9.999…99*10125

     

    2、日期时间型

    日期时间数据类型存储日期和时间值,包括年、月、日,小时、分钟、秒

    主要的日期时间类型有:

    • DATE - 存储日期和时间部分,精确到整个的秒
    • TIMESTAMP - 存储日期、时间和时区信息,秒值精确到小数点后6位

    Select sysdate from dual;

    Select systimestamp from dual;

    3、大对象(LOB)

    • LOB 称为“大对象”数据类型,可以存储多达 4GB 的非结构化信息,例如声音剪辑和视频文件等
    • LOB 数据类型允许对数据进行高效、随机、分段的访问

    1.CLOB(Character LOB,字符LOB)存储大量字符数据。可以存储单字节字符数据和多字节字符数据,主要用于存储非结

    构化的XML多档。如新闻、内容介绍等含大量文字内容的文档。

    2.BLOB(Binary LOB,二进制LOB)可以存储较大的二进制对象,如图形、视频剪辑和声音剪辑等。

    3.BFILE(Binary File,二进制文件)能够将二进制文件存储在数据库外部的操作系统文件中。BFILE列存储一个BFILE

    定位器,指向位于服务器文件系统上的二进制文件。最大4GB。

    4.NCLOB数据类型用于存储大的nchar字符数据。支持固定宽度字符和可变宽度字符(Unicode字符数据)。使用方法同

    CLOB类似。

    早期使用Long数据类型存储大数据。

    4、伪列

    • Oracle 中伪列就像一个表列,但是它并没有存储在表中
    • 伪列可以从表中查询,但不能插入、更新和删除它们的值
    • 常用的伪列有ROWID和ROWNUM

    ROWID 是表中行的存储地址,该地址可以唯一地标识数据库中的一行,可以使用 ROWID 伪列快速地定位表中的一行

    ROWNUM 是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数

    举例:

    select * from(

       select a.*,rownum rn from (  --这里设置了rownum的列别名,这样就可以在外层查询用between and语句了 

         select * from employee order by sal desc

       ) a

    )

    where rn between 5 and 9;

    SQL语言的组成

    • DDL(数据定义语言):维护(定义、修改、删除)SQL模式对象.  create创建、alter更改、truncate截断、drop删除
    • DML (数据操纵语言) :包括数据查询和数据更新(增、删、改,查).  insert插入、select选择、delete删除、update更新
    • DCL (数据控制语言) :对数据的访问控制(授予权限、取消权限).  commit提交、savepoint保存点、rollback回滚
    • TCL (事务控制语言) :对事务的控制(提交、回滚、保存点)  grant授予、revoke回收

    DDL – Create Table命令

    创建表

    语法:

      CREAT TABLE [模式名.]基本表名

      ( 列名1 类型1,

      列名2 类型2,

      ……

      完整性约束... )

      [tablespace “表空间名”];

    create table t_student
    (
        SID  char(5) not null  primary key, --学号
        Sname varchar2(10) not null,  --姓名
         Ssex  char(1) not null,   --性别
        Sbirthday  date  null,  --出生日期
        Stel varchar2(13) null, --联系电话
        Sclass int null  --班级
    );

    DDL – Alter Table命令

    修改表结构:

    ALTER TABLE 基本表名 ADD/MODIFY/DROP (增加/修改/删除) 列名 类型名(增加/修改时写出)或增加/修改/删除 约束

    实例:

    1、增加字段:ALTER TABLE   t_student   Add   f_address  char(50);

    2、修改字段:ALTER TABLE   t_student   Modify   f_address  varchar2(50);

    3、删除字段:ALTER TABLE t_student Drop column f_address ;

    4、添加约束: ALTER TABLE t_student Add constraint uk_Sname Unique(Sname);

    DDL – 截断及删除命令

    截断:

    Truncate TABLE 基本表名

    TRUNCATE  TABLE   t_student;

    注意:

    1、截断表是将表中所有记录删除,但保留表结构,并且不写日志

    2、trancate table 是DDL语言,delete from table_name 是DML语言

    删除表:

    DROP TABLE 基本表名

    DROP  TABLE  t_student;

    数据的完整性

    可靠性+准确性=数据完整性

    根据数据完整性机制所作用的数据库对象和范围不同,数据完整性可分为以下四种类型

    • 实体完整性
    • 域完整性
    • 参照完整性(引用完整性)
    • 自定义完整性

    1、实体完整性

    约束方法:唯一约束、主键约束

    2、域完整性

    约束方法:限制数据类型、检查约束、默认值、非空约束

    3、引用完整性

    约束方法:外键约束

    4、自定义完整性

    约束方法:规则、存储过程

    约束实现数据完整性

    • 数据存放在表中
    • “数据完整性的问题大多是由于设计表引起的”
    • 创建表的时候,就应当保证以后数据输入是正确的
    • 错误的数据、不符合要求的数据不允许输入

    创建表:保证数据的完整性 = 实施完整性约束

    实体完整性:主键约束,唯一约束

    域完整性:限制数据类型、检查约束、默认值、非空约束

    引用完整性:外键约束

    自定义完整性:规则、存储过程

    实例:

    创建表时

    sex char(2) check (sex='' or sex='')
    constraint ck_sex check (sex='' or sex='')

    修改表时:

    alter table student add constraint ck_sex check(sex='' or sex='')

    数据操纵语言

    数据操纵语言用于检索、插入和修改数据

    数据操纵语言是最常见的SQL命令

    数据操纵语言命令包括:

    • INSERT
    • DELETE
    • UPDATE
    • SELECT

    DML – INSERT 命令

    1、INSERT 命令的基本语法:

      INSERT INTO 基本表名[(columns_list)]

      VALUES(values_list)

    2、插入日期类型的值

    • 日期数据类型的默认格式为“DD-MON-RR”
    • 使用日期的默认格式
    • 使用TO_DATE函数转换
    • 修改当前会话的日期格式

    举例:

    INSERT INTO t_student 
    VALUES(‘10014’, ‘许文强’, ‘m’, ‘25-5月-88’, ‘13202010118',1);
    INSERT INTO t_student(SID,Sname,Ssex,Sbirthday)
    VALUES (‘10015’,‘冯程程','f',TO_DATE('1990-10-18', 'YYYY-MM-DD'));

    3、插入来自其它表中的记录

    语法:

    INSERT INTO <table_name> [(cloumn_list)]

    SELECT column_names FROM <other_table_name>;

    CREATE TABLE t_stutemp AS
         SELECT * FROM   t_student  WHERE 1=2;
    INSERT INTO t_stutemp
         SELECT * FROM  t_student  WHERE  Sclass=3;
    INSERT INTO t_stutemp(SID,Sname,Stel) 
         SELECT   SID,Sname,Stel  FROM   t_student
         WHERE  Sclass=2; 

    DML – UPDATE命令

    UPDATE命令的基本语法:

    UPDATE <table_name> SET column_name = value [, column_name = value,……] [WHERE condition];

    例:修改张三的出生日期为 88年1月8号

    Update  t_student
    set   Sbirthday =08-1月-88where Sname = ‘张三’;

    DML – DELETE 命令

    DELETE命令的基本语法:

    DELETE [FROM] <table_name> [WHERE condition];

    例:删除学号为10014的学生信息

    Delete t_student
    where  SID =10014’;

    事务控制语言

    事务是最小的工作单元,作为一个整体进行工作

    保证事务的整体成功或失败,称为事务控制

    用于事务控制的语句有:

    • COMMIT - 提交并结束事务处理
    • ROLLBACK - 撤销事务中已完成的工作
    • SAVEPOINT – 标记事务中可以回滚的点

    数据控制语言为用户提供权限控制命令

    用于权限控制的命令有:

    • GRANT 授予权限
    • REVOKE 撤销已授予的权限
    GRANT SELECT ON  t_student 
         TO  user1  WITH  GRANT  OPTION;
    REVOKE  SELECT, UPDATE ON  t_student
         FROM user1;

     数据控制语言

    数据控制语言为用户提供权限控制命令

    用于权限控制的命令有:

    • GRANT 授予权限
    • REVOKE 撤销已授予的权限

    实例:

    GRANT SELECT ON  t_student 
         TO  user1  WITH  GRANT  OPTION;
    REVOKE  SELECT, UPDATE ON  t_student
         FROM user1;

    授权查询

  • 相关阅读:
    node.js的安装与第一个hello world、node.js的初始化
    微信小程序组件学习中
    jq 滚轮监听事件
    数据库的优化(转)
    jquery zTree的基本用法
    Linux常用命令大全
    软件架构与设计 百度网盘的pdf电子书籍
    项目:IT资源共享资源(登录后端)<2>
    项目:IT资源共享资源(登录前端)<1>
    Node简单服务器开发
  • 原文地址:https://www.cnblogs.com/Ace-suiyuan008/p/9782967.html
Copyright © 2011-2022 走看看