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)。
如果无建立dblink权限,可以通过以下脚本语句进行赋权:
grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to username;
其中,username为登录本地数据库的用户名。
② 查询现有的dblink
通过输入脚本 :
select owner,object_namefromdba_objectswhereobject_type='DATABASE LINK';
即可查看本地数据库现有的dblink,如图2所示。
③ 建立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
坚持记录工作中的重难点问题,及时寻求解答。