oracle学习笔记(个人学习记录)

数据库导入导出命令

使用plSql的tools->export tables 导出.sql文件,tools->import tables选择sql、dmp等格式文件进行导入(.dmp是二进制文件,可跨平台,还包含权限。效率高;.sql文件通用性好,效率不如前者,适合小数据量导入,且不能有大字段(blob、clob、long);.pde是plsql自有的文件格式)

连接

以左外连接为例,有两种写法,一种同mysql,一种为+:

--   MySQL
select os.id , os.name , ac.year , ac.month,ac.money 
       from t_owners os left join t_account ac on os.id = ac.owneruuid;
--   Oracle
select os.id ,os.name , ac.year , ac.month , ac.money 
       from t_owners os , t_account ac where os.id = ac.owneruuid(+);

右外连接时为os.id(+) = ac.owneruuid。全外连接不能使用+。
两者效率上无区别,left join可读性更高,通常使用。

序列

序列号生成器,可为表自动生成一些列序号,类型为数字,产生一种等间隔的数据,不占用磁盘,占用内存

create sequence seq_userid 
increment by 1 //序列每次增加值,负数表示递减,默认为1
start with 1 //初始值,默认为1
maxvalue 99999  //最大值,默认为nomaxvalue
cycle //定义当序列达到最大/小值后是否循环,缺省值为不循环;nocycle:不循环;cycle:循环;如果不使用循环达到限制值后继续产生新值就会出错;使用循环达到最大值后的下一个值为1,和start with设置的值无关,递增还是increment by设置的值;
nocache; //cache定义缓存序列的个数,缺省值为20,nocache表示不设置缓存;使用缓存可以提高序列的性能,但数据库出错时会造成数据丢失使序列不连续;

你可能感兴趣的:(数据库)