oracle数据库

演变:
    最开始是手工来管理数据,之后是通过文件来管理数据,由于文件管理数据有很多弊端,比如不便于数据的修改以及数据之间的共享,数据大量增加时不可能一直用文件管理,所以最后发展为数据库管理数据。

1.什么是数据库?

    按照数据结构来组织、管理、存储数据的仓库;
    数据库管理系统(DBMS):管理数据库的软件;

2.数据库有哪些?

    数据库分为关系型数据库和非关系型数据库。
    关系:描述2个元素间的关联或对应关系的
    表:一个关系型数据库由多个二维表组成,表是关系型数据
       库的基本存储结构。表由行(记录)和列(字段)组成,
       表和表之间存在关联关系。

    常见的关系型数据库有哪些?
    oracle        oracle     商用收费
    mysql         oracle      免费,规模较oracle/DB2小
    DB2            IBM
    SQL Server     微软
    Sybase         Sybase

3.SQL

    SQL:Structured Query Language,结构化查询语言,SQL语言是在关系型数据库上执行数据操作、检索、维护所使用的标准语言。
    SQL语言可分为:
    数据定义语言DDL
        创建(CREATE)、修改(ALTER)、删除(DROP)数据库对象
        的结构
    a)创建表
            CREATE TABLE emp(
                id NUMBER(4),
                name VARCHAR2(10),
                brith DATE,
                salary NUMBER(7,2)
            );
    b)修改表结构
            ALTER TABLE emp  --增加字段
            ADD(age NUMBER(3));

            ALTER TABLE emp  --删除字段
            DROP(age);

            ALTER TABLE emp  --修改字段
            MODIFY(salary NUMBER(7,2) DEFAULT 0.00)

    c)删除表  DROP TABLE emp;
    d)查看表结构  DESC emp;
    e)修改表名    RENAME emp TO emp1;

    数据操纵语言DML
    插入数据(INSERT)、更新数据(UPDATE)、删除数据(DELETE)
    注:DML语句是伴随事物操作的
    a)插入数据
    INSERT INTO emp
    (id,name,brith,salary)
    VALUES
    (1,'jack',TO_DATE('2008-08-08','YYYY-MM--DD'),50000.00);
    COMMIT; 
    b)更新数据
    UPDATE emp
    SET salary=10000.00
    WHERE name='jack';--如果不加限定条件则是对所有数据进行修改i
    COMMIT;

    c)删除数据
    DELETE FROM emp
    WHERE name='jack';
    COMMIT;

    事物控制语言TCL
    Transaction Control Language,都是伴随事物控制的,只有提交了事物之后,对数据的操作才有效,否则事物会回滚,不会对数据库中相应的数据信息更改。
    commit:提交事物,只有提交了事物对数据的更改才有效。
    rowllback:事物回滚,取消已经更改的数据(若已提交则不能修改)。
    savepoint:回滚点,当前事物可以回退到指定的点,可以实现部分改变。

    数据查询语言DQL
    Data Query Language
    SELECT * FROM emp;
    有关联查询、高级查询等,比较多,后面会详细列举

    数据控制语言DCL
    Data Control Language ,主要用于权限的授予与回收。
    CREATE user:创建用户
    GRANT:用于给用户或者角色授予权限
    REVOKE:用于回收用户或者角色已有的权限

