1. 创建表空间
create tablespace name
datafile 'e:\oracle\project.dbf'
size 32M
autoextend on
next 5M maxsize 2048M
datafile为表空间路径,可以随便设置
name为需要填的名字
注:一个ORACLE数据库能够有一个或多个表空间
2. 创建用户
create user username identified by password default tablespace name;
name为刚刚创建的表空间名
username填自己需要的用户名
password填自己需要的密码,口令不能太简单
3. 分配权限
grant connect,resource,dba to username;
4. 创建表
CREATE TABLE TEST.STUDENT (
ID NUMBER(18) PRIMARY KEY not null,
NAME VARCHAR2(40)
)
TABLESPACE DATA01
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE
(
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
);
其中TEST是模式名STUDENT 是表名DATA01是表空间名称。
PCTFREE:用于指定BLOCK中必需保留的最小空间的比例。
INITRANS参数确定为事务处理项预分配多少数据块头部的空间。当您预计有许多并发事务处理要涉及某个块时,可为相关的事务处理项预分配更多的空间,以避免动态分配该空间的开销。
MAXTRANS参数限制并行使用某个数据块的事务处理的数量。当您预计有许多事务处理将并行访问某个小表时,则当创建表时,应设置该表的事务处理项预分配更多的块空间,较高的MAXTRANS 参数值允许许多事务处理并行访问该表
5. 创建序列
CREATE SEQUENCE SEQ_STUDENT
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;
6. 创建索引
create index IDX_STUDENT_ID on TEST.STUDENT (ID)
tablespace DATA01
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
7. 创建注释
comment on column TEST.STUDENT.ID is 'ID';
8. 增加字段
添加字段时在数据量大的情况下如果有默认值,可能需要另外的操作。
如ALTER TABLE student ADD sex number(1) default 0;
设置sex默认为0,如果数据量较大,比如有1千万条数据,当新增个字段时,如果设置默认值,那么ORACLE会先修改之前的一千万条数据的这个字段的默认值。显然修改一千万条记录是需要一些时间的,这段时间内不能对该表做修改或删除的操作。所以为了减少锁表时间可以这样来做:
ALTER TABLE STUDENT ADD sex NUMBER(1);
--避免大量更新时锁全表,所以默认值这样设置。
DECLARE
row_num NUMBER := 0;
BEGIN
FOR c_test IN (SELECT ROWID rid FROM STUDENT t ) LOOP
UPDATE STUDENT t SET t. sex = 0 WHERE ROWID = c_test.rid;
row_num := row_num + 1;
IF MOD(row_num,1000) =0 THEN
COMMIT;
END IF;
END LOOP;
COMMIT;
END;
Alter TABLE STUDENT MODIFY sex DEFAULT 0 ;
9. 修改字段(字段名,类型,约束)
字段名修改
alter table tablename rename column oldname to newname
字段类型修改
alter table tablename modify columnname datetype;
字段约束修改
alter table tablename add constraint 约束名 约束类型 (约束列);
一般的约束如下:
alter table '表名'
add
--主键
constraint PK_字段/*此为命名规范要求*/ primary key(字段),
--唯一约束
constraint UK_字段 unique key(字段),
--默认约束
constrint DF_字段 default('默认值') for/*到*/ 字段,
--检查约束
constraint CK_字段 check(约束。如:len(字段)>1),
--主外键关系
constraint FK_主表_从表 foreign(外键字段) references 主表(主表主键字段)
10. 删除字段
ALTER TABLE 表名 DROP COLUMN 列名