Oracle字段的增修改查ITeye - 超凡娱乐

Oracle字段的增修改查ITeye

2019年02月21日09时52分34秒 | 作者: 醉柳 | 标签: 束缚,数据,字段 | 浏览: 1252

创立表
cteate table 表名(
         字段名 数据类型 束缚,
         字段名 数据类型 束缚
)
Create table stu(
  Sid number(10),
  Sname varchar2(10)
) tablespace tt;
以上 tablespace不是有必要的。默许不写,则创立在登录的用户地点的表空间上
 select * from all_tables where owner=SCOTT

运用子查询创立表
create table myemp as select * from emp;                 创立一张与emp表 结构和数据完全相同的表

create table myemp as select * from emp where deptno=10;   创立一张只要部分成果的新表 
create table myemp as select * from emp where 1=2;              创立一张只要emp表的结构,可是不含任何成果的空表

 

增加字段
alter table 表名 add 新列字段名 数据类型;
Alter table stu add age number(3); 
                                                                                                                 
修正字段
alter table 表名 modify 字段名 新的数据类型
Alter table stu modify Sage number(10);
alter table 表名 rename column 本来的姓名 to 新的姓名;
alter table stu rename column age to Sage;


删去字段
alter table 表名 drop column 列名
Alter table stu drop column Sage;

 

清空表中数据 delete ,回滚
清空表中数据
Truncate table student;  
则表明所删去的数据不行康复了.所以速度很快

删去表
Drop table student;

重命名表
Rename student to student1;

 

刺进数据
INSERT INTO person(pid,name) VALUES (11,张三);
 
PRIMARY KEY:主键束缚
不能重复,不能为空
例如:身份证号不能为空。 
 
UNIQUE:仅有束缚,值不能重复(空值在外)
人员中有电话号码,电话号码不能重复。 
 
CHECK:条件束缚,刺进的数据有必要满意某些条件
人员有年纪,年纪的取值只能是0~150岁之间
DROP TABLE person ;
CREATE TABLE person
(
 pid  NUMBER PRIMARY KEY NOT NULL ,                                                                                                                                                                                                                                                                                          
 name VARCHAR(30)  NOT NULL ,
 tel  VARCHAR(50)  NOT NULL UNIQUE ,
 age  NUMBER   CHECK(age BETWEEN 0 AND 150)
) ;
刺进数据
INSERT INTO person(pid,name,tel,age) VALUES (11,张三,1234567,30);
年纪的输入过错
INSERT INTO person(pid,name,tel,age) VALUES (12,李四,2345678,-100);
 
Foreign Key:外键 
                                                                                                                        
 
alter 指令为表增加束缚
、 为两个表增加主键:
• person表 pid为主键:
   ALTER TABLE person ADD CONSTRAINT person_pid_pk PRIMARY KEY(pid) ;
为person表中的 tel增加仅有束缚:
  ALTER TABLE person ADD CONSTRAINT person_tel_uk UNIQUE(tel) ;
为person表中的 age增加查看束缚:
  ALTER TABLE person ADD CONSTRAINT person_age_ck CHECK(age BETWEEN 0 AND 150) ;
为book表中的 pid增加与 person的主-外键束缚,要求带级联删去
  ALTER  TABLE  book  ADD  CONSTRAINT  person_book_pid_fk  FOREIGN  KEY  (pid)
  REFERENCES person(pid) ON DELETE CASCADE ;
删去束缚:
 ALTER TABLE book DROP CONSTRAINT person_book_pid_fk ;
alter table student drop unique(tel);
启用束缚
ALTER TABLE book enable CONSTRAINT person_book_pid_fk ;
禁用束缚
ALTER TABLE book disable CONSTRAINT person_book_pid_fk ;

 

视图:是一个封装了各种杂乱查询的句子,就称为视图。
CREATE VIEW  视图姓名(字段) AS  子查询
create view empv_all as select * from scott.emp;

 

创立序列
Create sequence myseq
Start with 1  
Increment by 1  
Order
cache 20 设置是否在内存里缓冲
Nocycle;
NextVal,CurrVal
Select myseq.nextval from dual;
Select myseq.currval from dual;
(有必要先有 nextval,才干有currval)

                                                                                                                      
查询完之后就现已自增 1了

create table t1 (

       id int
      
)
select * from t1;
Insert into t1 values(myseq.nextval)  这时分现已是2了
 
Cycle,Cache
而用了 nocycle,就能够保证当该序列用于多张表的时分,ID 是仅有的
 
用 cycle时,用法如下:
create sequence myseq2 start with 1 increment by 1 cycle maxvalue 3
nocache ;

Select myseq2.nextval from dual;
Select myseq2.currval from dual;
这样到3之后,要会从头从1开端  
假如指定CACHE值,ORACLE就能够预先在内存里边放置一些sequence,这样存取的快些。cache里
面的取完后,oracle主动再取一组到cache。 运用cache或许会跳号, 比方数据库俄然不正常down掉
(shutdown abort),cache中的sequence就会丢掉. 所以能够在create sequence的时分用nocache避免
这种状况
 
不能改动当时值,可是能够改动增量
Alter sequence myseq increment by 3;


近义词
在任何一个用户下,都能够直接拜访 dual,而不需要加上前缀的用户名如:scott.emp
Select * from dual;
 
为什么?由于近义词的存在  
Dual其实是sys用户下的一张表
select table_name from user_tables where lower(table_name) = dual;  
效果:
很便利的操作不同用户下的目标
能使两个应用程序运用不同的姓名指向同一张表
运用不同的用户指向同一张表的。

Create synonym dept for soctt.dept;(这样创立的近义词是私有的,只要创立者才干用)
Drop synonym dept;
Create public synonym dept for soctt.dept;(这样创立的近义词才是公有的)
Drop public synonym dept;

 

树立索引
create index emp_ix on emp(ename);

 
 
 

 

 

 

 

 

 

 

 



 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表超凡娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章