oracle数据库DML语句讲解
INSERT
INSERT命令可以插入一行,或者插入由SELECT语句创建的行集合。
若不指定哪个值插入哪一列,就会依赖位置表示法。
良好的编程习惯是不使用位置表示法。
UPDATE
用来改变已经存在的行。
影响一行或者行集合。
影响集合的 范围由WHERE子句确定。
单个更新命令不能影响多个表中的行。
UPTDAE命令遵循表定义的所有约束。
DELETE
依据WHERE子句从表中删除一行或一组行。
没有WHERE子句就会删除表中所有行。
TRUNCATE
DDL,不是用户事务。
表中有任何活动的DML命令,DDL命令都会失败。
重置高水位线。
表的物理位置是保存在数据字段中表的定义的一部分。表创建时数据文件给表分配了固定空间。数据字典通过高水位线来跟踪空间使用多少,以下被使用,以上未被使用,重置高水位线到最初空间的开头,产生删除所有行的效果。
MERGE
如果源数据(表、视图、子查询)中的行已经存在于目标表,那么可以更新( UPDATE )目标行,或者取代它,或者保持目标不变。如果源数据中的行不在目标表中,那么可以插入(INSERT)它。
传递一次源数据,实现三种操作。
UPDATE或INSERT子句是可选的。
UPDATE子句后面可以跟DELETE子句来去除一些不需要的行。
UPDATE和INSERT子句可以加WHERE子句。
INSTER ALL
使用一条语句将多行插入多个表。
通过一次源数据,填充多个表,减轻数据库负担。
WITH
可认为在真正进行查询之前预先构造了一个临时表TT,之后便可多次使用它做进一步的分析和处理。
增加了SQL的易读性,如果构造了多个子查询,结构会更清晰;更重要的是:“一次分析,多次使用”,这也是为什么会提升性能的地方,达到了“少读”的目标。
DML语句失败
语法错误
引用不存在的对象或者列
访问权限
约束违背
空间问题