Oracle数据库之管理语言

DDL:数据定义语言

create表创建

  1. 创建表(不加约束)

    create table tb_user(
    userid number(5),
    username varchar2(30)
    );
  2. 创建表(同时创建约束+默认名称)

    create table  tb_user(
    --主键约束
    userid number(5) primary key,
    --非空约束
    username varchar2(30) not null,
    --检查约束
    userpwd varchar2(20) check(length(userpwd) between 4 and 18),
    --默认约束 检查约束
    age number(3) default(18) check(age>=18),
    --默认约束 检查约束
    gender char(3) default('男') check(gender in('男','女')),
    --唯一约束
    email varchar2(30) unique,
    --默认约束
    regtime date default(sysdate)
    );
  3. 创建表(同时创建约束+指定名称) 在字段的后面指定约束名直接添加

    create table  tb_user(
    --主键约束
    userid number(5) constraint pk_user primary key,
    --非空约束
    username varchar2(30) constraint nameNotNull not null,
    --检查约束
    userpwd varchar2(20) constraint ckPwd check(length(userpwd) between 4 and 18),
    --默认约束 检查约束
    age number(3) default(18) constraint ck_age check(age>=18),
    --默认约束 检查约束
    gender char(3) default('男') check(gender in('男','女')),
    --唯一约束
    email varchar2(30) unique,
    --默认约束
    regtime date default(sysdate)
    );
  4. 创建表(同时创建约束+指定名称) 在结构结束之前为当前表中指定字段添加约束

    create table  tb_user(
    userid number(5),
    username varchar2(30),
    userpwd varchar2(20) constraint nn_user_pwd not null ,
    age number(3) default(18) ,
    gender char(3) default('男'),
    email varchar2(30),
    regtime date default(sysdate),

    constraint pk_user_id primary key (userid),
    constraint name_not_null check(username is not null),
    constraint ck_user_name check(length(username)between 4 and 20) ,
    constraint ck_user_pwd check(length(userpwd) between 4 and 18),
    constraint ck_user_age check(age>=18),
    constraint ck_user_gender check(gender in('男','女')),
    constraint uq_user_email unique(email)
    );
  5. 已有表中拷贝结构

    1. 拷贝结构 emp

    create table emp_his as select ename,sal from emp where 1!=1
    1. 拷贝结构 emp +数据

      create table emp_his2 as select ename,sal from emp where sal>2000

drop删除表

  1. 删除表:先删除从表 再删除主表 ;同时删除约束

    drop table emp_his;
  2. 存在主外键关联表的删除

    1. 删主表:不能直接删除

      1. 先删所有从表,在删主表

      2. 删除主表同时级联删除主外键约束

        drop table tb_txt cascade constraints;
    2. 删除从表 : 直接删除

约束

  1. 物理约束 : 表结构上为字段添加约束,推荐主外键约束可以定义物理约束

    1. 外键约束

      1. 直接参考:cid number(5) references clazz(cid)

      2. 添加约束,再参考:cid number(5) constraint fk_cid references clazz(cid)

      3. 结构结束前写约束:constraint fk_cid foreign key(cid) references clazz(cid)

      4. 结构外添加约束:alter table student add constraint pk_stu_cid foreign key(cid) references clazz(cid) ;

  2. 逻辑约束 : 在后端逻辑代码上添加判断,逻辑,检查等约束建议定义为逻辑约束

    1. 追加约束

    alter table tb_user add constraint pk_user_id  primary key (userid);
    check(length(username)between 4 and 20) ;
    alter table tb_user add constraint ck_user_pwd check(length(userpwd) between 4 and 18);
    alter table tb_user add constraint uq_user_email unique(email);
    1. 默认与非空

    alter table tb_user modify age default 18;
    alter table tb_user modify username not null;

alter修改表结构

  1. 修改表名

    rename student to haha_stu;

     

DML:数据操控语言

insert插入

向数据表张插入一条记录

用法:

  1. insert into 表名 values(值列表);

  2. insert into 表(指定列) values(值列表);

  3. insert into 表名 select 查询列 from 源表 where 过滤数据;

  4. insert into 表(指定列) select 查询列 from 源表 where 过滤数据;

 

update修改

修改数据表中的一条或多条记录,也可以修改数据表中的所有记录,但是,它的操作 对象仍是记录

用法:

  1. update 表名 set 字段=值 [,....] where 过滤行记录;

  2. update 表名 set (字段列表) =(select 字段列表 from 源表 where 过滤源表记录) where 更新记录的条件手动更改字段值

 

delete删除

用于修改已存在表中的记录的内容

  1. 用法:

    1. delete from 表名;

    2. delete from 表名 where 行过滤条件; 注意:from可省略

  2. 删除主外键约束关系下的两张表中的数据:

    1. 从表可直接删除

    2. 主表删除

      1. 主表没被从表引用可直接删除

      2. 主表被引用不能直接删 解决方法:

        1. 先删从表引用主表的数据,再删主表数据

        2. 删主表数据同时将从表的外键设为null 前提:创从表时,外键字段约束 + on delete set null

          cid number(5) references clazz(cid) on delete set null;

           

        3. 删主表时,直接删从表与主表连接的数据 前提:创从表时,外键字段约束 + on delete cascade(级联删除)

          cid number(5) references clazz(cid) on delete cascade

truncate数据截断

  1. 是什么:实现截断删除数据

  2. 怎么用:

    truncate table tb_student;
  3. 与delete的区别:

    1. 数据截断没有事务管理,操作不可回滚,而delete可以通过事务管理

    2. 数据截断不能操作主表,从表结构上检查如果存在从表,不能截断

posted @   hello罗先生  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示