oracle数据库基础:DML语言

DML语言

DML(Data Manipulation Language)数据操纵语言
DMl用于改变数据库中的数据,包括INSERT(插入),UPDATE(更新),DELETE(删除)

insert

作用,向表中插入数据

insert into 表名(1,2,..) values (1,2,...);

例如:向表中的每一个列中依次插入数据,需要和列表名的顺序一致

insert into t_user values(1,'tom','abc1@qq.com','f',20,'11-8月-94');

例如:向表中的指定列插入指定数据

insert into t_user(id,name,email,gender,age,birthday) values (2,'tom','ab2@qq.com','f',20','11-8-94');

例如:把查询的结果插入到表中

insert into t_user(id,name,birthday) 
select id,last_name,start_date
from s_emp;

update

作用,修改表中的数据

update 表名 set1=1,2=2,...where 条件;

例如:修改表中所有数据,更新age值为20

update t_user set age = 20;

例如:修改表中所有数据的age和gender的值

update t_user set age=25,gender='m';

例如:修改表中id小于10的数据,修改age和gender的值为null

update t_user set age = null,gender=null where id<10;

例如:修改id为18的用户的名字为zhangsan

update t_user set name = 'zhangsan' where id=18;

delete

作用删除表中的数据

delete from 表名 where 条件;

例如:删除表中id大于20的用户信息

delete from t_user where id>20;

例如:删除表中所有的数据(注意这里的表没被删除,删除的是表中的数据)

delete from t_user;

有关联的两张表进行DML操作

insert语句

假设有如下两张表

在这里插入图片描述
t_customer是主表,t_order是附表

此时再往t_customer表中插入数据
在这里插入图片描述
往t_order表中先插入两个数据,customer_id外键列的值必须是t_customer表id列中出现过的
在这里插入图片描述
在这里插入图片描述

当往t_customer表中的id列插入数值6时,会报错,因为6这个值并没有存在在t_customer表中。

补充:
(1)默认情况下,外键列上的值是可以重复的,在外键列上加一个唯一约束,那么这个外键列的值就不能重复了
在这里插入图片描述

(2)默认情况下,外键列上的值是可以为空的,在外键列上加一个非空约束,那么这个外键列的值就不能为null了在这里插入图片描述

update语句

在这里插入图片描述

向t_customer表中插入数据
在这里插入图片描述
向t_order表中插入数据
在这里插入图片描述
把t_order表中id=1的数据的customer_id列修改为3
在这里插入图片描述
把t_order表中id=1的数据的customer_id列修改为null
在这里插入图片描述
把t_order表中id=1的数据的customer_id列修改为20

在这里插入图片描述

这个语句报错,因为没有id=20的值

delete语句

删除附表中的数据不会影响主表
在这里插入图片描述
附表外键列没有引用主表中的指定值时,可以删除主表对应中的数据,如下
(1)向t_order表中插入数据
在这里插入图片描述
(2)删除t_customer表中id=3的数据
在这里插入图片描述

删除成功,因为t_order表中外键列中没有引用过这个值

(3)当附表外键列引用了主表中的值的时候,可以使用级联删除,如下

删除t_customer表中id=1的数据
在这里插入图片描述

删除失败,t_order表中外键列中已经引用了这个值,这个时候就可以使用on delete xxx 语句了

用户在删除A表中的一条数据,而这条数据被B表中的外键列所引用了,这个时候on delete xxx语句的设置可以告诉oracle这个时候该如何处理

  1. on delete no action
  2. on delete cascade
  3. on delete set null

(1)在这里插入图片描述
(2)级联删除
在这里插入图片描述
此时就可以级联删除了

(3)
在这里插入图片描述

删除成功了,同时把t_order表中所关联的那条数据的外键设置为了null
注意,如果t_order表中customer_id列上有not null 约束,那么当前这个删除操作就会报错

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值