zoukankan      html  css  js  c++  java
  • Oracle入门第四天(上)——表管理与数据处理

    一、常见数据库对象

      1.基本对象

      

      对应的对象英文名参考https://docs.oracle.com/cd/B19306_01/server.102/b14220/intro.htm#sthref69

      2.表操作简介

        其他对象将会在后续章节介绍

          用户创建的表:包含用户创建和维护的表,

        查看创建的表:

        使用如下语句查看用户创建的表:(当然PL/SQL中可视化提供了十分方便的查看)

    SELECT * FROM user_tables;
    SELECT    * FROM      user_catalog ;

         表的命名规则:与JAVA命名规则略有偏差:

    表名和列名:
    必须以字母开头
    必须在 130 个字符之间
    必须只能包含 A–Z, a–z, 09, _, $, 和 #
    必须不能和用户定义的其他对象重名
    必须不能是Oracle 的保留字

          创建表先决条件:

            CREATE TABLE权限

            存储空间

          创建表语法:

    CREATE TABLE [schema.]table
            (column datatype [DEFAULT expr][, ...]);

          简单示例:

    CREATE TABLE emp1(
           id NUMBER(10),
           name VARCHAR2(20),
           salary NUMBER(10,2),
           hire_date DATE
    )

        也可以使用SELECT通过结果集创建

    CREATE TABLE emp2
    AS
    SELECT employee_id id,last_name name FROM employees

        当然,也可以只复制表结构而不需要表数据:(直接通过过滤条件不成立进行筛选)

    CREATE TABLE emp3
    AS
    SELECT * FROM employees WHERE 1=2

         给字段加注释的写法(注意主MYSQL不一样!)

    comment  on  column  表名.字段名   is  '注释内容';
    comment on column OPERATOR_INFO.MAIN_OPER_ID is '归属操作员';
    comment on table 表名  is  '注释内容';
    comment on table OPERATOR_INFO is  '操作员信息表';

         数据类型:

        

       完整数据类型请参考官方文档https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#SQLRF30020

         修改表:

        语法:

        

        示例:

      增加列:

    ALTER TABLE emp1
    ADD(product VARCHAR2(100))

      修改列:

    ALTER TABLE emp1
    MODIFY(product VARCHAR2(101))

      删除列:

    ALTER TABLE emp1
    DROP COLUMN product

          删除表:

    DROP TABLE dept80;

          清空表:(DELETE可以回滚,而TRUNCATE无法回滚)

    TRUNCATE TABLE

        用于清除表数据,释放存储空间,只清空表数据,但保留表结构

        改变对象名称:

    RENAME dept TO detail_dept;

     二、数据处理

      插入记录

      语法:(单条记录)

    INSERT INTO    table [(column [, column...])]
    VALUES        (value [, value...]);

      示例:

    INSERT INTO emp1 VALUES(1,'',3000,to_date('2018-01-05','yyyy-mm-dd'));

      // 插入指定列等不再赘述,参考MySQL章节

      使用结果集进行插入:

    INSERT INTO emp1(col1,col2) SELECT col1,col2 FROM empyolees

      创建插入脚本:

    INSERT INTO departments 
                (department_id, department_name, location_id)
    VALUES      (&department_id, '&department_name',&location);

      之后会弹出对话框:

      

      更新记录

      语法:

    UPDATE        table
    SET        column = value [, column = value, ...]
    [WHERE         condition];

      示例:(请使用条件语句过滤,除非你确定需要更改全表的记录!)

    UPDATE emp2 SET NAME = '' WHERE ID = 1;

      当然,如果没有显式地使用COMMIT,是可以使用rollback进行回滚

    一个数据库事务起始于一个SQL语句,中止于以下4种事件之一:
    COMMIT或ROLLBACK语句
    DDL/DCL隐式提交
    用户退出时自动提交
    系统强行关闭时取消事务
    事务结束后,下一条SQL语句将开始一个新的事务。

      关于rollback的一些介绍,参考http://blog.csdn.net/jack_ywj/article/details/52151975

       删除记录

      语法:(未提交的支持回滚)

    DELETE FROM      table
    [WHERE      condition];

      示例:

    DELETE FROM emp2 WHERE ID = 206;

    三、数据库事务

        更多概念介绍参考MySQL与JDBC随笔

      Oracle事务由以下几部分组成: 

        一个或多个DML 语句

        一个 DDL(Data Definition Language – 数据定义语言) 语句

        一个 DCL(Data Control Language – 数据控制语言) 语句

      事务的开始与结束:

          以第一个 DML 语句的执行作为开始

        以下面的其中之一作为结束:

                  ——在结束之前其他用户是看不到改变的,直到提交才能在数据库显示而被所有用户查看到。并且也有类似MySQL的行锁!

          COMMIT 或 ROLLBACK 语句

          DDL 语句(自动提交)

          用户会话正常结束

          系统异常终止

      事务控制

      

        

           使用 SAVEPOINT 语句在当前事务中创建保存点。

        使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。

        示例:

    UPDATE...
    SAVEPOINT update_done;
    Savepoint created.
    INSERT...
    ROLLBACK TO update_done;
    Rollback complete.
  • 相关阅读:
    【字符串/广搜】P1032 字串变换
    【动态规划】P1541 乌龟棋
    【动态规划/递归】(团队内部比赛试题)T134293 T2.货币系统问题
    Redis-事务
    Redis-Pipeline
    Redis-通过前缀获取所有key
    Spring 三级缓存
    TopK_LRU_归并

    如何从一亿个数组里找出最大的十个
  • 原文地址:https://www.cnblogs.com/jiangbei/p/8196078.html
Copyright © 2011-2022 走看看