1、建表:
create table 表名
(
字段名 类型(常用的有VARCHAR2、NUMBER、DATE)(长度) 是否能为空(必填:not null 非必填 这块就不写)
aaa VARCHAR2 (32) not null,
bbb NUMBER(2)
);
-- Add comments to the table
comment on table 表名 is '这个表是干啥的';
-- Add comments to the columns
comment on column 表名.aaa
is 'aaa是干啥的';
comment on column 表名.bbb
is 'bbb是干啥的';
2、创建dblink
- 方式一,在本地数据库tnsnames.ora文件中配置了要远程访问的数据库。
create public database link
link_name connect to scott identified by tiger using 'bylw';
其中link_name是你创建的dblink名字,bylw是远程数据库的实例名(查询实例名sql语句:select * from v$instance ,查出的数据中INSTANCE_NAME即实例名),scott/tiger是登录到远程数据库的用户/密码。然后在本地数据库中通过dblink访问远程数据库'bylw'中scott.tb_test表,sql语句如下所示
select * from scott.tb_test@to_bylw;
- 方法二 在本地数据库tnsnames.ora文件中没有配置要访问的远程数据库:
create database link link_name
connect to scott identified by tiger
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = bylw)
)
)';
第二种是把第一种配置在tnsnames.ora文件中的信息,直接放在创建dblink语句后面。第一种情况tnsnames.ora文件中信息如下:
bylw =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = bylw)
)
)
用dblink进行跨数据库迁移数据
前提目标数据库的目标表和源库的源表 ,表中字段数要一致,否则会报错。
具体实现语句:
insert into 目标库用户名(即登录数据库的用户名).目标表
select a.* from源库用户名(即登录数据库的用户名).源表@ link_name a;
3、更改表名、字段名
-- 首先方法是使用RENAME关键字:
-- 修改字段名:
alter table 表名 rename column 现列名 to 新列名;
-- 修改表名:
alter table 表名 rename to 新表名
-- 增加字段语法:
alter table tablename add (column datatype [default value][null/not null],….);
-- 说明:alter table 表名 add (字段名 字段类型 默认值 是否为空);
-- 例:
alter table sf_users add (HeadPIC blob);
-- 例:
alter table sf_users add (userName varchar2(30) default '空' not null);
-- 修改字段的语法:
alter table tablename modify (column datatype [default value][null/not null],….);
-- 说明:alter table 表名 modify (字段名 字段类型 默认值 是否为空);
-- 例:
alter table sf_InvoiceApply modify (BILLCODE number(4));
-- 删除字段的语法:
alter table tablename drop (column);
-- 说明:alter table 表名 drop column 字段名;
-- 例:
alter table sf_users drop column HeadPIC;
-- 字段的重命名:
-- 说明:alter table 表名 rename column 列名 to 新列名 (其中:column是关键字)
-- 例:
alter table sf_InvoiceApply rename column PIC to NEWPIC;
-- 表的重命名:
-- 说明:alter table 表名 rename to 新表名
-- 例:
alter table sf_InvoiceApply rename to sf_New_InvoiceApply;