analyze DDL

create global temporary table T_FORM4_POL_CHG_TMP  
(  
POLICY_ID     NUMBER(10) not null,  
CHANGE_ID     NUMBER(10),  
SERVICE_ID    NUMBER(10),  
FINISH_TIME   DATE,  
CASE_ID       NUMBER(10),  
WITHDRAW_TIME DATE,  
CHANGE_STATUS VARCHAR2(2)  
); 

SQL> select count(*) from T_FORM4_POL_CHG_TMP;

  COUNT(*)
----------
         0

SQL> begin
  2  for i in 1..100000000 loop
  3  insert into T_FORM4_POL_CHG_TMP values(i,i,i,'',null,'',null);
  4  end loop;
  5  end;
  6  /

PL/SQL 过程已成功完成。

SQL> select count(*) from T_FORM4_POL_CHG_TMP;

  COUNT(*)
----------
 100000000

SQL> explain plan for select POLICY_ID,SERVICE_ID from t_form4_pol_chg_tmp;

已解释。

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3608374215

--------------------------------------------------------------------------------
---------

| Id  | Operation         | Name                | Rows  | Bytes | Cost (%CPU)| T
ime     |

--------------------------------------------------------------------------------
---------


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |                     |  1000 | 26000 |     2   (0)| 0
0:00:01 |

|   1 |  TABLE ACCESS FULL| T_FORM4_POL_CHG_TMP |  1000 | 26000 |     2   (0)| 0
0:00:01 |

--------------------------------------------------------------------------------
---------


Note

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
-----
   - dynamic sampling used for this statement

已选择12行。

SQL>
SQL> analyze table T_FORM4_POL_CHG_TMP compute statistics for all columns for all indexes;

表已分析。

SQL> explain plan for select POLICY_ID,SERVICE_ID from t_form4_pol_chg_tmp;

已解释。

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3608374215

--------------------------------------------------------------------------------
---------

| Id  | Operation         | Name                | Rows  | Bytes | Cost (%CPU)| T
ime     |

--------------------------------------------------------------------------------
---------


PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |                     |     1 |    26 |     2   (0)| 0
0:00:01 |

|   1 |  TABLE ACCESS FULL| T_FORM4_POL_CHG_TMP |     1 |    26 |     2   (0)| 0
0:00:01 |

--------------------------------------------------------------------------------
---------


Note

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
-----
   - dynamic sampling used for this statement

已选择12行。

SQL>
SQL> select count(*) from T_FORM4_POL_CHG_TMP;

  COUNT(*)
----------
         0

 

/

 

Data Definition Language (DDL) Statements
Data definition language (DDL) statements enable you to perform these tasks:

Create, alter, and drop schema objects
Grant and revoke privileges and roles
Analyze information on a table, index, or cluster
Establish auditing options
Add comments to the data dictionary
The CREATE, ALTER, and DROP commands require exclusive access to the specified object. For example, an ALTER TABLE statement fails if another user has an open transaction on the specified table.

The GRANT, REVOKE, ANALYZE, AUDIT, and COMMENT commands do not require exclusive access to the specified object. For example, you can analyze a table while other users are updating the table.

Oracle implicitly commits the current transaction before and after every DDL statement.

Many DDL statements may cause Oracle to recompile or reauthorize schema objects.

DDL Statements are

 

CREATE        :Use to create objects like CREATE TABLE, CREATE FUNCTION,

                        CREATE SYNONYM, CREATE VIEW. Etc.

ALTER           :Use to Alter Objects like ALTER TABLE, ALTER USER, ALTER

                         TABLESPACE, ALTER DATABASE. Etc.

DROP             :Use to Drop Objects like DROP TABLE, DROP USER, DROP

                        TABLESPACE, DROP FUNCTION. Etc.

REPLACE      :Use to Rename table names.

 

TRUNCATE   :Use to truncate (delete all rows) a table.

 

Create
 

To create tables, views, synonyms, sequences, functions, procedures, packages etc.

 

Example

 

To create a table, you can give the following statement

 

 

 

create table emp (empno number(5) primary key,

                   name varchar2(20),

                   sal number(10,2),

                   job varchar2(20),

                   mgr  number(5),

                   Hiredate  date,

                   comm number(10,2));

 

Now Suppose you have emp table now you want to create a TAX table with the following structure and also insert rows of those employees whose salary is above 5000.

 

Tax
 
Empno

Tax
 Number(5)

Number(10,2)
 

 

To do this we can first create TAX table by defining column names and datatypes and then use INSERT into EMP SELECT …. statement to insert rows from emp table. like given below.

 

create table tax (empno number(5), tax number(10,2));

 

