zoukankan      html  css  js  c++  java
  • Oracle系列十 创建和管理表

    常见的数据库对象

    Oracle 数据库中的表

    用户定义的表:

    •     用户自己创建并维护的一组表
    •     包含了用户所需的信息
    •     如:SELECT * FROM user_tables;查看用户创建的表


    数据字典:

    •     由 Oracle Server 自动创建的一组表
    •     包含数据库信息

    查询数据字典

    查看用户定义的表.

    SELECT
         table_name
    FROM     
         user_tables ;

    查看用户定义的各种数据库对象

    SELECT DISTINCT 
        object_type
    FROM      
        user_objects ;

    查看用户定义的表, 视图, 同义词和序列

    SELECT   
         *
    FROM     
        user_catalog ;

    命名规则

    表名和列名:

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


    CREATE TABLE 语句

    必须具备:

    • CREATE TABLE权限
    • 存储空间
    CREATE TABLE [schema.]table
            (column datatype [DEFAULT expr][, ...]);

    必须指定:

    • 表名
    • 列名, 数据类型, 尺寸

    创建表

    语法

    CREATE TABLE dept (
        deptno   NUMBER(2),
        dname    VARCHAR2(14),
        loc      VARCHAR2(13)
    );


    数据类型


    使用子查询创建表

    • 使用 AS subquery 选项,将创建表和插入数据结合起来
    • 指定的列和子查询中的列要一一对应
    • 通过列名和默认值定义列
    CREATE TABLE table
            [(column, column...)]
    AS subquery;


    复制现有的表:

    create table emp1 as select * from employees;
    create table emp2 as select * from employees where 1=2;

    注:创建的emp2是空表。


    使用子查询创建表举例

    CREATE TABLE dept80
        AS
            SELECT
                employee_id,
                last_name,
                salary * 12 annsal,
                hire_date
            FROM
                employees
            WHERE
                department_id = 80;

    ALTER TABLE 语句

    使用 ALTER TABLE 语句可以:

    • 追加新的列
    • 修改现有的列
    • 为新追加的列定义默认值
    • 删除一个列
    • 重命名表的一个列名

    ALTER TABLE 语句

    • 使用 ALTER TABLE 语句追加, 修改, 或删除列的语法
    ALTER TABLE table
    ADD           (column datatype [DEFAULT expr]
               [, column datatype]...);
    ALTER TABLE table
    MODIFY       (column datatype [DEFAULT expr]
               [, column datatype]...);
    ALTER TABLE table
    DROP COLUMN  column_name;
    ALTER TABLE table_name RENAME COLUMM old_column_name
    TO new_column_name

    追加一个新列

    • 使用 ADD 子句追加一个新列
    • 新列是表中的最后一列
    ALTER TABLE dept ADD (
        job_id   VARCHAR2(9)
    );

    修改一个列

    • 可以修改列的数据类型, 尺寸和默认值
    • 对默认值的修改只影响今后对表的修改
    ALTER TABLE dept80 MODIFY (
        last_name VARCHAR2(30)
    );
    ALTER TABLE dept80 MODIFY (
        salary NUMBER(9,2) DEFAULT 1000
    );


    删除一个列

    • 使用 DROP COLUMN 子句删除不再需要的列.
    ALTER TABLE  dept80
    DROP COLUMN  job_id; 

    重命名一个列

    • 使用 RENAME COLUMN [table_name] TO子句重命名列
    ALTER TABLE  dept80
    RENAME COLUMN  job_id TO id; 

    删除表

    • 数据和结构都被删除
    • 所有正在运行的相关事务被提交
    • 所有相关索引被删除
    • DROP TABLE 语句不能回滚
    DROP TABLE dept80;
    Table dropped.

    清空表
    TRUNCATE TABLE 语句:

    • 删除表中所有的数据
    • 释放表的存储空间
    TRUNCATE TABLE detail_dept;
    • TRUNCATE语句不能回滚
    • 可以使用 DELETE 语句删除数据,可以回滚

    对比:

      delete from emp2;
      select * from emp2;
      rollback;
      select * from emp2;

    改变对象的名称

    • 执行RENAME语句改变表, 视图, 序列, 或同义词的名称
    • 必须是对象的拥有者
    RENAME dept TO detail_dept;
  • 相关阅读:
    视频直播和实时音视频区别调研
    MySQL5.7 并行复制
    MySQL5.7 并行复制
    SSH 超时设置
    有赞透明多级缓存解决方案(TMC)设计思路
    有赞透明多级缓存解决方案(TMC)设计思路
    spring.net异常处理
    python之for学习
    pyhton小方法
    时间戳处理
  • 原文地址:https://www.cnblogs.com/loaderman/p/11738296.html
Copyright © 2011-2022 走看看