码迷,mamicode.com
首页 > 数据库 > 详细

ORACLE学习04-表的操作(主键,外键,序列)

时间:2016-03-19 17:53:41      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

一、创建表

格式:
create table 表名(
  字段    字段类型    能否为空,
  ... ...
);
comment on column/字段 is 注释;
例子:
create table COMPANY 
(
   COM_ID               INTEGER                        not null,
   COM_NAME             VARCHAR2(32)                   null,
   COM_ADDRESS          VARCHAR2(100)                  null
);
二、创建主键/外键

1,创建表的同时创建主键约束

无命名
create table test1
(
id int primary key not null,
name varchar2(20)
)
----------------------
有命名
create table test2
(
id int ,
name varchar2(20),
constraint ixd_id primary key(id)
);
----------------------
select 
    user_ind_columns.index_name,   --查询索引名称
    user_ind_columns.column_name,  --查询索引字段名称
    user_ind_columns.column_position,--索引中的列或属性的位置
    user_indexes.uniqueness         --约束
from user_ind_columns, user_indexes  -- 保存索引名称,对应的表和列的表/系统视图存放是索引名称的表
where user_ind_columns.index_name = user_indexes.index_name     
and user_ind_columns.table_name = test2;
2,alter语句创建主键

 alter table COMPANY add constraint PK_ COMPANY  primary key(COM_ID);

3,修改主键约束
禁用/启用主键
alter table jack disable primary key; -- 禁用
alter table jack enable primary key;  -- 启用
------------------------------------------------
重命名主键
alter table jack rename constraint pk_id to pk_jack_id;
4,删除表中已有主键

无命名
先利用user_cons_columns表查得主键名:
select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = JACK;
select table_name,index_name from user_indexes where table_name=JACK;
alter table jack drop constraint SYS_C0011105;
--------------------------------------------
有命名
select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = JACK;
alter table jack drop constraint IXD_ID;
5,向表中添加外键约束 

alter table test1 add constraint fk_name foreign key(test1_out_id) references test2(test2_id)
6,删除外键约束

alter table test1 drop constraint test1_out_id;
三、序列操作

1,创建序列

create sequence emp_sequence --序列名
increment by 1         -- 每次加几个
start with 1           -- 从1开始计数,初始值
nomaxvalue/maxvalue n/minvalue n             -- 不设置最大值/最大/最小
nocycle/cycle               -- 一直累加,不循环/循环
cache 10/nocache;      --缓存几个值,默认20 
2, 修改序列

alter sequence 序列名
[increment by n]
[{maxvalue/ minvalue n|nomaxvalue}]
[{cycle|nocycle}]
[{cache n|nocache}];
不能修改序列的初始值
3,删除序列

drop sequence 序列名;

四、其他操作

alter table test rename to test1--修改表名
alter table test rename column name to name1 --修改表列名
alter table test modify name1 number(20) --修改字段类型
alter table test add address varchar2(40) --添加表列
alter table test drop column name --删除表列

练习:
-- 添加字段
alter table company add  phone varchar2(12);
-- 修改字段类型
alter table company modify phone number(12);
-- 修改字段名称
alter table company rename column phone to aaa;
-- 删除字段
alter table company drop column aaa;

 

ORACLE学习04-表的操作(主键,外键,序列)

标签:

原文地址:http://www.cnblogs.com/sunnybug/p/5295479.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!