You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle对象类型与对象表的增删改查操作方法咨询

Oracle 普通表、对象类型及嵌套表的 CRUD 操作

一、普通表 employee_info 的增删改查操作

1. 插入(INSERT)

支持单条或批量插入数据:

-- 单条插入
INSERT INTO employee_info (empid, emp_name, department, designation, salary)
VALUES (1, '张三', '技术部', '软件工程师', 8000);

-- 批量插入多条数据
INSERT INTO employee_info (empid, emp_name, department, designation, salary)
SELECT 2, '李四', '市场部', '营销专员', 6500 FROM DUAL
UNION ALL
SELECT 3, '王五', '人事部', 'HR主管', 7500 FROM DUAL;

2. 查询(SELECT)

基础查询、条件筛选,还可结合对象类型构造结果:

-- 查询所有员工信息
SELECT * FROM employee_info;

-- 筛选技术部员工的核心信息
SELECT empid, emp_name, salary
FROM employee_info
WHERE department = '技术部';

-- 将查询结果封装为 employee_info_obj 对象
SELECT employee_info_obj(empid, department, designation, salary) AS emp_object
FROM employee_info;

3. 更新(UPDATE)

支持单条或批量更新数据:

-- 更新单个员工的薪资
UPDATE employee_info
SET salary = 8500
WHERE empid = 1;

-- 给市场部全体员工涨薪5%
UPDATE employee_info
SET salary = salary * 1.05
WHERE department = '市场部';

4. 删除(DELETE)

可删除单条或符合条件的批量数据:

-- 删除指定ID的员工
DELETE FROM employee_info
WHERE empid = 3;

-- 删除薪资低于7000的员工
DELETE FROM employee_info
WHERE salary < 7000;

二、对象类型 employee_info_obj 及嵌套表类型 employee_info_obj_t 的操作

1. 对象构造与查询

-- 直接构造单个对象并查询
SELECT employee_info_obj(1, '技术部', '软件工程师', 8000) AS single_employee FROM DUAL;

-- 将普通表数据组装为嵌套表集合
SELECT CAST(COLLECT(employee_info_obj(empid, department, designation, salary)) AS employee_info_obj_t) AS employee_list
FROM employee_info;

2. 嵌套表的插入(需先创建含嵌套表的表)

原普通表未包含嵌套表字段,需先创建对应存储表:

-- 创建带嵌套表字段的部门员工表
CREATE TABLE dept_employees (
  dept_name VARCHAR2(20),
  emp_list employee_info_obj_t
) NESTED TABLE emp_list STORE AS dept_emp_nested;

-- 插入嵌套表数据
INSERT INTO dept_employees (dept_name, emp_list)
VALUES (
  '技术部',
  employee_info_obj_t(
    employee_info_obj(1, '技术部', '软件工程师', 8000),
    employee_info_obj(4, '技术部', '测试工程师', 7200)
  )
);

3. 查询嵌套表中的数据

SELECT e.*
FROM dept_employees d, TABLE(d.emp_list) e
WHERE d.dept_name = '技术部';

4. 更新嵌套表中的数据

-- 更新嵌套表中指定员工的薪资
UPDATE TABLE(SELECT emp_list FROM dept_employees WHERE dept_name = '技术部')
SET salary = 8200
WHERE empid = 4;

5. 删除嵌套表中的数据

-- 删除嵌套表中指定员工
DELETE FROM TABLE(SELECT emp_list FROM dept_employees WHERE dept_name = '技术部')
WHERE empid = 4;

内容的提问来源于stack exchange,提问作者Muhammad Shoaib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:55:21