当前位置:首页 > 问答 > 正文

Oracle数据库里那些DML语句到底是干嘛的,功能啥样简单说说

根据 Oracle 官方文档(如《Oracle Database SQL Language Reference》)中的描述,DML 语句是用于管理和操作数据库中数据的核心工具,它们就是让你跟数据库里的“表格”进行“对话”和“动手”的命令,想象一下,你面前有一个巨大的 Excel 表格,DML 就是让你往里面添加新行、修改某一格的内容、或者整行整行删除的那些操作,下面我们就来一个一个说说它们具体是干嘛的,功能是啥样的。

SELECT:看看数据长啥样

SELECT 语句是其中最常用,可能也是最重要的一个,它的功能非常直接:查询数据,它不会改变任何数据,只是把数据从数据库里找出来,展示给你看,用看书的比喻来说,SELECT 不是用来写书或改书的,而是用来翻书、找段落、读内容的。

它的功能可以很简单,也可以很复杂,最简单的就是查看整个表的所有内容,比如你有一个“员工表”,输入 SELECT * FROM 员工表;,数据库就会把所有人的信息都列出来,但更多时候,你不想看全部,只想看特定的部分,这时 SELECT 就强大了,你可以:

  • 挑着看:不看所有列,只选择“姓名”和“工资”这两列来看。
  • 按条件找:只看“工资”大于 10000 的员工,或者只看“部门”是“销售部”的员工,这就像用了一个筛选器。
  • 排个序:让结果按照“工资”从高到低排列,一目了然。
  • 汇总一下:不关心具体每个人,只想知道公司的平均工资是多少,或者每个部门有多少人,SELECT 可以帮你做这种统计计算。

SELECT 是你了解数据库里有什么的“眼睛”。

INSERT:往里面塞新数据

INSERT 语句的功能是插入新数据,也就是往表格里添加新的行,当你的公司来了一个新员工,你需要把他的信息录入系统,这时候就要用 INSERT。

它的基本样子是,你先指定要往哪个表里插数据,然后告诉数据库新这一行的每一列分别是什么值。INSERT INTO 员工表 (工号, 姓名, 部门) VALUES ('1001', '张三', '技术部');,这条命令执行后,表格里就多了一行关于张三的记录。

Oracle数据库里那些DML语句到底是干嘛的,功能啥样简单说说

还有一种用法是,可以从另一个表里查出一批数据,然后直接插入到目标表里,这常用于数据备份或者初始化数据,INSERT 就是那个负责“添砖加瓦”的语句。

UPDATE:修改现有的数据

UPDATE 语句的功能是更新已有数据,意思是,表格里已经存在的数据,如果出错了或者情况变了,你需要修改它,就用 UPDATE,它不会增加新行,也不会删除行,只是改变现有行里的内容。

使用 UPDATE 时,最关键的是要准确地告诉数据库:你要改哪些行,以及要把这些行改成什么样,张三从“技术部”调到了“市场部”,你的语句可能就是:UPDATE 员工表 SET 部门 = '市场部' WHERE 姓名 = '张三';,这里的 WHERE 姓名 = '张三' 就是定位条件,确保只修改张三这一行,如果把 WHERE 条件漏了,那整个“员工表”里所有人的部门都会被改成“市场部”,这就酿成事故了,UPDATE 是一把需要小心使用的“手术刀”。

Oracle数据库里那些DML语句到底是干嘛的,功能啥样简单说说

DELETE:把不要的数据清出去

DELETE 语句的功能是删除数据,也就是从表格里去掉整行的数据,当一名员工离职了,你需要将他的记录从“员工表”中移除,就会用到 DELETE。

和 UPDATE 一样,DELETE 也非常依赖 WHERE 条件来指明你要删除哪些行。DELETE FROM 员工表 WHERE 姓名 = '李四'; 这条命令会删除李四的记录,同样,如果忘记写 WHERE 条件,DELETE FROM 员工表; 将会清空整个表,所有员工数据都会消失,这是一个非常危险的操作,DELETE 可以看作是数据库的“垃圾桶”,但使用时必须明确指定要扔进去的是什么。

总结一下

这四条就是 Oracle 数据库中最核心的 DML 语句,它们各自分工明确:

  • SELECT 负责看,是查询。
  • INSERT 负责增,是添加。
  • UPDATE 负责改,是更新。
  • DELETE 负责删,是删除。

它们合在一起,几乎覆盖了你对数据库中数据的所有日常操作需求,让你能够完整地维护和管理数据,理解它们的功能和区别,是使用任何数据库的基础,需要注意的是,除了 SELECT 只是读取数据之外,INSERT、UPDATE 和 DELETE 都会实际改变数据库中的数据,因此在执行这些“写操作”时,务必谨慎,特别是在生产环境中,最好在操作前先使用 SELECT 确认一下要操作的数据是否正确,Oracle 数据库本身也提供了事务机制(通常以 COMMIT 提交和 ROLLBACK 回滚命令为代表)来保证这些操作的原子性和安全性,但这属于更进阶的话题了。