insert into tax select empno,(sal-5000)*0.40

                     from emp where sal > 5000;

 

Instead of executing the above two statements the same result can be achieved by giving a single CREATE TABLE AS statement.

 

create table tax as select empno,(sal-5000)*0.4

   as tax from emp where sal>5000

 

You can also use CREATE TABLE AS statement to create copies of tables. Like to create a copy EMP table as EMP2 you can give the following statement.

 

create table emp2 as select * from emp;

 

To copy tables without rows i.e. to just copy the structure give the following statement

 

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

 


 

Temporary Tables (From Oracle Ver. 8i)
 

It is also possible to create a temporary table. The definition of a temporary table is visible to all sessions, but the data in a temporary table is visible only to the session that inserts the data into the table. You use the CREATE GLOBAL TEMPORARY TABLE statement to create a temporary table. The ON COMMIT keywords indicate if the data in the table is transaction-specific (the default) or session-specific:

ON COMMIT DELETE ROWS specifies that the temporary table is transaction specific and Oracle truncates the table (delete all rows) after each commit.

ON COMMIT PRESERVE ROWS specifies that the temporary table is session specific and Oracle truncates the table when you terminate the session.

This example creates a temporary table that is transaction specific:

CREATE GLOBAL TEMPORARY TABLE taxable_emp
        (empno number(5),
          ename varchar2(20),
          sal   number(10,2),
          tax   number(10,2))
      ON COMMIT DELETE ROWS;
Indexes can be created on temporary tables. They are also temporary and the data in the index has the same session or transaction scope as the data in the underlying table.

 
Alter
 

Use the ALTER TABLE statement to alter the structure of a table.

 

Examples:

 

To add  new columns addr, city, pin, ph, fax to employee table you can give the following statement

 

alter table emp add (addr varchar2(20), city varchar2(20),

      pin varchar2(10),ph varchar2(20));

 

To modify the datatype and width of a column. For example we you want to increase the length of the column ename from varchar2(20) to varchar2(30) then give the following command.

 

alter table emp modify (ename varchar2(30))

 

To decrease the width of a column the column can be decreased up to largest value it holds.

 

alter table emp modify (ename varchar2(15));

 

The above is possible only if you are using Oracle ver 8i and above. In Oracle 8.0 and 7.3 you cannot decrease the column width directly unless the column is empty.

 

To change the datatype the column must be empty in All Oracle Versions.

 
To drop columns.
 

From Oracle Ver. 8i you can drop columns directly it was not possible in previous versions.

 

For example to drop PIN, CITY  columns from emp table.

 

alter table emp drop column (pin, city);

 

Remember you cannot drop the column if the table is having only one column.

If the column you want to drop is having primary key constraint on it then you have to give cascade constraint clause.

 

alter table emp2 drop column (empno) cascade constraints;

 

To drop columns in previous versions of Oracle8.0 and 7.3. and to change the column name in all Oracle versions do the following.

 

For example we want to drop pin and city columns and to change SAL column name to SALARY.

 

Step     1: Create a temporary table with desired columns using subquery.

 

create table temp as select empno, ename,

 sal AS salary, addr, ph from emp;

 

Step     2: Drop the original table.

 

drop table emp;

 

Step     3: Rename the temporary table to the original table.

 

rename temp to emp;

 

 

Rename
Use the RENAME statement to rename a table, view, sequence, or private synonym for a table, view, or sequence.

Oracle automatically transfers integrity constraints, indexes, and grants on the old object to the new object.

Oracle invalidates all objects that depend on the renamed object, such as views, synonyms, and stored procedures and functions that refer to a renamed table.

Example

 

To rename table emp2 to employee2 you can give the following command.

 

rename emp2 to employee2

 
Drop
 

Use the drop statement to drop tables, functions, procedures, packages, views, synonym, sequences, tablespaces etc.

 

Example

 

The following command drops table emp2

 

drop table emp2;

 

If emp2 table is having primary key constraint, to which other tables refer to, then you have to first drop referential integrity constraint and then drop the table. Or if you want to drop table by dropping the referential constraints then give the following command

 

drop table emp2 cascade constraints;

 
Truncate
 

Use the Truncate statement to delete all the rows from table permanently . It is same as “DELETE FROM <table_name>” except

Truncate does not generate any rollback data hence, it cannot be roll backed.

If any delete triggers are defined on the table. Then the triggers are not fired

It deallocates free extents from the table. So that the free space can be use by other tables.

 

Example

 

truncate table emp;

 

If you do not want free space and keep it with the table. Then specify the REUSE storage clause like this

 

truncate table emp reuse storage;

from:http://www.oracle-dba-online.com/sql/oracle_data_definition_language.htm

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值