036-20180205-【数据库学习】建立dblink、del

2018-02-05  本文已影响0人  DearLynne

O

        今天一上班就开始处理8号前需完成的13个需求,原本以为导师给我讲解了具体内容和需求,上手会比较快,可是等真正实践的时候还是遇到各种各样的问题,其中有以下三个知识点让我纠结和困惑了半天,现在将其作简单的小结。

R

        一早上就完成了一个需求,内心是崩溃的,然后下午4点多开始导数据,由于数据量比较大而且又是远程连接数据库,导致下午5点49分才生成数据,等我打开一看,数据不对,好气啊,只能开着电脑让它重新导数据,明天早上再去“见证奇迹”了,希望明天一切顺利!!!

I

        今天在工作中使用的几个重点知识点如下:

        1.建立dblink

        dblink是数据库的链接,当我们要跨本地数据库,访问另外一个数据库中的数据时,本地数据库中就必须要创建远程数据库的dblink来访问数据。其具体实现方法如下:

        ① 判断用户是否具有建立dblink的权限

        首先在sql window中输入脚本:

        select * from user_sys_privs where privilege like upper('%DATABASE LINK%');

        即可看到其对应的dblink权限,如图1所示。dblink权限分为三种,分别是CREATE DATABASE LINK(所创建的dblink只有创建者所能使用) CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用) DROP PUBLIC DATABASE LINK(删除dblink)。

图1  查询 建立dblink的权限

        如果无建立dblink权限,可以通过以下脚本语句进行赋权:

         grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to username;  

        其中,username为登录本地数据库的用户名。

        ② 查询现有的dblink

        通过输入脚本 :

        select owner,object_namefromdba_objectswhereobject_type='DATABASE LINK';

        即可查看本地数据库现有的dblink,如图2所示。

图2 查询现有的 dblink

        ③ 建立dblink

        通过以下脚本可以为数据库建立dblink:

        create public database link dblinkname connect to username identified by password

        using '(DESCRIPTION =

        (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = database_ip)(PORT = 1521))

        )

        (CONNECT_DATA =

        (SERVICE_NAME =servicename)

        )

        )';

        其中,正确填写步骤③中加粗字体的字段即可建立dblink。

        2. delete、drop与truncate区别

        在操作数据库时,经常会遇到删除数据或表的操作,但是删除指令有delete、drop与truncate三种,其具有不同的使用方法及适用范围。其具体语法与区别如下:

        delete from 表名(后面不跟where语句也删除表中所有的数据)

        drop table 表名

        truncate table 表名

        ① delete/truncate只删除数据不删除表,索引的结构,drop 将删除表的结构及依赖的索引(index)/约束(constrain)/触发器(trigger),依赖于该表的 procedure/function 将保留,但是变为 invalid状态。

        ② delete属于DML,不使用commit时不生效,drop与truncate直接生效,不能回滚。

        ③ truncate会释放占用空间,而delete与drop不会。

        3.alter与update区别

        alter与update都能够修改表中的数据,但是其本质与用法也各不相同,其具体语法与区别如下:

        alter语法:

        alter table (表名) ADD (列名 数据类型);   

        alter table (表名) MODIFY (列名 数据类型);   

        alter table (表名) RENAME COLUMN (当前列名) TO (新列名);  

        alter table (表名) DROP COLUMN (列名);   

        alter table (当前表名) RENAME TO (新表名);

        update语法:

        update 表名称 set 列名称 = 新值 where 列名称 = 某值

        从功能上看,alter用于修改表结构,update用于修改表数据。从本质上看,alter是DDL,在修改表结构时,不需要Commit和Rollback,update是DML,在修改数据值时,需要Commit和Rollback,否则提交的结构无效。

D

        坚持记录工作中的重难点问题,及时寻求解答。

上一篇下一篇

猜你喜欢

热点阅读