创建新用户及测试表的完整步骤
1. 使用DBA账户连接数据库
-- 使用SYSDBA权限登录
CONN / AS SYSDBA;
-- 或者
CONN sys/您的密码 AS SYSDBA;
2. 创建新用户
-- 创建新用户,指定密码、默认表空间和临时表空间
CREATE USER test_user IDENTIFIED BY test123
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON USERS;
3. 授予必要权限
-- 授予基本会话权限
GRANT CREATE SESSION TO test_user;
-- 授予资源权限(包含创建表、序列等)
GRANT RESOURCE TO test_user;
-- 授予表空间配额权限
GRANT UNLIMITED TABLESPACE TO test_user;
-- 如果需要,还可以授予其他权限
GRANT CREATE TABLE, CREATE VIEW TO test_user;
4. 切换到新用户
-- 连接到新创建的用户
CONN test_user/test123;
5. 创建测试表
-- 创建员工测试表
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
email VARCHAR2(100),
hire_date DATE,
salary NUMBER(10,2),
department VARCHAR2(50)
);
-- 创建部门测试表(可选)
CREATE TABLE departments (
department_id NUMBER PRIMARY KEY,
department_name VARCHAR2(100),
manager_id NUMBER
);
6. 插入测试数据
-- 向员工表插入测试数据
INSERT INTO employees VALUES (1, '张', '三', 'zhangsan@example.com', DATE '2020-01-15', 5000.00, '技术部');
INSERT INTO employees VALUES (2, '李', '四', 'lisi@example.com', DATE '2019-03-20', 6000.00, '销售部');
INSERT INTO employees VALUES (3, '王', '五', 'wangwu@example.com', DATE '2021-07-10', 5500.00, '技术部');
INSERT INTO employees VALUES (4, '赵', '六', 'zhaoliu@example.com', DATE '2018-11-05', 7000.00, '人事部');
INSERT INTO employees VALUES (5, '钱', '七', 'qianqi@example.com', DATE '2022-02-28', 4800.00, '销售部');
-- 向部门表插入测试数据(可选)
INSERT INTO departments VALUES (1, '技术部', 1);
INSERT INTO departments VALUES (2, '销售部', 2);
INSERT INTO departments VALUES (3, '人事部', 4);
-- 提交事务
COMMIT;
7. 验证数据插入
-- 查询员工表数据
SELECT * FROM employees;
-- 查询部门表数据
SELECT * FROM departments;
-- 统计各部门员工数量
SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department;
一键执行的完整脚本
如果您希望一次性执行所有步骤,可以使用以下完整脚本:
-- 使用DBA账户执行以下脚本
CONN / AS SYSDBA;
-- 创建用户
CREATE USER test_user IDENTIFIED BY test123
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON USERS;
-- 授予权限
GRANT CREATE SESSION, RESOURCE, UNLIMITED TABLESPACE TO test_user;
GRANT CREATE TABLE, CREATE VIEW TO test_user;
-- 切换到新用户
CONN test_user/test123;
-- 创建表
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
email VARCHAR2(100),
hire_date DATE,
salary NUMBER(10,2),
department VARCHAR2(50)
);
CREATE TABLE departments (
department_id NUMBER PRIMARY KEY,
department_name VARCHAR2(100),
manager_id NUMBER
);
-- 插入数据
INSERT INTO employees VALUES (1, '张', '三', 'zhangsan@example.com', DATE '2020-01-15', 5000.00, '技术部');
INSERT INTO employees VALUES (2, '李', '四', 'lisi@example.com', DATE '2019-03-20', 6000.00, '销售部');
INSERT INTO employees VALUES (3, '王', '五', 'wangwu@example.com', DATE '2021-07-10', 5500.00, '技术部');
INSERT INTO employees VALUES (4, '赵', '六', 'zhaoliu@example.com', DATE '2018-11-05', 7000.00, '人事部');
INSERT INTO employees VALUES (5, '钱', '七', 'qianqi@example.com', DATE '2022-02-28', 4800.00, '销售部');
INSERT INTO departments VALUES (1, '技术部', 1);
INSERT INTO departments VALUES (2, '销售部', 2);
INSERT INTO departments VALUES (3, '人事部', 4);
COMMIT;
-- 验证
SELECT '员工表数据:' as info FROM dual;
SELECT * FROM employees;
SELECT '部门表数据:' as info FROM dual;
SELECT * FROM departments;
SELECT '各部门员工统计:' as info FROM dual;
SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department;
创建序列用于自动生成ID(可选)
如果需要自动生成主键ID,可以创建序列:
-- 创建员工ID序列
CREATE SEQUENCE emp_seq
START WITH 100
INCREMENT BY 1
NOCACHE
NOCYCLE;
-- 创建部门ID序列
CREATE SEQUENCE dept_seq
START WITH 10
INCREMENT BY 1
NOCACHE
NOCYCLE;
-- 使用序列插入新数据
INSERT INTO employees VALUES (emp_seq.NEXTVAL, '孙', '八', 'sunba@example.com', SYSDATE, 5200.00, '技术部');
COMMIT;
重要说明
- 权限要求:执行用户创建需要DBA权限
- 表空间:确保指定的表空间存在且有足够空间
- 密码安全:生产环境中请使用更复杂的密码
- 权限控制:根据实际需要授予最小必要权限
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




