网站qq 微信分享怎么做的中国人保官网
网站qq 微信分享怎么做的,中国人保官网,重庆建设工程交易中心网站,sae wordpress 图片一、核心基础语法1. 完整字段插入#xff08;推荐写法#xff09;INSERT INTO 表名 (字段1, 字段2, 字段3, ...)
VALUES (值1, 值2, 值3, ...);注意事项#xff1a;字段的顺序可与表结构不一致#xff0c;但值的顺序必须与指定字段顺序匹配。
• 未指定的字段需满足#x…一、核心基础语法1. 完整字段插入推荐写法INSERT INTO 表名 (字段1, 字段2, 字段3, ...) VALUES (值1, 值2, 值3, ...);注意事项字段的顺序可与表结构不一致但值的顺序必须与指定字段顺序匹配。• 未指定的字段需满足要么有默认值DEFAULT要么允许为空NULL否则会报错。二、分类用法及示例1. 插入单条记录最常用场景适用于逐条添加数据值的类型需与字段类型严格匹配如日期、字符型需符合格式。-- 完整字段插入推荐 INSERT INTO EMPLOYEE (EMP_ID, EMP_NAME, HIRE_DATE, DEPT_ID) VALUES (1001, 张三, TO_DATE(2026-01-23, YYYY-MM-DD), 10);2. 插入多条记录Oracle 11g 及以上版本支持通过 VALUES 子句多组值批量插入无需循环效率高于单条多次插入。INSERT INTO EMPLOYEE (EMP_ID, EMP_NAME, DEPT_ID) VALUES (1003, 王五, 10), (1004, 赵六, 20), (1005, 孙七, 30); -- HIRE_DATE 取默认值 SYSDATE3. 从子查询插入查询结果插入将一个查询SELECT的结果集批量插入目标表适用于数据迁移、批量同步场景需保证查询结果的字段数量、类型与目标表匹配。INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 源表/视图 WHERE 条件;4. 带条件的插入MERGE 替代Oracle 不直接支持 INSERT ... WHERE若需按条件插入例如不存在则插入可使用 MERGE 语句合并插入 / 更新避免重复插入。MERGE INTO EMPLOYEE e USING (SELECT 1006 AS EMP_ID, 周八 AS EMP_NAME, 30 AS DEPT_ID FROM DUAL) t ON (e.EMP_ID t.EMP_ID) WHEN NOT MATCHED THEN INSERT (EMP_ID, EMP_NAME, DEPT_ID) VALUES (t.EMP_ID, t.EMP_NAME, t.DEPT_ID);5. 批量插入FORALL 语句针对大批量数据插入万级以上使用 PL/SQL 的 FORALL 语句结合绑定变量大幅提升插入效率减少上下文切换。DECLARE TYPE EmpTabType IS TABLE OF EMPLOYEE%ROWTYPE; emp_tab EmpTabType; BEGIN -- 模拟批量数据也可从查询获取 emp_tab : EmpTabType( (1007, 吴九, SYSDATE, 20), (1008, 郑十, SYSDATE, 30) ); -- 批量插入 FORALL i IN emp_tab.FIRST .. emp_tab.LAST INSERT INTO EMPLOYEE VALUES emp_tab(i); COMMIT; -- 批量操作需手动提交 END; /三、关键注意事项1. 数据类型匹配值的类型必须与字段类型一致如日期型需用 TO_DATE() 转换字符型需用单引号包裹数值型直接传入。2. 约束校验需满足主键唯一、非空、外键关联表存在对应值、非空约束否则插入失败。3. 默认值与空值未指定的字段若有 DEFAULT 约束则取默认值无默认值且允许为空则插入 NULL若需显式插入空值用 NULL 关键字。4. 事务控制DML 语句INSERT需手动 COMMIT 提交事务ROLLBACK 可回滚未提交的插入操作。5. 性能优化大批量插入优先使用 FORALL 或 INSERT ... SELECT避免单条循环插入关闭日志NOLOGGING可提升临时插入效率适用于非核心数据。四、常见错误及排查1. ORA-00001: 违反唯一约束条件主键或唯一索引字段值重复检查插入的唯一字段值。2. ORA-01400: 无法将 NULL 插入到非空字段未指定非空字段且无默认值补充字段值或设置默认值。3. ORA-01843: 无效的月份日期格式不匹配用 TO_DATE() 明确指定格式如 TO_DATE(23-01-2026, DD-MM-YYYY)。