十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
就是在表与表之间建立起链接就行了,这个链接就叫做
创新互联企业建站,十余年网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于成都网站制作、成都网站设计中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。
外键
—FC;列入:create
table
stu(stuid
int,sName
varchar2(20));
create
table
score(stid
int,cid
int);
alter
table
stu
add
constraint
pk_stuid
primary
key(stuid);
alter
table
score
add
constraint
fk_stuid
foreign
key(stid)
references
stu(stuid);
stuid这个属性就是foreign
key就是外键;他就是链接stu表和score表的桥梁。
select
*
from
dba_tables;
需要DBA权限,可以查看数据库全部表信息
select
*
from
user_tables;
查看当前用户下所有的表信息
select
*
from
all_tables;
查看当前用户和当前用户所能看到的用户的表。
create or replace procedure sp_crt_tbl_from_dic(p_src_tbl varchar2,
p_tgt_tbl_name varchar2,
p_prt_flg varchar2,
p_tx_date varchar2) is
v_col varchar2(500) := '';
v_col_data_type varchar2(100) := '';
v_sql varchar2(25000) := '';
v_col_list varchar2(20000) := ' ';
v_prt_sql varchar2(2000) := '';
v_grant_sql varchar2(2000) := '';
v_crt_syn_sql varchar2(2000) := '';
v_drop_tbl_sql varchar2(2000) := '';
i_tbl_cnt number(1, 0) := 0;
v_step_no varchar2(3) := '';
begin
--step 1
v_step_no := '1';
select count(1) into i_tbl_cnt from tabs where table_name = p_src_tbl;
if (i_tbl_cnt = 0) then
sp_log('sp_crt_tbl', v_step_no, '3', p_tx_date, p_src_tbl || '不存在');
return;
end if;
--step 2
v_step_no := '2';
select count(1)
into i_tbl_cnt
from tabs
where table_name = p_tgt_tbl_name;
if (i_tbl_cnt 0) then
v_drop_tbl_sql := 'drop table ' || p_tgt_tbl_name;
execute immediate v_drop_tbl_sql;
end if;
v_step_no := '1';
sp_log('sp_crt_tbl_from_dic',v_step_no,'1',p_tx_date,p_tgt_tbl_name || '建表开始');
v_sql := 'create table ' || p_tgt_tbl_name || '(';
v_col := '';
v_col_data_type := '';
v_col_list := '';
for cur_col_name in (
SELECT T.COLUMN_NAME col_name,
CASE WHEN T.DATA_TYPE IN ('VARCHAR2', 'CHAR') THEN T.DATA_TYPE || '(' || T.DATA_LENGTH || ')'
WHEN T.DATA_TYPE IN ('NUMBER') THEN T.DATA_TYPE || '(' || T.DATA_PRECISION || ',' || T.DATA_SCALE || ')'
WHEN T.DATA_TYPE IN ('DATE') THEN T.DATA_TYPE ELSE '' END col_data_type
FROM COLS T
where T.TABLE_NAME = p_src_tbl
order by to_number(T.COLUMN_ID)) loop
v_col := trim(cur_col_name.col_name);
v_col_data_type := trim(cur_col_name.col_data_type);
v_col_list := trim(v_col_list) || trim(v_col) || ' ' || trim(v_col_data_type) || ',';
end loop;
v_sql := trim(v_sql) || trim(v_col_list) || ')';
v_sql := replace(v_sql, ',)', ')');
if (p_prt_flg = '1') then
v_prt_sql := ' partition by range (part_id) (partition prt_1 values less than(2),partition prt_2 values less than(3),partition prt_3 values less than(4),partition prt_4 values less than(5))';
v_sql := v_sql || v_prt_sql;
end if;
execute immediate v_sql;
sp_log('sp_crt_tbl_from_dic',v_step_no,'2',p_tx_date,p_tgt_tbl_name || '建表开始结束');
v_step_no := '2';
sp_log('sp_crt_tbl_from_dic', v_step_no,'1',p_tx_date,p_tgt_tbl_name || '赋权限开始');
v_grant_sql := 'grant select,insert,update,delete on ' || p_tgt_tbl_name ||
' to iclientoopr,iclientomoia';
if (v_grant_sql is not null) then
execute immediate v_grant_sql;
end if;
--- 给OPERQRY赋权限
v_grant_sql := 'grant select on ' || p_tgt_tbl_name || ' to OPERQRY';
if (v_grant_sql is not null) then
execute immediate v_grant_sql;
end if;
sp_log('sp_crt_tbl_from_dic',v_step_no,'2',p_tx_date,p_tgt_tbl_name || '赋权限结束');
--创建日标同义词
--step 4
v_step_no := '3';
v_crt_syn_sql := 'create or replace public synonym ' || p_tgt_tbl_name ||
' for iclientodata.' || p_tgt_tbl_name;
if (v_crt_syn_sql is not null) then
execute immediate v_crt_syn_sql;
end if;
sp_log('v_crt_syn_sql',v_step_no,'2',p_tx_date,p_tgt_tbl_name || '创建结束');
exception
when others then
sp_log('sp_crt_tbl_from_dic',v_step_no,'3',p_tx_date,p_tgt_tbl_name || '创建异常:' || SQLERRM);
end;
每张表都是作为“段”来存储的,可以通过user_segments视图查看其相应信息。\x0d\x0a段(segments)的定义:如果创建一个堆组织表,则该表就是一个段。\x0d\x0asql:SELECT segment_name AS TABLENAME,BYTES FROM user_segments WHERE segment_name='表名'。\x0d\x0a解释:\x0d\x0asegment_name 就是要查询的表名(大写),BYTES 为表存储所占用的字节数。本sql的意思就是查询出表名和表所占的存储空间大小。
有时我们新建一个数据库时为了以后避免重复建设,可以把数据的表结构导出,下次建立同样的数据库时只需要导入就可以完成建设。以下介绍如何使用PLSQL导出oracle表结构:
双击桌面图标,打开PL/SQL Developer,输入用户名密码,登陆oracle数据库;
2
工具(tools)-export user objects是导出表结构;
3
在弹出的对话框中设置用户、导出对象、导出路径等参数;
4
单击导出(Export),开始导出;
5
导出结果如图: