Oracle基本DLL操作
查看表
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;
索引操作
本文链接:
/archives/oracle-dll
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
ZFS的成长之路!
喜欢就支持一下吧