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;
    
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一宿君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值