zoukankan      html  css  js  c++  java
  • Oracle基础 10 表 table

    --查看表的结构

    desc ygb; 

    select * from user_tab_columns
    where table_name='YGB';


    --新建表ygb

    create table ygb(
      bh number(3),
      eid varchar2(6) constraint eid_p primary key,
      ename varchar2(10),
      bdate date,
      sex char(1),
      city varchar2(20)
    );     


    JOHN@ test10g> create table tbstest
      2  (id int,
      3   dt date
      4  )
      5  tablespace tbs_test;    --指定表存放的表空间     


    --通过查询新建表

    create table emptest as  
    select * from emp;          


    如果此表有几百万行,并且你的时间不允许,那么还有两种方法可以提高创建含有大量数据的新表的速度。可以使用 parallel 和 nologging 选项来提高装载大表的速度。parallel 选项允许你用多个进程并行执行数据加载,并且 nologging 选项指示不要把该信息记录进重做日志文件和回滚段(除了为内务处理目的外)。如下所示:

    create table employee_new
    as select * from employees
    parallel degree 4
    nologging;


    另一种方法是将一个表简单的从一个表空间移动到另一个表空间。

    alter table employee move new_tablespace;

    当移动一个表时,行的 rowid 改变了,因而使该表的索引不可用。你必须重新建立索引或者在你移动该表后重建它们。


    --重命名表

    alter table ygb rename to newname;


    --删除表

    drop table emp;                          --删除表
    drop table emp purge;                    --删除表,不放到回收站
    drop table emp cascade constraints;      --将约束一起删除

    truncate table emp;                      --截断表


    --修改表的结构

    alter table emp add (job_id number);                        --追加列 
    alter table emp modify (job_id number(4,0) default 1001);   --修改列
    alter table emp drop column job_id;                         --删除列 
      alter table emp drop (job_id);
    alter table emp rename column job_id to jobid;              --重命名列
    income integer generated always as (salary+jiangjin);       --虚拟列 


    如果要删除列的那个表中包含了大量的数据,你可以将该列标记为未用,而不用完全删除数据。你在任何查询或试图中都不会看到该列,并且所有定义在该列上的所有依赖对象(如约束和索引)都被删除。事实上,用词方法可以快速“删除”一个大数据列。

    alter table emp set unused column job_id;    --标记未使用列


    然后,可以在某个维护时间中使用以下命令永久删除这两列。

    alter table emp drop unused columns;          --删除未使用列     


    如果认为表中行太多可能潜在的消耗撤销空间,可以用可选的 checkpoint 子句删除一列。通过在一定数目的行后使用检查点,将在删除该列的同时减少撤销数据的产生。参见下面的例子。每当在emp中删除10000行,数据库就使用一个检查点:

    alter table emp drop unused columns checkpoint 10000;

    alter table emp read write;     --读写状态
    alter table emp read only;      --只读状态


    可以在只读表上执行以下操作:
    select
    create/alter/drop index
    alter table add/modify/drop/enable/disable constraint
    进行物理特性更改的 alter table
    rename table 和 alter table rename to
    drop table

    --创建会话级临时表

    create global temporary table temp_tb1(col_a varchar2(30)) 
    on commit preserve rows;
     
    --创建事务级临时表

    create global temporary table temp_tb2(col_a varchar2(30)) 
    on commit delete rows

    --insert

    insert into ygb
    values(bhseq.nextval,101,'A','2-3-86','男','西安'); 

    --update

    update gzb
    set salary=salary*1.1
    where eid=108;       

    --delete

    delete from ygb
    where eid=108;       


    --查看表的大小

    IKKI@ test11g> select segment_name,segment_type,bytes from user_segments
      2  where segment_name='EMP';

    SEGMENT_NAME    SEGMENT_TYPE  BYTES
    --------------- ----------    ----------
    EMP             TABLE         65536

  • 相关阅读:
    JAVA第一次上机作业
    如何设置FreePBX的数据库用户可以通过远程来连接Mysql数据库?
    Mysql 用户root密码重置
    使用FreePBX和第三方线路对接
    防御攻击
    Xshell配置公钥,免密码登陆
    centos7防火墙启动关闭
    Windows执行bat脚本乱码
    Windows开机执行bat脚本
    bat脚本之启动MySQL服务
  • 原文地址:https://www.cnblogs.com/john2017/p/6364475.html
Copyright © 2011-2022 走看看