Oracle建用户的步骤(自己总结)

本文介绍如何在Oracle环境下通过Oracle Enterprise Manager Console创建普通用户的过程,包括创建表空间、设置默认表空间及临时表空间,并对相关注意事项进行了说明。


orcl92是DBA身份的进入ORACLE,要建立normal的用户的步骤如下:


1. 先建表空间:   第一步:在Oracle Enterprise Manager Console中

                       第二步:找到存储

                       第三步:找到表空间,创建表空间


           注意点:一般测试用的表空间,可以取名为test,我建了一个jay的

                      大小:测试用可先选个50MB,以后不够用时,可再增加


2.创建用户:找到Users


                  注意:1.Default tablespace:选上对应的表空间,如test,或jay等

                           2.Temporary tablespac:选temp, 做缓存用!

                           3.Role privileges中选择dba,打上勾?


3.其他注意点:Profile和Password expire, Account looked暂时先不用选

<think>嗯,用户想了解Oracle数据库中创带主键表的方法。根据提供的引用资料,我可以总结出几种不同的实现方式。引用内容挺详细的,涵盖了列级定义、表级约束、序列自增和触发器实现等多种方法。 用户应该是Oracle的初学者或者需要快速查阅语法,可能正在搭数据库结构。从问题表述看,ta更关注标准语法而非性能优化,所以我会优先展示基础写法。 注意到引用[1]、[4]都提到了两种基础创方式:列级约束直接跟在字段后(name_id number primary key),表级约束在最后单独声明(add constraint pk_name primary key)。这两种最常用,应该放在最前面说明。 引用[2][5]提到的自增主键是重点需求。Oracle没有内置自增列,需要通过序列+触发器实现。虽然引用[5]的触发器代码完整,但用户可能需要更清晰的步骤分解:先序列(create sequence...),再用before insert触发器赋值。考虑到自增主键很常见,需要详细说明。 引用[3]的示例表结构可以整合进范例。我会把字段简化成ID、NAME等通用名称,避免用户混淆。所有SQL示例必须包含分号保持可执行性。 用户没有指定Oracle版本,但触发器写法在11g和19c都通用。不过要提醒12c之后支持identity column更简单,虽然引用里没提,但值得补充作为延伸知识。 最后需要强调约束命名规范(pk_表名),这和索引性能有关。虽然用户没问,但专业使用应该包含这个议。 </think>在 Oracle 数据库中创带有主键的表主要有以下几种方法,结合引用内容详细说明如下: ### 一、列级约束(表时定义) 直接在字段定义后声明主键: ```sql CREATE TABLE student ( id NUMBER PRIMARY KEY, -- 主键定义在列级 name VARCHAR2(50) NOT NULL, create_date DATE ); ``` * **优点**:语法简洁 * **缺点**:系统自动生成约束名(如 `SYS_C0012345`),不易识别[^1][^4] ### 二、表级约束(表时定义) 在表定义末尾统一声明主键: ```sql CREATE TABLE employee ( emp_id NUMBER, emp_name VARCHAR2(100), CONSTRAINT pk_employee PRIMARY KEY (emp_id) -- 显式命名主键 ); ``` * **优点**:可自定义约束名(推荐 `pk_表名` 格式) * **优点**:支持复合主键(如 `PRIMARY KEY (col1, col2)`)[^1][^4] ### 三、表后添加主键 ```sql -- 先创普通表 CREATE TABLE department ( dept_id NUMBER, dept_name VARCHAR2(50) ); -- 后添加主键约束 ALTER TABLE department ADD CONSTRAINT pk_department PRIMARY KEY (dept_id); ``` * **适用场景**:表已存在需补充主键[^4] ### 四、自增主键实现(序列+触发器) Oracle 需通过序列和触发器实现自增: ```sql -- 1. 创序列 CREATE SEQUENCE student_seq START WITH 1 INCREMENT BY 1 NOCACHE; -- 2. 创表 CREATE TABLE student ( id NUMBER PRIMARY KEY, name VARCHAR2(50) ); -- 3. 创触发器 CREATE OR REPLACE TRIGGER student_trg BEFORE INSERT ON student FOR EACH ROW BEGIN IF :new.id IS NULL THEN SELECT student_seq.NEXTVAL INTO :new.id FROM DUAL; END IF; END; ``` * **说明**:插入时自动生成顺序ID(`INSERT INTO student(name) VALUES('张三')`)[^2][^5] ### 各方法对比 | 方法 | 复杂度 | 约束名控制 | 支持复合主键 | 自增能力 | |--------------------|--------|------------|--------------|----------| | 列级约束 | ★☆☆☆☆ | ❌ | ❌ | ❌ | | 表级约束 | ★★☆☆☆ | ✔️ | ✔️ | ❌ | | 表后添加 | ★★★☆☆ | ✔️ | ✔️ | ❌ | | 序列+触发器 | ★★★★☆ | ✔️ | ✔️ | ✔️ | > **提示**:Oracle 12c+ 支持 `GENERATED AS IDENTITY` 简化自增主键,语法更接近其他数据库[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值