查看表

DESC table_name;

创建表

create table usesr.talble--数据表名称
(
    P_category varchar2(10),
    p_price varchar2(10),
    p_Sales varchar2(20),
    p_year varchar2(20)
)
tablespace TSP_DEVELOPER--指定表空间
pctfree 10
initrans 1
maxtrans 255
storage (
    initial 64k
        minextents 1
        maxextents unlimited
        );

通过另外一张已存在的表来创建新表

1、复制表建构,不复制数据

create table new_table as (select * from old_table where 1=2)

2、复制表建构,且复制数据

create table new_table as (select * from old_table where 1=1)

3、只复制该表指定列

create table new_table as (select column_1, column2, ... column_n from old_table where 1=2)

4、复制多个表的指定列

create table new_table as (select old_table1.column_1, old_table2.column2, ... column_n from old_table1,old_table2 where 1=2)

删除表

DROP TABLE schema_name.table_name
[CASCADE CONSTRAINTS | PURGE];

1、基本实例

创建一张students表

create table stuents (
    s_id number not null ,
    s_name varchar2(10) not null,
    primary key (s_id)
);

删除该表

drop  table stuents;

2、当该表的某一列为另外一张表的外键时

创建students、student_class表

create table stuents (
    s_id number not null ,
    s_name varchar2(10) not null,
    primary key (s_id)
);
create table stuent_class (
    s_id number not null ,
    s_class varchar2(10) not null,
    CONSTRAINT fk_stuents
    FOREIGN KEY (s_id)
    REFERENCES stuents(s_id) ON DELETE CASCADE
);

删除students表

可以看到报错,ORA-02449:表中的唯一/主键被外键使用,这是因为表students表的主键s_id被stuent_class表因引用

这时候要删除表students,必须使用CASCADE CONSTRAINTS子句

DROP TABLE stuents CASCADE CONSTRAINTS;

3、PURGE

如果想删除表格并且一次释放与之关联的空间,指定PURGE子句。 通过使用PURGE子句,Oracle不会将表及其依赖对象放入回收站。

DROP TABLE stuent_class purge;

4、一次删除多个表

Oracle不提供一次性删除多个表的方法,可以使用以下两种方法进行删除

创建表create table PUBLICUSER.test1 (
    s_id number not null ,
    s_name varchar2(10) not null,
    primary key (s_id)
);
create table PUBLICUSER.test2 (
    s_id number not null ,
    s_name varchar2(10) not null,
    primary key (s_id)
);
create table PUBLICUSER.test3 (
    s_id number not null ,
    s_name varchar2(10) not null,
    primary key (s_id)
);

可以批量生成删除语句

select 'drop ltable '||t.TABLE_NAME from ALL_ALL_TABLES t where t.TABLE_NAME like 'TEST%'

使用PL/SQL块执行

BEGIN
    FOR test IN
        (
        SELECT table_name
        FROM all_tables
        WHERE table_name LIKE 'TEST%'
        )
        LOOP
            EXECUTE immediate 'DROP TABLE  ' || test.table_name || ' CASCADE CONSTRAINTS';
        END LOOP;
END;

5、TRUNCATE TABLE

当表中的数据比较大时,delete使用起来效率会比较低,这时候可以使用truncate进行删除

TRUNCATE TABLE schema_name.table_name
[CASCADE]
[[ PRESERVE | PURGE] MATERIALIZED VIEW LOG ]]
[[ DROP | REUSE]] STORAGE ]

例如删除students表

TRUNCATE TABLE students;

重命名表

ALTER TABLE table_name
    RENAME TO new_table_name;

Oracle修改表结构

ALTER TABLE UserName.TabName

ALTER TABLE语句可用来:

  • 添加一个或多个列

  • 修改列定义

  • 删除一列或多列

  • 重命名列

  • 重命名表

1、添加列

ALTER TABLE table_name
ADD column_name type constraint;

先创建一个表students

create table students (
    s_id number not null ,
    s_name varchar2(10) not null,
    primary key (s_id)
);

需要在该表中添加一列s_adder记录地址信息

ALTER TABLE students
    ADD s_adder varchar2(50);

如果要添加多个列,只要将增加的列添加到括号中

ALTER TABLE table_name
ADD (
    column_name type constraint,
    column_name type constraint,
    ...
);

例如我们在students中添加s_brithday、s_sex记录出生日期和性别

ALTER TABLE students
    ADD (s_brithday date,
         s_sex varchar2(2));

2、修改列属性

语法:

ALTER TABLE table_name
    MODIFY column_name type constraint;

例如表students,现在需要将列s_sex转为number

ALTER TABLE students
    MODIFY s_sex number;

如果需要修改多个列,

ALTER TABLE table_name
    MODIFY (column_name1 type constraint,
            column_name2 type constraint,
            ...
            column_namen type constraint);

3、删除列

ALTER TABLE table_name
    DROP COLUMN column_name;

例如,要删除students表的s_sex列

ALTER TABLE students
    DROP COLUMN s_sex;
ALTER TABLE table_name
    DROP (column_1, column_2, ...column_n);

4、重命名列

语法:

ALTER TABLE table_name
    RENAME COLUMN column_name TO new_name;

例如我们将students表的s_birthday修改 为s_date_birthday

ALTER TABLE students
    RENAME COLUMN s_brithday TO s_date_brithday;

索引操作

文章作者: zlinks
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZFS的成长之路
Oracle Oracle基本语法
喜欢就支持一下吧