一、创建临时表空间
create temporary tablespace tempspace_name
tempfile 'D:/oracle/product/11.2.0/oradata/test_temp01.dbf' ##设置表空间文件位置
size 32m ##表空间初始大小
autoextend on ##表空间自增长
next 32m maxsize unlimited ##表空间每次自增大小,上限不限制
二、创建数据表空间
create tablespace tablespace_name
datafile 'E:/oracle/product/10.2.0/oradata/testserver/test_data01.dbf' ##设置表空间文件位置
size 32m ##表空间初始大小
autoextend on ##表空间自增长
next 32m maxsize unlimited ;##表空间每次自增大小,上限不限制
三、创建用户
create user username identified by password
default tablespace tablespacename
temporary tablespace temptablespacename;
四、创建表
create table table_name
(
id varchar2(30) primary key ,
name char(200) not null ,
tel number(11) unique,
birth date(date),
foreign key (name)
)
tablespace tablespace_name ##指定表数据存放表空间
pctfree 10 ----保留10%空间给更新该块数据使用
initrans 1 -----初始化事物槽的个数
maxtrans 255 ----最大事务槽的个数
storage ----存储参数
(
initial 64K ---区段一次扩展64k
next 1M
minextents 1 ---最小区段数
maxextents unlimited --最大区段无限制
);
五、创建约束(constraints)
alter table table_name
add constraint constraint_name primary key (ID) ##id为指定主键约束列
using index ##同时创建索引
tablespace tablespace_name ##指定表空间名称
六、创建索引(index)
create index index_name on table_name(column_name );##指定列创建索引,同时多列,逗号隔开
七、创建视图(view)
create or replace view view_name as select * from table_name ;
八、创建序列(sequence)
create sequence sequence_name
minvalue 1 ##最小值
maxvalue 9999 ##最大值
start with 10 ##从10开始
increment by 1 ##每次自增1
cache 10 ##缓存10个值 数据库不正常down掉会丢失,但高并发的情况下尽量用cache ,也可nocache 不缓存
九、创建角色(role)
create role role_name; ##创建角色
grant create session to role_name;##赋予基本创建连接的权限,以及赋予其他权限
十、创建同义词(synonym)
在同一数据库不同用户的情况,B用户需要访问A用户的 表tableC;
grant select on tableC to B; ##在A用户赋权给B查询tableC的权限
create or replace synonym tableC for A.tableC ;##创建好同义词,在B用户就可以直接用A.tableC 做表名 查询 A用户的tableC数据了;/2
十一、创建数据库链接(link)
在不同数据库之间,可创建Link即数据库连接;
在A库用户中执行 create database link link_name connect to B identified by "password" using 'test= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = B_ip)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = B_severname) ) )';
select * from table_name @linke_name ##在A库中使用数据库连接查询B库中表数据;
十二、创建存储过程(procedures)
/***** ** 创建加、减、乘、除计算的存储过程 **输入参数: 数字1,数字2,计算类型 **输出参数: 数字3 *****/ create or replace procedure Proc_Test ( --定义输入、输出参数-- num_A in integer, num_B in integer, numType in integer, num_C out integer ) as --定义变量-- -- numCount integer; -- numStr varchar(20); begin --判断计算类型-- if numType=1 then num_C := num_A + num_B; elsif numType=2 then num_C := num_A - num_B; elsif numType=3 then num_C := num_A * num_B; elsif numType=4 then num_C := num_A / num_B; else --其它处理 dbms_output.put_line('其它处理'); end if; end;
调用方式:
declare num_C integer; beginf --调用存储过程--- Proc_Test(3,4,3,num_C); dbms_output.put_line('输出结果:'|| num_C ); end;
十三、创建函数(Function)
create or replace function function_name (参数名1 参数类型,参数名2 参数类型) return number is
Result number ;
begin
return (Result);
end;
调用方式:
select function_name(参数名1,参数名2) from dual;
十四、创建包(package)
用于组合逻辑相关的函数和存储过程
第一步、创建包规范
create package emp_pkg is
procedure emp_update_ename(v_empno varchar2,v_ename varchar2);
function emp_get_sal(v_empno varchar2) return number;
end;
第二步、创建包体
create or replace package body emp_pkg
is
procedure emp_update_ename ( v_empno varchar2, v_ename varchar2 ) is
vename varchar2(32);
begin
update emp set ename=v_ename where empno=v_empno; commit;
select ename into vename from emp where empno=v_empno;
dbms_output.put_line('雇员名称:'||vename);
end;
function emp_get_sal ( v_empno varchar2 )
return number is
vsal number(7,2);
begin
select sal into vsal from emp where empno=v_empno; return vsal;
end;
end;
---------------------------------------待补充完善----如有问题请不吝指正------------------------------------