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;

    授权查询

  • 相关阅读:
    BZOJ 1101 莫比乌斯函数+分块
    BZOJ 2045 容斥原理
    BZOJ 4636 (动态开节点)线段树
    BZOJ 2005 容斥原理
    BZOJ 2190 欧拉函数
    BZOJ 2818 欧拉函数
    BZOJ 3123 主席树 启发式合并
    812. Largest Triangle Area
    805. Split Array With Same Average
    794. Valid Tic-Tac-Toe State
  • 原文地址:https://www.cnblogs.com/Ace-suiyuan008/p/9782967.html
Copyright © 2011-2022 走看看