4.oracle数据库对象

     表:关系型数据库存储数据最基本的结构

    视图:VIEW,也叫虚拟表,是一张不存在的表,是一条查询
        语句所对应的结果集的映射,其中结果集的名字就是视
        图名。视图不包含任何数据,基表数据发生变化则视图
        数据也会发生变化。视图也分为简单视图(不包含单行
        函数、表达式、分组函数等)、复杂视图(包含函数
        等)、连接视图(多个表关联)
    视图的作用:简化复杂查询、限制数据访问
    授予用户创建视图的权限:GRANT CREATE VIEW TO user;
    创建简单视图: CREATE VIEW v_emp
                 AS
                 SELECT id,name,salary
                 FROM emp
                 WHERE name='jack';
    查看视图结构:DESC v_emp;
    查看视图:SELECT * FROM v_emp;
    简单视图可以进行DML操作,复杂视图不能进行DML操作即,如果视图定义中包含了函数、表达式、分组语句、ROWNUM伪列、DISTINCT关键字,则不能对视图进行DML语句操作。

    对简单视图进行DML操作,就是对基表进行DML操作,但视图对其不可见,只是在基表中可以看到数据发生改表,INSERT INTO /UPDATE操作都会污染基表数据,删除视图本身不会影响基表,但是删除视图中的数据会将基表中的数据也删除。

    为了避免对简单视图进行DML操作出现污染基表数据的情况,可以对视图添加检查选项,WITH CHECK OPTION/只读选项WITH READ ONLY            


    索引:是一种允许直接访问表中某一数据行的树形结构,是为了提高查询效率而引入,是与表相互独立的数据库对象。
    索引记录中存有索引关键字和指向表中数据的指针;
    对索引进行I/O操作比对表进行操作要少很多;
    索引是提高查询效率的一种机制;
    索引一旦建立就会被oracle系统自动维护,查询语句中不用指定使用哪个索引。
    创建索引:CREATE INDEX idx_emp_id ON emp;
    给多个字段添加索引:CREATE INDEX idx_emp ON emp(name,salary);
    删除索引:DROP INDEX idx_emp_id;
    重建索引:ALTER INDEX idx_emp_id REBUILD;
    合理使用索引可以提高查询效率,建立索引的原则:
    a.不要在小表上建立索引
    b.限制表上索引数目,索引不是越多越好
    c.删除很少被用的不合理的索引
    d.经常做DML操作的表不用建立索引,因为索引很快会被打乱,无意义。


    序列:SEQUENCE,生成一组数字,常用于表的主键字段生成值使用。
    创建序列:CREATE SEQUENCE seq_emp_id
            START WITH 100
            INCREMENT BY 10;
    删除序列:DROP SEQUENCE seq_emp_id;
    序列支持2个伪列:
    CURRVAL,当前值,不会发生步进,但是新建序列必须调用NEXTVAL后才能调用CURRVAL; 
    NEXTVAL,下一个值,会发生步进。
    序列不会回退。
    UUID:32位不重复字符串,也是主键生成方式的一种。


    约束
    CONSTRAINT,全称是约束条件,也称作完整性约束条件。
    约束是在数据表上强制执行一些校验规则的,当对数据进行DML操作时必须遵守约束条件,否则无法执行操作。
    约束可以保证表中数据的完整性,也可以保证数据间的完整逻辑。

    约束的分类:                    
    非空约束      Not Null          NN(简称)
    唯一性约束     Unique           UQ
    主键约束      Primary Key       PK
    外键约束       Foregin Key      FK(不推荐)
    检查约束       Check            CK

    Not Null,在建表或修改表时建立,如果某一字段是非空约束,则在插入数据时该字段必须给有效值;
    Unique,唯一性约束可以在建表时建立,也可以在之后添加。某一字段为唯一性约束时,则该字段不能出现重复,但可以是null值;

    Primary key,主键约束在功能上看可以看成Not Null 和 Unique的组合。一个表只允许建立一个主键约束,而其他约束个数则没有限制。主键字段可以是单字段也可以是多字段组合(即多字段组合不能为空并且不能重复)。
    主键选取的原则:
    a.主键除了一行的唯一标识之外再无其他用途
    b.主键应该让系统自动生成,而不要人为干预
    c.主键不应包含动态数据变化,如时间戳
    d.主键应尽量建立在单列上

    Foreign Key,外键约束条件定义在2张表上或一张表的2个字段上,用于保证2个字段之间的关系。
    外键对一致性的约束:
    a.从表中定义的外键的列值必须从主表中参照的列值中选取或者为null;
    b.主表中参照的列值被从表参照时,那么主表中该字段的行不能被删除。
    外键约束对性能的降低:
    a.如果在一张频繁进行DML操作的表上建立外键,每次DML操作都会导致数据库对其所关联的表进行检查,产生额外的开销。如果已在程序中控制逻辑,这些判断则是浪费开销,可以省去;
    b.外键确定了主从表的先后生成关系,有时会影响业务逻辑。
    关联不一定需要外键约束:
    a.保证数据的完整性可以由程序或者触发器控制;
    b.简化开发、维护数据时不考虑使用外键约束;
    c.频繁进行DML操作时,不考虑使用外键约束。

    CHECK,检查约束要求字段中的每个值都要满足CHECK中的条件,当建立了检查约束的字段在新增或修改列时都要满足该条件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值