Oracle数据库系列Oracle修改表结构中常用sql操作语句
Posted 一宿君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库系列Oracle修改表结构中常用sql操作语句相关的知识,希望对你有一定的参考价值。
创建表(复制表)
为了不破坏原来emp表和dept表的结构,我们快速创建两张副表emp5(员工表)和dept5(部门表):
-
首先创建表结构(和原表结构保持一致):
--创建EMP5员工表 create table EMP5 ( empno NUMBER(4) not null, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2), eremark VARCHAR2(40), sex CHAR(3) ) --创建DEPT5部门表 create table DEPT5 ( deptno NUMBER(2) not null, dname VARCHAR2(14), loc VARCHAR2(13) )
-
用insert into直接从原表中将数据插入新表中:
- --保持新表emp5结构和原表emp结构相同(直接将所有制复制到新表emp5中) insert into emp5 select * from emp; --保持新表dept5结构和原表dept结构相同(直接将所有制复制到新表dept5中) insert into dept5 select * from dept;
-
如果嫌上述操作麻烦,还有简便的方法,如下:
--创建和emp表结构一样的表emp5(使条件不成立即创建表不传入数据) create table emp6 as select * from emp where 1=2; --保持新表emp5结构和原表emp结构相同(直接将所有制复制到新表emp5中) insert into emp5 select * from emp;
-
当条件成立的时候,就是完全复制出一张副表:
--创建和emp表结构一样的表emp6(相当于复制一个完全一样的附副表) create table emp7 as select * from emp;
删除表(记录)
- delete和drop的区别:
--删除整张表包括记录 drop table Dept5; --只删除表记录 delete table Dept5;
修改表结构(常见sql操作)
- 添加表主键约束
--添加表主键 alter table emp5 add constraint pk_emp5 primary key(empno);
- 删除表主键约束
--删除主键约束 alter table emp5 drop constraint pk_emp5;
- 为表添加外键约束
--为emp5表添加外键约束 alter table emp5 add constraint fk_emp5_deptno foreign key(deptno) references Dept5(deptno);
- 删除外键约束
--删除外加约束 alter table emp5 drop constraint fk_emp5_deptno;
- 添加新字段
--添加字段 alter table emp5 add(empdesc varchar2(50));
- 修改表字段类型及参数
--修改表字段类型及参数 alter table emp5 modify(empdesc varchar2(100));
- 修改字段的名字
--修改字段的名字 alter table emp5 rename column empdesc to empdescription;
- 删除字段(column关键字不能少)
--删除表字段(column关键字不能少) alter table emp5 drop column empdescription;
- 添加性别检查约束(只能输入男或女)
--添加性别检查约束(只能输入男或女) alter table emp5 add constraint ck_emp5_sex check(sex in ('男','女'));
- 添加年龄检查约束(年龄>0 and <=100)
--先添加年龄字段 alter table emp5 add(age number(3)); --添加年龄检查约束(年龄>=0 and <=100) alter table emp5 add constraint ch_emp5_age check(age>0 and age<=100);
- 修改字段默认值
--修改字段默认值 alter table emp5 modify age default 0;
- 添加键唯一性约束(基于单列)
--为表单个字段添加唯一约束(基于单列字段) alter table emp5 add constraint un_emp5_empno unique(empno); --禁用单列字段唯一约束 alter table emp5 disable constraint un_emp5_empno; --启用单列字段唯一约束 alter table emp5 enable constraint un_emp5_empno; --删除单列字段唯一约束 alter table emp5 drop constraint un_emp5_empno;
- 添加键唯一性约束(基于多列)
--为表多个字段多列唯一约束(基于多列) alter table emp5 add constraint un_emp5_empnoAndEname unique(empno,ename); --禁用多列字段唯一约束 alter table emp5 disable constraint un_emp5_empnoAndEname; --启用多列字段唯一约束 alter table emp5 enable constraint un_emp5_empnoAndEname; --删除多列字段唯一约束 alter table emp5 drop constraint un_emp5_empnoAndEname;
创建序列
- 序列
--创建序列号 create sequence seq_emp5_empno start with 1 --初始值 increment by 1 --增长间隔值 minvalue 1 --最小值 maxvalue 9999999 --最大值 cache 20 --缓冲池 --查询下一个序列值 select seq_emp5_empno.nextval from dual; --查询当前序列值(不改变序列号) select seq_emp5_empno.currval from dual; --修改增长间隔值为2 alter sequence seq_emp5_empno increment by 2;
常规查询语句
- 查询字段
--拼接字符串 select 'aaa'||'bbb' from dual; --查询empno是7499的员工信息 select * from emp5 where empno = 7499; --查询empno不是7499的员工信息(Oracle中特有的一种不等运算符) select * from emp5 where empno <> 7499; --因为很多老程序员都习惯用!=,所以Oracle就保留了原来的,两个都可以用 select * from emp5 where empno != 7499; --查找员工表中上司为空的员工信息 select * from emp5 where mgr is null;
以上是关于Oracle数据库系列Oracle修改表结构中常用sql操作语句的主要内容,如果未能解决你的问题,请参考以下文章