oracle增删改查字段


drop table test2;
drop table test1;
create table test1
(
       test_no int primary key,
       test_name char(20) not null,
       test_age int ,
       test_sex char(20) 
);

create table test2
(
       no int ,
       name varchar(20),
       no1 varchar(20),
       primary key(no,name)
);


--字段操作
alter table test1 add (test_phone char(20) unique);
alter table test1 modify (test_phone char(100) );
--alter table test1 drop (test_phone);

--主键操作
alter table test1 drop primary key;
alter table test1 add constraint PK_NO_NAME primary key (test_no,test_name);

--唯一索引
alter table test1 add (test_phone1 int);
alter table test1 add constraint UK_phone1 unique (test_phone1);
alter table test1 disable constraint UK_phone1;

--外键
alter table test1 add (no1 VARCHAR2(20) unique);
--外键创建条件,建立外键的字段属性必须一样,其次外键的数量必须跟主键的数量一样,就是是从表的字段数量,要跟主表的主键数量是要一致的。 主表的键值必须是主键或者unique
alter table test2 add constraint FK_NO1 foreign key (no1) references test1(no1);

--检查约束
--alter table test1 add constraint CK_PHONE check (test_phone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'); --不可用,要用下面哪一个
--alter table test1 drop constraint CK_PHONE;

alter table test1 add constraint CK_SEX check(test_sex = '0' or test_sex = '1');
alter table test1 drop constraint CK_SEX;
alter table test1 add (phone varchar(20));
alter table test1 add constraint CK_PHONE1 check(regexp_like(phone,'[1-9][1-9]'));


--万能删除约束
--alter table test1 drop constraint FK_SEX;

--默认值约束
alter table test1 add (test_sexx int);
alter table test1 modify (test_sexx default 0);

drop sequence test2_sequence;
--创建自增长序列
create sequence test2_sequence
minvalue 0
nomaxvalue --无上限
start with 0
increment by 2
nocycle --不循环,一直递增
--nocache --不缓存
cache 10;

drop Trigger test2_AUTOINCREMENT;
--给表增加触发器
Create or Replace Trigger test2_AUTOINCREMENT 
Before Insert on test2 
For Each Row 
When (new.no IS NULL) 
Begin
Select test2_sequence.NEXTVAL INTO :new.no FROM dual; 
End; 


--创建索引
create index INCLIENTNO_INDEX on test1 (test_no asc,test_name desc);

--以下要单独执行
insert into test1 values('1','1','1','1','1',1,'1','12',1);

insert into test2(name,no1) values('3','1');
insert into test2(name,no1) values('4','1');
insert into test2(name,no1) values('5','1');
insert into test2(name,no1) values('6','1');
insert into test2(name,no1) values('7','1');

select * from test2;

以上代码是可以单独执行的,对应的字段增删都在里面,删除关系的时候,是有万能公式的,对于检查索引的时候,直接用like是会报错的,需要要到函数regexp_like(字段名,正则表达式)。这个like的意思就是允许去使用正则表达式去进行字符匹配。否则只能使用固定的值岂不是很难受,但是一般情况这个在大项目中不会去使用,因为很耗费时间。其他的就没了,都是千篇一律。对了,修改默认值的操作我是只找到了一个,如果还有其他的麻烦评论区告诉我一下,只会modify去修改,这个是修改字段的,通用。

再就是给主键增加自增的时候,要先创建自增序列,然后给表增加一个触发器,当这个主键没有给他赋值的时候,就会自己去触发这个操作。自增序列还是标记的比较清楚的,触发器的话,new后面跟的是自己想要自增的那个字段,dual是系统的一张表,不用管,test_squence就是咱们之前加的那个自增序列。这个方法是oracle的,mysql的话有个更简单的方法,直接在字段后面加一个 AUTO_INCREMENT 就可以实现自增1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值